summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY13
-rwxr-xr-xbin/prado-cli (renamed from framework/prado-cli)0
-rw-r--r--bin/prado-cli.bat (renamed from framework/prado-cli.bat)0
-rwxr-xr-xbin/prado-cli.php (renamed from framework/prado-cli.php)34
-rw-r--r--build.xml1019
-rwxr-xr-xbuildscripts/PhpDocumentor/LICENSE145
-rw-r--r--buildscripts/PhpDocumentor/new_phpdoc.php33
-rw-r--r--buildscripts/PhpDocumentor/pear-phpdoc41
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor.ini119
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Classes.inc1356
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converter.inc5460
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc1899
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini507
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl94
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl12
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl29
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl11
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl33
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl31
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl9
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl22
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/hhp.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.hhk.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/bg_left.pngbin991 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css130
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl126
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/packages.tpl3
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl34
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tocentry.tpl11
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial.tpl32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_toc.tpl29
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl51
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc1966
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/basicindex.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/blank.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/class.tpl541
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classleft.tpl11
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtags.tpl22
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtrees.tpl17
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/const.tpl19
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/define.tpl34
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/docblock.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/fileleft.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/filetags.tpl7
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/footer.tpl11
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/function.tpl54
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/global.tpl35
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/header.tpl110
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/include.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/index.tpl7
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/background.pngbin307 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/empty.pngbin206 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/logo.pngbin7724 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/style.css135
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/method.tpl176
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/packages.tpl3
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/page.tpl210
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/pkgelementindex.tpl15
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tags.tpl22
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tutorial.tpl32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tutorial_toc.tpl29
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tutorial_tree.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/var.tpl94
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/basicindex.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/blank.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/class.tpl231
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/classleft.tpl9
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/classtrees.tpl17
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/const.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/define.tpl32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/docblock.tpl15
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/elementindex.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/fileleft.tpl10
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/footer.tpl11
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/function.tpl48
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/global.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/header.tpl97
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/include.tpl9
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/index.tpl7
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/background.pngbin238 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/empty.pngbin206 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/style.css195
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/method.tpl145
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/packages.tpl3
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/page.tpl31
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/pkgelementindex.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/tutorial.tpl32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/tutorial_toc.tpl29
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/tutorial_tree.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/var.tpl60
-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
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/basicindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/blank.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/class.tpl173
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classleft.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classtrees.tpl17
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/const.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/define.tpl23
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/docblock.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/elementindex.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/fileleft.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/footer.tpl7
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/function.tpl39
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/global.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/header.tpl101
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/include.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/index.tpl7
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/layout.css81
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/layout.css81
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/print.css25
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/style.css236
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/method.tpl123
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/packages.tpl3
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/page.tpl31
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/pkgelementindex.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/style.css172
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial.tpl32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial_toc.tpl29
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial_tree.tpl5
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/var.tpl36
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc1914
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/class.tpl429
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/header.tpl95
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/left_frame.tpl197
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/I.pngbin148 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/L.pngbin153 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lminus.pngbin219 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lplus.pngbin224 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/T.pngbin152 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tminus.pngbin207 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tplus.pngbin222 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/blank.pngbin144 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/empty.pngbin90 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/minus.gifbin54 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/plus.gifbin56 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/lib/classTree.js454
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/stylesheet.css184
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/method.tpl149
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_tree.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/var.tpl90
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/basicindex.tpl57
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/class.tpl444
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/define.tpl25
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/global.tpl27
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/header.tpl95
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/include.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/left_frame.tpl250
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/banner.css32
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass.pngbin620 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass_logo.pngbin1232 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractMethod.pngbin696 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass.pngbin848 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass_logo.pngbin1615 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateMethod.pngbin874 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class.pngbin570 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class_logo.pngbin1600 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constant.pngbin752 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constructor.pngbin865 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Destructor.pngbin956 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Function.pngbin596 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Global.pngbin712 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/I.pngbin148 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Index.pngbin584 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface.pngbin1083 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface_logo.pngbin1600 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/L.pngbin153 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lminus.pngbin219 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lplus.pngbin224 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Method.pngbin661 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page.pngbin592 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page_logo.pngbin1369 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass.pngbin790 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass_logo.pngbin1836 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateMethod.pngbin918 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateVariable.pngbin772 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticMethod.pngbin661 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticVariable.pngbin688 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/T.pngbin152 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tminus.pngbin207 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tplus.pngbin222 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Variable.pngbin688 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/blank.pngbin144 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/class_folder.pngbin633 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/empty.pngbin90 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/file.pngbin462 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/folder.pngbin492 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/function_folder.pngbin605 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/minus.gifbin54 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button.pngbin657 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button_disabled.pngbin543 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package.pngbin668 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package_folder.pngbin564 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/plus.gifbin56 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button.pngbin644 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button_disabled.pngbin541 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/private_class_logo.pngbin1836 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial.pngbin431 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial_folder.pngbin572 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/up_button.pngbin668 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/lib/classTree.js454
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/stylesheet.css181
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/method.tpl151
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/page.tpl214
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_tree.tpl9
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/var.tpl94
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/class.tpl429
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/header.tpl99
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/left_frame.tpl198
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/bg_left.pngbin181 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/I.pngbin148 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/L.pngbin153 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lminus.pngbin219 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lplus.pngbin224 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/T.pngbin152 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tminus.pngbin207 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tplus.pngbin222 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/blank.pngbin144 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/empty.pngbin90 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/lib/classTree.js454
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/minus.gifbin54 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/plus.gifbin56 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/stylesheet.css196
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/method.tpl149
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_tree.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/var.tpl92
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/class.tpl429
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/header.tpl95
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/left_frame.tpl217
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/I.pngbin148 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/L.pngbin153 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lminus.pngbin219 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lplus.pngbin224 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/T.pngbin152 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tminus.pngbin207 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tplus.pngbin222 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/blank.pngbin144 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/empty.pngbin90 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/minus.gifbin54 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/plus.gifbin56 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/lib/classTree.js454
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/stylesheet.css184
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/method.tpl149
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_tree.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/var.tpl92
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/class.tpl429
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/header.tpl95
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/left_frame.tpl216
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/I.pngbin148 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/L.pngbin153 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lminus.pngbin219 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lplus.pngbin224 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/T.pngbin152 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tminus.pngbin207 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tplus.pngbin222 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/blank.pngbin144 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/empty.pngbin90 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/minus.gifbin54 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/plus.gifbin56 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/lib/classTree.js454
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/stylesheet.css184
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/method.tpl149
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_tree.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/var.tpl92
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl430
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl159
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css144
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl151
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl43
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl91
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/options.ini576
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/basicindex.tpl57
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/class.tpl437
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/define.tpl25
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/global.tpl27
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/header.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/include.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/left_frame.tpl159
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/banner.css33
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass.pngbin620 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass_logo.pngbin1232 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractMethod.pngbin696 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass.pngbin848 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass_logo.pngbin1615 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateMethod.pngbin874 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class.pngbin570 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class_logo.pngbin1600 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constant.pngbin752 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constructor.pngbin865 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Destructor.pngbin956 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Function.pngbin596 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Global.pngbin712 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/I.pngbin148 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Index.pngbin584 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface.pngbin1083 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface_logo.pngbin1600 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/L.pngbin153 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lminus.pngbin219 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lplus.pngbin224 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Method.pngbin661 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page.pngbin592 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page_logo.pngbin1369 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass.pngbin790 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass_logo.pngbin1836 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateMethod.pngbin918 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateVariable.pngbin772 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticMethod.pngbin661 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticVariable.pngbin688 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/T.pngbin152 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tminus.pngbin207 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tplus.pngbin222 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Variable.pngbin688 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/blank.pngbin144 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/class_folder.pngbin633 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/empty.pngbin90 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/file.pngbin462 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/folder.pngbin492 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/function_folder.pngbin605 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button.pngbin657 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button_disabled.pngbin543 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package.pngbin668 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package_folder.pngbin564 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button.pngbin644 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button_disabled.pngbin541 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/private_class_logo.pngbin1836 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial.pngbin431 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial_folder.pngbin572 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/up_button.pngbin668 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/stylesheet.css146
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/method.tpl151
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/page.tpl214
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_tree.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/var.tpl94
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/options.ini576
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/class.tpl429
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/header.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/left_frame.tpl159
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/bg_left.pngbin181 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/stylesheet.css154
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/method.tpl149
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial_tree.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/var.tpl92
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/class.tpl429
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/header.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/left_frame.tpl159
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/media/stylesheet.css141
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/method.tpl149
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial_tree.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/var.tpl92
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/options.ini507
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/basicindex.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/class.tpl95
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/const.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/docblock.tpl30
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/elementindex.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/function.tpl29
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/global.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/header.tpl97
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/left_frame.tpl166
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Class.gifbin1078 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constant.gifbin1041 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constants.gifbin1068 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constructor.gifbin1044 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Destructor.gifbin1043 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Disk.gifbin941 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderClosed.gifbin963 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderOpened.gifbin957 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Functions.gifbin1064 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/GhostClass.gifbin1071 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/I.pngbin148 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/L.pngbin153 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lminus.pngbin219 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lplus.pngbin224 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateDataMember.gifbin967 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateMethod.gifbin1062 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateProperty.gifbin1063 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedDataMember.gifbin1064 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedMethod.gifbin1080 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedProperty.gifbin1068 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicDataMember.gifbin954 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicMethod.gifbin1038 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicProperty.gifbin1053 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/T.pngbin152 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tminus.pngbin207 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tplus.pngbin222 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Types.gifbin1049 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Variable.gifbin1051 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Vars.gifbin1064 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/blank.pngbin144 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/classFolder.gifbin1069 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/error.gifbin122 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/file.pngbin462 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/foldericon.pngbin229 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/minus.gifbin64 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgError.gifbin997 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgFatalError.gifbin1040 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgHint.gifbin989 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgInformation.gifbin963 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgWarning.gifbin1043 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/openfoldericon.pngbin232 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/plus.gifbin67 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/spacer.gifbin55 -> 0 bytes
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/classTree.js454
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tab.webfx.css86
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tabpane.js308
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/ua.js111
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/stylesheet.css230
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/method.tpl126
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/page.tpl53
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/top_frame.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial.tpl32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial_toc.tpl29
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial_tree.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/var.tpl49
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/options.ini577
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/basicindex.tpl47
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/blank.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/class.tpl429
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/classtrees.tpl19
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/const.tpl18
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/define.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/docblock.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/elementindex.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/errors.tpl21
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/examplesource.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/filesource.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/footer.tpl8
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/function.tpl44
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/global.tpl26
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/header.tpl12
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/include.tpl16
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/index.tpl24
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/left_frame.tpl159
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/media/banner.css32
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/media/stylesheet.css142
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/method.tpl149
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/page.tpl211
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/pkgelementindex.tpl17
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/ric.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/todolist.tpl14
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/top_frame.tpl45
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial.tpl13
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial_nav.tpl41
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial_toc.tpl40
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial_tree.tpl6
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/var.tpl92
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc423
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/DocBlockTags.inc1396
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Errors.inc1172
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/EventStack.inc98
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/HighlightParser.inc2603
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/InlineTags.inc1044
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/IntermediateParser.inc1940
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Io.inc992
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/LinkClasses.inc361
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc513
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Parser.inc3252
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/ParserData.inc970
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc1488
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/ParserDocBlock.inc1227
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/ParserElements.inc2287
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc1067
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Publisher.inc110
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php978
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/BUGS7
-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.inc620
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/WordParser.inc365
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc644
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php53
-rw-r--r--buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php54
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/common.inc.php312
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/find_phpdoc.php49
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc2946
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTWordParser.inc386
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc66
-rw-r--r--buildscripts/PhpDocumentor/phpdoc53
-rw-r--r--buildscripts/PhpDocumentor/phpdoc.php32
-rw-r--r--buildscripts/PhpDocumentor/poweredbyphpdoc.gifbin1363 -> 0 bytes
-rw-r--r--buildscripts/PhpDocumentor/prado_patch_chm_builder_fix.patch13
-rw-r--r--buildscripts/PhpDocumentor/prado_patch_dot_in_package_name.patch31
-rw-r--r--buildscripts/PhpDocumentor/scripts/add_cvs.php153
-rw-r--r--buildscripts/PhpDocumentor/scripts/create_examples.php70
-rw-r--r--buildscripts/PhpDocumentor/scripts/create_package.xml.php168
-rw-r--r--buildscripts/PhpDocumentor/scripts/makedoc.sh94
-rw-r--r--buildscripts/PhpDocumentor/scripts/tokenizer_test.php59
-rw-r--r--buildscripts/PhpDocumentor/user/default.ini101
-rw-r--r--buildscripts/PhpDocumentor/user/demo.ini86
-rw-r--r--buildscripts/PhpDocumentor/user/error.ini84
-rwxr-xr-xbuildscripts/PhpDocumentor/user/makedocs.ini91
-rw-r--r--buildscripts/PhpDocumentor/user/pear-makedocs.ini94
-rw-r--r--buildscripts/PhpDocumentor/user/prado.ini79
-rw-r--r--buildscripts/PhpDocumentor/user/testdocbook.ini80
-rw-r--r--buildscripts/apigen/pradosoft/404.latte23
-rw-r--r--buildscripts/apigen/pradosoft/@elementlist.latte46
-rw-r--r--buildscripts/apigen/pradosoft/@layout.latte197
-rw-r--r--buildscripts/apigen/pradosoft/class.latte429
-rw-r--r--buildscripts/apigen/pradosoft/combined.js.latte21
-rw-r--r--buildscripts/apigen/pradosoft/config.neon56
-rw-r--r--buildscripts/apigen/pradosoft/constant.latte66
-rw-r--r--buildscripts/apigen/pradosoft/deprecated.latte120
-rw-r--r--buildscripts/apigen/pradosoft/elementlist.js.latte14
-rw-r--r--buildscripts/apigen/pradosoft/function.latte91
-rw-r--r--buildscripts/apigen/pradosoft/js/jquery.autocomplete.js799
-rw-r--r--buildscripts/apigen/pradosoft/js/jquery.cookie.js96
-rw-r--r--buildscripts/apigen/pradosoft/js/jquery.min.js4
-rw-r--r--buildscripts/apigen/pradosoft/js/jquery.sortElements.js69
-rw-r--r--buildscripts/apigen/pradosoft/js/jquery.sprintf.js8
-rw-r--r--buildscripts/apigen/pradosoft/js/main.js282
-rw-r--r--buildscripts/apigen/pradosoft/namespace.latte29
-rw-r--r--buildscripts/apigen/pradosoft/opensearch.xml.latte20
-rw-r--r--buildscripts/apigen/pradosoft/overview.latte56
-rw-r--r--buildscripts/apigen/pradosoft/package.latte29
-rw-r--r--buildscripts/apigen/pradosoft/resources/collapsed.pngbin0 -> 271 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/combined.js1219
-rw-r--r--buildscripts/apigen/pradosoft/resources/footer.pngbin0 -> 8232 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/inherit.pngbin0 -> 152 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/resize.pngbin0 -> 216 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/sort.pngbin0 -> 171 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/style.css611
-rw-r--r--buildscripts/apigen/pradosoft/resources/tree-cleaner.pngbin0 -> 126 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/tree-hasnext.pngbin0 -> 128 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/tree-last.pngbin0 -> 172 bytes
-rw-r--r--buildscripts/apigen/pradosoft/resources/tree-vertical.pngbin0 -> 127 bytes
-rw-r--r--buildscripts/apigen/pradosoft/robots.txt.latte13
-rw-r--r--buildscripts/apigen/pradosoft/sitemap.xml.latte35
-rw-r--r--buildscripts/apigen/pradosoft/source.latte18
-rw-r--r--buildscripts/apigen/pradosoft/todo.latte112
-rw-r--r--buildscripts/apigen/pradosoft/tree.latte72
-rw-r--r--buildscripts/chmbuilder/ChmQuickstartBuilder.php439
-rw-r--r--buildscripts/chmbuilder/build.php80
-rw-r--r--buildscripts/chmbuilder/build_child.php7
-rw-r--r--buildscripts/chmbuilder/chm_style.css653
-rw-r--r--buildscripts/chmbuilder/classes/application.xml12
-rw-r--r--buildscripts/chmbuilder/classes/pages/ClassDoc.page30
-rw-r--r--buildscripts/chmbuilder/classes/pages/ClassDoc.php228
-rw-r--r--buildscripts/chmbuilder/classes/pages/Classes.page9
-rw-r--r--buildscripts/chmbuilder/classes/pages/Classes.php19
-rw-r--r--buildscripts/chmbuilder/classes/pages/MainLayout.php8
-rw-r--r--buildscripts/chmbuilder/classes/pages/MainLayout.tpl33
-rw-r--r--buildscripts/chmbuilder/classes/pages/style.css647
-rw-r--r--buildscripts/chmbuilder/index.php7
-rw-r--r--buildscripts/classtree/build.php2
-rw-r--r--buildscripts/index/api_index.php42
-rw-r--r--buildscripts/jGrouseDoc/3rdparty/ant/LICENSE203
-rw-r--r--buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.dom71
-rw-r--r--buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.sax20
-rw-r--r--buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.xerces56
-rw-r--r--buildscripts/jGrouseDoc/3rdparty/ant/NOTICE20
-rw-r--r--buildscripts/jGrouseDoc/3rdparty/velocity/LICENSE202
-rw-r--r--buildscripts/jGrouseDoc/3rdparty/velocity/NOTICE7
-rw-r--r--buildscripts/jGrouseDoc/README-prado.txt6
-rw-r--r--buildscripts/jGrouseDoc/build.xml178
-rw-r--r--buildscripts/jGrouseDoc/jgdoc.jarbin81333 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/jgrousedoc.properties17
-rw-r--r--buildscripts/jGrouseDoc/license.txt21
-rw-r--r--buildscripts/jGrouseDoc/skins/common/css/jgdoc.css301
-rw-r--r--buildscripts/jGrouseDoc/skins/common/css/jgindex.css53
-rw-r--r--buildscripts/jGrouseDoc/skins/common/img/closed.gifbin104 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/skins/common/img/closedLarge.gifbin132 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/skins/common/img/node.gifbin106 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/skins/common/img/open.gifbin101 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/skins/common/img/openLarge.gifbin128 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/skins/common/js/jgdoc.js239
-rw-r--r--buildscripts/jGrouseDoc/skins/common/js/jgindex.js96
-rw-r--r--buildscripts/jGrouseDoc/skins/common/js/navTree.js213
-rw-r--r--buildscripts/jGrouseDoc/skins/common/vm/common.vm604
-rw-r--r--buildscripts/jGrouseDoc/skins/common/xslt/common.xslt704
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/css/jgdoc.css473
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/img/logo.gifbin3326 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js326
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/js/navTree.js409
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/vm/antgen.vm77
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/vm/detail.vm94
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/vm/jsindex.vm57
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/vm/test.vm1
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/xslt/antgen.xslt357
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/xslt/detail.xslt360
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/xslt/jgsearch.xslt51
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/xslt/jsindex.xslt124
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/xslt/nfcommon.xslt98
-rw-r--r--buildscripts/jGrouseDoc/skins/noframes/xslt/startup.xslt99
-rw-r--r--buildscripts/jGrouseDoc/themes/prado/build.xml11
-rw-r--r--buildscripts/jGrouseDoc/themes/prado/css/theme.css99
-rw-r--r--buildscripts/jGrouseDoc/themes/sample/build.xml14
-rw-r--r--buildscripts/jGrouseDoc/themes/sample/css/theme.css122
-rw-r--r--buildscripts/jGrouseDoc/themes/sample/img/closed.gifbin199 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/themes/sample/img/closedLarge.gifbin161 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/themes/sample/img/node.gifbin282 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/themes/sample/img/open.gifbin144 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/themes/sample/img/openLarge.gifbin158 -> 0 bytes
-rw-r--r--buildscripts/jGrouseDoc/themes/simple/build.xml11
-rw-r--r--buildscripts/jGrouseDoc/themes/simple/css/theme.css1
-rw-r--r--buildscripts/jGrouseDoc/velocity-dep-1.5.jarbin698567 -> 0 bytes
-rw-r--r--buildscripts/phing/CHANGELOG.md789
-rw-r--r--buildscripts/phing/CREDITS.md51
-rw-r--r--buildscripts/phing/LICENSE165
-rw-r--r--buildscripts/phing/README.md64
-rwxr-xr-xbuildscripts/phing/bin/phing87
-rw-r--r--buildscripts/phing/bin/phing.bat58
-rwxr-xr-xbuildscripts/phing/bin/phing.php56
-rwxr-xr-xbuildscripts/phing/classes/phing/BuildEvent.php198
-rwxr-xr-xbuildscripts/phing/classes/phing/BuildException.php124
-rwxr-xr-xbuildscripts/phing/classes/phing/BuildListener.php91
-rwxr-xr-xbuildscripts/phing/classes/phing/BuildLogger.php70
-rwxr-xr-xbuildscripts/phing/classes/phing/ConfigurationException.php85
-rwxr-xr-xbuildscripts/phing/classes/phing/IntrospectionHelper.php575
-rwxr-xr-xbuildscripts/phing/classes/phing/Phing.php1414
-rwxr-xr-xbuildscripts/phing/classes/phing/Project.php1050
-rwxr-xr-xbuildscripts/phing/classes/phing/ProjectComponent.php70
-rwxr-xr-xbuildscripts/phing/classes/phing/RuntimeConfigurable.php116
-rwxr-xr-xbuildscripts/phing/classes/phing/Target.php375
-rwxr-xr-xbuildscripts/phing/classes/phing/Task.php272
-rwxr-xr-xbuildscripts/phing/classes/phing/TaskAdapter.php85
-rwxr-xr-xbuildscripts/phing/classes/phing/TaskContainer.php44
-rwxr-xr-xbuildscripts/phing/classes/phing/UnknownElement.php215
-rw-r--r--buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Manager.php304
-rw-r--r--buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/README.md106
-rw-r--r--buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Worker.php203
-rw-r--r--buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/WorkerPipe.php127
-rw-r--r--buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/example.php57
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/BaseFilterReader.php157
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/BaseParamFilterReader.php69
-rw-r--r--buildscripts/phing/classes/phing/filters/ChainableReader.php43
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/ExpandProperties.php99
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/HeadFilter.php161
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/IconvFilter.php155
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/LineContains.php260
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/LineContainsRegexp.php179
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/PrefixLines.php142
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/ReplaceRegexp.php129
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/ReplaceTokens.php435
-rw-r--r--buildscripts/phing/classes/phing/filters/ReplaceTokensWithFile.php361
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/StripLineBreaks.php148
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/StripLineComments.php207
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/StripPhpComments.php188
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/StripWhitespace.php95
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/TabToSpaces.php144
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/TailFilter.php157
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/TidyFilter.php162
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/TranslateGettext.php285
-rw-r--r--buildscripts/phing/classes/phing/filters/XincludeFilter.php176
-rw-r--r--buildscripts/phing/classes/phing/filters/XsltFilter.php408
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/util/ChainReaderHelper.php183
-rwxr-xr-xbuildscripts/phing/classes/phing/filters/util/IniFileTokenReader.php97
-rwxr-xr-xbuildscripts/phing/classes/phing/input/DefaultInputHandler.php85
-rwxr-xr-xbuildscripts/phing/classes/phing/input/InputHandler.php45
-rwxr-xr-xbuildscripts/phing/classes/phing/input/InputRequest.php107
-rwxr-xr-xbuildscripts/phing/classes/phing/input/MultipleChoiceInputRequest.php58
-rwxr-xr-xbuildscripts/phing/classes/phing/input/YesNoInputRequest.php47
-rwxr-xr-xbuildscripts/phing/classes/phing/lib/Capsule.php267
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/AnsiColorLogger.php234
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/DefaultLogger.php279
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/HtmlColorLogger.php175
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/MailLogger.php105
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/NoBannerLogger.php59
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/PearLogListener.php197
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/StreamRequiredBuildLogger.php39
-rwxr-xr-xbuildscripts/phing/classes/phing/listener/XmlLogger.php354
-rw-r--r--buildscripts/phing/classes/phing/listener/defaults.properties43
-rwxr-xr-xbuildscripts/phing/classes/phing/mappers/FileNameMapper.php59
-rwxr-xr-xbuildscripts/phing/classes/phing/mappers/FlattenMapper.php55
-rwxr-xr-xbuildscripts/phing/classes/phing/mappers/GlobMapper.php113
-rwxr-xr-xbuildscripts/phing/classes/phing/mappers/IdentityMapper.php54
-rwxr-xr-xbuildscripts/phing/classes/phing/mappers/MergeMapper.php69
-rwxr-xr-xbuildscripts/phing/classes/phing/mappers/RegexpMapper.php97
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/AbstractHandler.php98
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/AbstractSAXParser.php116
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/DataTypeHandler.php144
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/ExpatParseException.php31
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/ExpatParser.php140
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/Location.php76
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/NestedElementHandler.php186
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/PhingXMLContext.php81
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/ProjectConfigurator.php387
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/ProjectHandler.php176
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/RootHandler.php82
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/TargetHandler.php196
-rwxr-xr-xbuildscripts/phing/classes/phing/parser/TaskHandler.php234
-rwxr-xr-xbuildscripts/phing/classes/phing/system/io/BufferedReader.php168
-rwxr-xr-xbuildscripts/phing/classes/phing/system/io/BufferedWriter.php71
-rwxr-xr-xbuildscripts/phing/classes/phing/system/io/ConsoleReader.php84
-rw-r--r--buildscripts/phing/classes/phing/system/io/FileInputStream.php79
-rw-r--r--buildscripts/phing/classes/phing/system/io/FileOutputStream.php71
-rw-r--r--buildscripts/phing/classes/phing/system/io/FileReader.php41
-rwxr-xr-xbuildscripts/phing/classes/phing/system/io/FileSystem.php840
-rw-r--r--buildscripts/phing/classes/phing/system/io/FileWriter.php42
-rw-r--r--buildscripts/phing/classes/phing/system/io/FilterReader.php68
-rw-r--r--buildscripts/phing/classes/phing/system/io/IOException.php27
-rw-r--r--buildscripts/phing/classes/phing/system/io/InputStream.php178
-rw-r--r--buildscripts/phing/classes/phing/system/io/InputStreamReader.php127
-rw-r--r--buildscripts/phing/classes/phing/system/io/OutputStream.php108
-rw-r--r--buildscripts/phing/classes/phing/system/io/OutputStreamWriter.php84
-rwxr-xr-xbuildscripts/phing/classes/phing/system/io/PhingFile.php996
-rwxr-xr-xbuildscripts/phing/classes/phing/system/io/Reader.php91
-rw-r--r--buildscripts/phing/classes/phing/system/io/StringReader.php84
-rwxr-xr-xbuildscripts/phing/classes/phing/system/io/UnixFileSystem.php302
-rw-r--r--buildscripts/phing/classes/phing/system/io/Win32FileSystem.php477
-rw-r--r--buildscripts/phing/classes/phing/system/io/WinNTFileSystem.php34
-rw-r--r--buildscripts/phing/classes/phing/system/io/Writer.php53
-rw-r--r--buildscripts/phing/classes/phing/system/lang/Character.php49
-rw-r--r--buildscripts/phing/classes/phing/system/lang/EventObject.php52
-rw-r--r--buildscripts/phing/classes/phing/system/lang/FileNotFoundException.php26
-rw-r--r--buildscripts/phing/classes/phing/system/lang/NullPointerException.php26
-rw-r--r--buildscripts/phing/classes/phing/system/lang/SecurityException.php26
-rwxr-xr-xbuildscripts/phing/classes/phing/system/util/Properties.php314
-rwxr-xr-xbuildscripts/phing/classes/phing/system/util/Register.php149
-rwxr-xr-xbuildscripts/phing/classes/phing/system/util/Timer.php96
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/defaults.properties145
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/CapsuleTask.php480
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/ExportPropertiesTask.php141
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/ExtractBaseTask.php199
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/FileHashTask.php147
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/FileSizeTask.php120
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/FtpDeployTask.php233
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/HttpGetTask.php170
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/HttpRequestTask.php286
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/JslLintTask.php284
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/MailTask.php159
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/ManifestTask.php343
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/PackageAsPathTask.php65
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/ParallelTask.php83
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/PatchTask.php301
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/PearPackage2Task.php279
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php504
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/PhpCodeSnifferTask.php648
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/PhpLintTask.php278
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/ReplaceRegexpTask.php204
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/ScpTask.php380
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/Service/Amazon.php120
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3.php188
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3GetTask.php108
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3PutTask.php243
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/SmartyTask.php610
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/SshTask.php224
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/Arg.php96
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/SymfonyConsoleTask.php113
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/SymlinkTask.php309
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/TarTask.php445
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/UntarTask.php89
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/UnzipTask.php77
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/VersionTask.php217
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/XmlLintTask.php179
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/XmlPropertyTask.php273
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/ZendCodeAnalyzerTask.php207
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/ZipTask.php301
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/apigen/ApiGenTask.php439
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMerger.php154
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMergerTask.php92
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTask.php564
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTransformer.php176
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/coverage/CoverageSetupTask.php164
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageThresholdTask.php458
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/creole/CreoleSQLExecTask.php592
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/creole/CreoleTask.php242
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbDeployTask.php436
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntax.php34
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php67
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php37
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php37
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxOracle.php37
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxPgSQL.php36
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php37
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/docblox/DocBloxTask.php221
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitBaseTask.php134
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitBranchTask.php296
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitCheckoutTask.php256
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitCloneTask.php128
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitCommitTask.php179
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitFetchTask.php284
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitGcTask.php158
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitInitTask.php81
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitLogTask.php270
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitMergeTask.php258
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitPullTask.php373
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitPushTask.php255
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/git/GitTagTask.php406
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeComment.php43
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeEncoderTask.php642
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeLicenseTask.php208
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMin.php292
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMinTask.php145
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/liquibase/AbstractLiquibaseTask.php184
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseChangeLogTask.php39
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDbDocTask.php86
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDiffTask.php137
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseRollbackTask.php72
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseTagTask.php75
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseUpdateTask.php39
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependAnalyzerElement.php109
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependLoggerElement.php105
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependTask.php506
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/pdo/DefaultPDOQuerySplitter.php151
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/pdo/PDOQuerySplitter.php63
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/pdo/PDOResultFormatter.php84
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php313
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecTask.php606
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/pdo/PDOTask.php215
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/pdo/PgsqlPDOQuerySplitter.php291
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/pdo/PlainPDOResultFormatter.php130
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/pdo/XMLPDOResultFormatter.php141
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/pearpackage/Fileset.php228
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadata.php55
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadataElement.php80
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phar/PharPackageTask.php362
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageTask.php248
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccess.php57
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccessPath.php46
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDFormatterElement.php177
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDTask.php312
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/DefaultPHPCPDResultFormatter.php58
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PHPCPDResultFormatter.php40
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PMDPHPCPDResultFormatter.php51
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorErrorTracker.php98
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php230
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentor2Task.php224
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php265
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorTask.php480
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDFormatterElement.php181
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDTask.php284
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/BatchTest.php230
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/FormatterElement.php178
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitReportTask.php248
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTask.php378
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTestRunner.php312
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitUtil.php141
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/CloverPHPUnitResultFormatter.php87
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php203
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PlainPHPUnitResultFormatter.php128
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/SummaryPHPUnitResultFormatter.php62
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/XMLPHPUnitResultFormatter.php120
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/rSTTask.php476
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php51
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestDebugResultFormatter.php119
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php68
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php95
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php161
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php53
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestTask.php264
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestXmlResultFormatter.php178
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/svn/SvnBaseTask.php347
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/svn/SvnCheckoutTask.php67
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/svn/SvnCommitTask.php113
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/svn/SvnCopyTask.php70
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/svn/SvnExportTask.php70
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/svn/SvnInfoTask.php112
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/svn/SvnLastRevisionTask.php120
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/svn/SvnListTask.php128
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/ext/svn/SvnLogTask.php108
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/svn/SvnSwitchTask.php73
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/svn/SvnUpdateTask.php67
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardEncodeTask.php510
-rw-r--r--buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardLicenseTask.php524
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/AdhocTask.php88
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/AdhocTaskdefTask.php103
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/AdhocTypedefTask.php71
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/AppendTask.php240
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/AvailableTask.php172
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ChmodTask.php203
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ChownTask.php216
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ConditionTask.php74
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/CopyTask.php480
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/CvsPassTask.php173
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/CvsTask.php540
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/DeleteTask.php276
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/EchoTask.php152
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ExecTask.php516
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/FailTask.php118
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ForeachTask.php320
-rw-r--r--buildscripts/phing/classes/phing/tasks/system/IfTask.php227
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ImportTask.php136
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/IncludePathTask.php115
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/InputTask.php150
-rw-r--r--buildscripts/phing/classes/phing/tasks/system/LoadFileTask.php119
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/MatchingTask.php361
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/MkdirTask.php79
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/MoveTask.php202
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/PhingCallTask.php161
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/PhingTask.php627
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/PhpEvalTask.php192
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/PropertyPromptTask.php234
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/PropertyTask.php438
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ReflexiveTask.php155
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/ResolvePathTask.php159
-rw-r--r--buildscripts/phing/classes/phing/tasks/system/SequentialTask.php58
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/TaskdefTask.php165
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/TouchTask.php170
-rw-r--r--buildscripts/phing/classes/phing/tasks/system/TryCatchTask.php123
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/TstampTask.php171
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/TypedefTask.php127
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/UpToDateTask.php257
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/WaitForTask.php188
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/WarnTask.php35
-rw-r--r--buildscripts/phing/classes/phing/tasks/system/XsltTask.php103
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/AndCondition.php46
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/Condition.php38
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/ConditionBase.php197
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/ContainsCondition.php76
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/EqualsCondition.php78
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/IsFalseCondition.php60
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/IsSetCondition.php53
-rw-r--r--buildscripts/phing/classes/phing/tasks/system/condition/IsTrueCondition.php59
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/NotCondition.php48
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/OrCondition.php46
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/OsCondition.php63
-rwxr-xr-xbuildscripts/phing/classes/phing/tasks/system/condition/ReferenceExistsCondition.php52
-rwxr-xr-xbuildscripts/phing/classes/phing/types/AbstractFileSet.php587
-rwxr-xr-xbuildscripts/phing/classes/phing/types/Commandline.php475
-rw-r--r--buildscripts/phing/classes/phing/types/DataType.php182
-rw-r--r--buildscripts/phing/classes/phing/types/Description.php53
-rw-r--r--buildscripts/phing/classes/phing/types/DirSet.php49
-rw-r--r--buildscripts/phing/classes/phing/types/Excludes.php208
-rw-r--r--buildscripts/phing/classes/phing/types/ExcludesNameEntry.php81
-rwxr-xr-xbuildscripts/phing/classes/phing/types/FileList.php224
-rw-r--r--buildscripts/phing/classes/phing/types/FileSet.php56
-rwxr-xr-xbuildscripts/phing/classes/phing/types/FilterChain.php191
-rw-r--r--buildscripts/phing/classes/phing/types/IterableFileSet.php56
-rw-r--r--buildscripts/phing/classes/phing/types/Mapper.php207
-rw-r--r--buildscripts/phing/classes/phing/types/Parameter.php99
-rw-r--r--buildscripts/phing/classes/phing/types/Parameterizable.php32
-rw-r--r--buildscripts/phing/classes/phing/types/Path.php452
-rwxr-xr-xbuildscripts/phing/classes/phing/types/PatternSet.php493
-rw-r--r--buildscripts/phing/classes/phing/types/PearPackageFileSet.php179
-rwxr-xr-xbuildscripts/phing/classes/phing/types/PhingFilterReader.php136
-rw-r--r--buildscripts/phing/classes/phing/types/Reference.php56
-rwxr-xr-xbuildscripts/phing/classes/phing/types/RegularExpression.php128
-rwxr-xr-xbuildscripts/phing/classes/phing/types/TokenReader.php66
-rw-r--r--buildscripts/phing/classes/phing/types/TokenSource.php157
-rw-r--r--buildscripts/phing/classes/phing/types/defaults.properties13
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/AndSelector.php67
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php62
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/BaseSelector.php84
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php270
-rwxr-xr-xbuildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php164
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php151
-rwxr-xr-xbuildscripts/phing/classes/phing/types/selectors/DateSelector.php214
-rwxr-xr-xbuildscripts/phing/classes/phing/types/selectors/DependSelector.php151
-rwxr-xr-xbuildscripts/phing/classes/phing/types/selectors/DepthSelector.php158
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php43
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php124
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/FileSelector.php47
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php157
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php92
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/NoneSelector.php71
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/NotSelector.php59
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/OrSelector.php72
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/PresentSelector.php154
-rwxr-xr-xbuildscripts/phing/classes/phing/types/selectors/SelectSelector.php124
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php141
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php55
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php200
-rw-r--r--buildscripts/phing/classes/phing/types/selectors/SizeSelector.php228
-rwxr-xr-xbuildscripts/phing/classes/phing/types/selectors/TypeSelector.php120
-rwxr-xr-xbuildscripts/phing/classes/phing/util/DataStore.php151
-rwxr-xr-xbuildscripts/phing/classes/phing/util/DirectoryScanner.php755
-rwxr-xr-xbuildscripts/phing/classes/phing/util/ExtendedFileStream.php129
-rwxr-xr-xbuildscripts/phing/classes/phing/util/FileUtils.php298
-rwxr-xr-xbuildscripts/phing/classes/phing/util/LogWriter.php95
-rw-r--r--buildscripts/phing/classes/phing/util/PathTokenizer.php245
-rw-r--r--buildscripts/phing/classes/phing/util/PearPackageScanner.php170
-rw-r--r--buildscripts/phing/classes/phing/util/SourceFileScanner.php159
-rw-r--r--buildscripts/phing/classes/phing/util/StringHelper.php208
-rw-r--r--buildscripts/phing/classes/phing/util/regexp/PregEngine.php167
-rwxr-xr-xbuildscripts/phing/classes/phing/util/regexp/Regexp.php203
-rwxr-xr-xbuildscripts/phing/classes/phing/util/regexp/RegexpEngine.php73
-rw-r--r--buildscripts/phing/composer.json23
-rw-r--r--buildscripts/phing/etc/VERSION.TXT1
-rwxr-xr-xbuildscripts/phing/etc/coverage-frames.xsl1067
-rwxr-xr-xbuildscripts/phing/etc/log.xsl216
-rw-r--r--buildscripts/phing/etc/phing-grammar.rng5015
-rwxr-xr-xbuildscripts/phing/etc/phpunit-frames.xsl694
-rwxr-xr-xbuildscripts/phing/etc/phpunit-noframes.xsl448
-rwxr-xr-xbuildscripts/phing/etc/str.replace.function.xsl105
-rw-r--r--buildscripts/phing/tasks/BuildPradoPEARPackageTask.php205
-rw-r--r--buildscripts/phing/tasks/ManualIndexTask.php2
-rw-r--r--buildscripts/phing/tasks/PradoDocTask.php17
-rw-r--r--buildscripts/phing/tasks/PradoPackageTask.php142
-rw-r--r--buildscripts/phing/tasks/PradoQuickStartDocs.php85
-rw-r--r--buildscripts/phing/tasks/PradoSimpleTestTask.php40
-rw-r--r--buildscripts/phing/tasks/PradoTestTask.php13
-rw-r--r--buildscripts/phing/tasks/PradoVersionTask.php2
-rw-r--r--buildscripts/phing/tasks/QuickstartIndexTask.php2
-rw-r--r--buildscripts/texbuilder/Page2Tex.php8
-rw-r--r--buildscripts/wikibuilder/DumpSkin.php93
-rw-r--r--buildscripts/wikibuilder/build.php18
-rw-r--r--buildscripts/wikibuilder/dumpHTML.inc390
-rw-r--r--buildscripts/wikibuilder/dumpHTML.php102
-rw-r--r--buildscripts/wikibuilder/external.pngbin165 -> 0 bytes
-rw-r--r--buildscripts/wikibuilder/main.css501
-rw-r--r--composer.json91
-rw-r--r--demos/quickstart/protected/controls/DocLink.php4
-rw-r--r--demos/quickstart/protected/pages/Controls/HtmlArea4.page28
-rw-r--r--demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page4
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page43
-rwxr-xr-xdemos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.php20
-rw-r--r--demos/quickstart/protected/pages/Controls/Standard.page4
-rw-r--r--demos/quickstart/protected/pages/Database/DAO.page9
-rw-r--r--demos/quickstart/protected/pages/GettingStarted/NewFeatures.page5
-rw-r--r--demos/quickstart/protected/pages/Services/SoapService.page22
-rw-r--r--editors/Textmate/Prado.tmbundle/Snippets/TRepeater.tmSnippet2
-rw-r--r--framework/3rdParty/SafeHtml/TSafeHtmlParser.php30
-rw-r--r--framework/3rdParty/WsdlGen/Wsdl.php11
-rw-r--r--framework/3rdParty/WsdlGen/WsdlGenerator.php32
-rw-r--r--framework/Caching/TAPCCache.php10
-rw-r--r--framework/Caching/TEACache.php1
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php2
-rw-r--r--framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php2
-rw-r--r--framework/PradoBase.php6
-rw-r--r--framework/TApplication.php13
-rw-r--r--framework/Web/Javascripts/packages.php7
-rw-r--r--framework/Web/Javascripts/source/prado/controls/htmlarea.js4
-rw-r--r--framework/Web/Javascripts/source/prado/controls/htmlarea4.js58
-rw-r--r--framework/Web/Javascripts/source/prado/datepicker/datepicker.js5
-rw-r--r--framework/Web/Javascripts/source/prado/scriptaculous-adapter.js2
-rw-r--r--framework/Web/Javascripts/source/prado/validator/validation3.js2
-rw-r--r--framework/Web/Javascripts/source/prototype-1.7/prototype.js7
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/changelog.txt213
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ar.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/bg_BG.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/bs.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ca.js118
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/cs.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/cy.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/da.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/de.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/de_AT.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/el.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/es.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/et.js173
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/eu.js174
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/fa.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/fi.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/fo.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/fr_FR.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/gl.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/he_IL.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/hr.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/hu_HU.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/id.js71
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/it.js174
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ja.js174
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ka_GE.js172
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ko_KR.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/lb.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/lt.js76
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/lv.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/nb_NO.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/nl.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/pl.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/pt_BR.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/pt_PT.js173
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ro.js174
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ru.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/si_LK.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/sk.js174
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/sl_SI.js152
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/sr.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/sv_SE.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ta.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ta_IN.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/th_TH.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/tr_TR.js174
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/ug.js156
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/uk.js159
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/uk_UA.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/vi.js96
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/vi_VN.js173
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/zh_CN.js173
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/langs/zh_TW.js175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/license.txt504
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/advlist/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/anchor/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/autolink/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/autoresize/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/autosave/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/bbcode/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/charmap/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/code/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/compat3x/editable_selects.js70
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/compat3x/form_utils.js210
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/compat3x/mctabs.js162
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/compat3x/tiny_mce_popup.js435
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/compat3x/validate.js252
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/contextmenu/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/directionality/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cool.gifbin0 -> 354 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cry.gifbin0 -> 329 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-embarassed.gifbin0 -> 331 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-foot-in-mouth.gifbin0 -> 342 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-frown.gifbin0 -> 340 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-innocent.gifbin0 -> 336 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-kiss.gifbin0 -> 338 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-laughing.gifbin0 -> 343 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-money-mouth.gifbin0 -> 321 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-sealed.gifbin0 -> 323 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-smile.gifbin0 -> 344 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-surprised.gifbin0 -> 338 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-tongue-out.gifbin0 -> 328 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-undecided.gifbin0 -> 337 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-wink.gifbin0 -> 350 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-yell.gifbin0 -> 336 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/emoticons/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/example/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/example_dependency/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/fullpage/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/fullscreen/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/hr/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/image/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/importcss/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/insertdatetime/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/layer/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/legacyoutput/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/link/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/lists/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/media/moxieplayer.swfbin0 -> 20017 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/media/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/nonbreaking/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/noneditable/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/pagebreak/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/paste/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/preview/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/print/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/save/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/searchreplace/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/spellchecker/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/tabfocus/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/table/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/template/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/textcolor/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/css/visualblocks.css136
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/visualchars/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/plugins/wordcount/plugin.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.inline.min.css1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.min.css1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.eotbin0 -> 8344 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.svg175
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.ttfbin0 -> 8160 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.woffbin0 -> 8336 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.eotbin0 -> 8268 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.svg153
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.ttfbin0 -> 8104 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.woffbin0 -> 8400 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/readme.md1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/anchor.gifbin0 -> 53 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/loader.gifbin0 -> 2608 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/object.gifbin0 -> 152 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/trans.gifbin0 -> 43 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/wline.gifbin0 -> 46 bytes
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.ie7.min.css1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.min.css1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/themes/modern/theme.min.js1
-rwxr-xr-xframework/Web/Javascripts/source/tinymce-405/tinymce.min.js10
-rw-r--r--framework/Web/UI/WebControls/TAccordion.php1
-rw-r--r--framework/Web/UI/WebControls/TBaseValidator.php12
-rw-r--r--framework/Web/UI/WebControls/TDatePicker.php12
-rw-r--r--framework/Web/UI/WebControls/THtmlArea4.php474
-rw-r--r--framework/pradolite.php861
-rw-r--r--index.html3
-rw-r--r--phing13
-rw-r--r--phing.bat1
-rw-r--r--requirements/messages.txt28
-rw-r--r--tests/FunctionalTests/tickets/tests/Ticket785TestCase.php5
-rw-r--r--tests/test_tools/functional_tests.php7
-rw-r--r--tests/unit/Web/THttpRequestTest.php2
-rw-r--r--tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php8
-rwxr-xr-xtravis-phing.sh40
1567 files changed, 17466 insertions, 184731 deletions
diff --git a/HISTORY b/HISTORY
index 071a396a..52395a58 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,3 +1,16 @@
+Version 3.2.3 to be released
+
+BUG: Issue #467 - TSafeHtml error on php 5.5 (ctrlaltca)
+BUG: Issue #470 - Problem escaping characters in TActiveDropDownList (ctrlaltca)
+BUG: Issue #468 - Update prototype to workaround IE10 bug (Raoul Bhatia)
+BUG: Issue #469 - JS Update to TDatePicker (Jürgen Aloy)
+BUG: Issue #465 - Textmate editor plugin template error (ctrlaltca)
+BUG: Issue #472 - No https support from wsdl generator (Marcin Piotrowski)
+ENH: Issue #473 - wsdl support for additional attributes of a custom type's property (Marcin Piotrowski)
+BUG: Issue #476 - Demo's don't work out of box (ctrlaltca)
+BUG: TDatePicker can't render css attributes class "datepicker_year_options" (m_rizki_r)
+ENH: Added THtmlArea4 based on TinyMCE4 (ctrlaltca)
+
Version 3.2.2 Jul 20, 2013
ENH: Issue #50 - TUrlMapping - implement caching for loadUrlMappings (ctrlaltca)
diff --git a/framework/prado-cli b/bin/prado-cli
index 0d504299..0d504299 100755
--- a/framework/prado-cli
+++ b/bin/prado-cli
diff --git a/framework/prado-cli.bat b/bin/prado-cli.bat
index 38d02850..38d02850 100644
--- a/framework/prado-cli.bat
+++ b/bin/prado-cli.bat
diff --git a/framework/prado-cli.php b/bin/prado-cli.php
index 3222f6f2..4fa70c08 100755
--- a/framework/prado-cli.php
+++ b/bin/prado-cli.php
@@ -7,13 +7,15 @@
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
*/
if(!isset($_SERVER['argv']) || php_sapi_name()!=='cli')
die('Must be run from the command line');
-require_once(dirname(__FILE__).'/prado.php');
+$frameworkPath = realpath(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR;
+
+require_once($frameworkPath.'prado.php');
//stub application class
class PradoShellApplication extends TApplication
@@ -33,7 +35,7 @@ if(count($_SERVER['argv']) > 1 && strtolower($_SERVER['argv'][1])==='shell')
{
if(!$shell->has_semicolon) echo Prado::varDump($var);
}
- include_once(dirname(__FILE__).'/3rdParty/PhpShell/php-shell-init.php');
+ include_once($frameworkPath.'/3rdParty/PhpShell/php-shell-init.php');
}
@@ -56,7 +58,7 @@ PradoCommandLineInterpreter::getInstance()->run($_SERVER['argv']);
* Command line interface, configures the action classes and dispatches the command actions.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineInterpreter
@@ -134,7 +136,7 @@ class PradoCommandLineInterpreter
* Base class for command line actions.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
abstract class PradoCommandLineAction
@@ -225,7 +227,7 @@ EOD;
* Create a Prado project skeleton, including directories and files.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineCreateProject extends PradoCommandLineAction
@@ -281,7 +283,7 @@ class PradoCommandLineCreateProject extends PradoCommandLineAction
protected function renderIndexFile()
{
- $framework = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR.'prado.php';
+ $framework = realpath(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'framework'.DIRECTORY_SEPARATOR.'prado.php';
return '<?php
$frameworkPath=\''.$framework.'\';
@@ -377,7 +379,7 @@ EOD;
* Creates test fixtures for a Prado application.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineCreateTests extends PradoCommandLineAction
@@ -419,7 +421,7 @@ class PradoCommandLineCreateTests extends PradoCommandLineAction
protected function renderUnitTestFixture()
{
- $tester = realpath(dirname(__FILE__).'/../tests/test_tools/unit_tests.php');
+ $tester = realpath(dirname(dirname(__FILE__))).'/tests/test_tools/unit_tests.php';
return '<?php
include_once \''.$tester.'\';
@@ -435,7 +437,7 @@ $tester->run(new HtmlReporter());
protected function renderFunctionalTestFixture()
{
- $tester = realpath(dirname(__FILE__).'/../tests/test_tools/functional_tests.php');
+ $tester = realpath(dirname(dirname(__FILE__))).'/tests/test_tools/functional_tests.php';
return '<?php
include_once \''.$tester.'\';
@@ -454,7 +456,7 @@ $tester->run(new SimpleReporter());
* Creates and run a Prado application in a PHP Shell.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLinePhpShell extends PradoCommandLineAction
@@ -476,7 +478,7 @@ class PradoCommandLinePhpShell extends PradoCommandLineAction
* Runs unit test cases.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.0.5
*/
class PradoCommandLineUnitTest extends PradoCommandLineAction
@@ -500,7 +502,7 @@ class PradoCommandLineUnitTest extends PradoCommandLineAction
protected function initializeTestRunner()
{
- $TEST_TOOLS = realpath(dirname(__FILE__).'/../tests/test_tools/');
+ $TEST_TOOLS = realpath(dirname(dirname(__FILE__))).'/tests/test_tools/';
require_once($TEST_TOOLS.'/simpletest/unit_tester.php');
require_once($TEST_TOOLS.'/simpletest/web_tester.php');
@@ -592,7 +594,7 @@ class PradoCommandLineUnitTest extends PradoCommandLineAction
* Create active record skeleton
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.1
*/
class PradoCommandLineActiveRecordGen extends PradoCommandLineAction
@@ -745,7 +747,7 @@ EOD;
*
* @author Matthias Endres <me[at]me23[dot]de>
* @author Daniel Sampedro Bello <darthdaniel85[at]gmail[dot]com>
- * @version $Id: prado-cli.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: prado-cli.php 3316 2013-08-20 13:51:25Z ctrlaltca $
* @since 3.2
*/
class PradoCommandLineActiveRecordGenAll extends PradoCommandLineAction {
@@ -877,5 +879,5 @@ if(class_exists('PHP_Shell_Commands', false))
$__shell_exts->registerExtensions(array(
"active-record" => new PHP_Shell_Extensions_ActiveRecord)); /* the :set command */
- include_once(dirname(__FILE__).'/3rdParty/PhpShell/php-shell-cmd.php');
+ include_once(realpath(dirname(dirname(__FILE__))).'/framework/3rdParty/PhpShell/php-shell-cmd.php');
}
diff --git a/build.xml b/build.xml
index f15698ba..3d6100d1 100644
--- a/build.xml
+++ b/build.xml
@@ -1,668 +1,351 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- PRADO 3.2 build file - Copyright (C) 2013 PradoSoft
-
- Requirements
- ============
- xdebug >= 2.0.0beta4
--->
-<project name="prado" basedir="." default="help">
- <taskdef name="prado-version-check" classname="PradoVersionTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="prado-doc" classname="PradoDocTask" classpath="buildscripts/phing/tasks"/>
-<!-- <taskdef name="prado-pear" classname="PradoPearTask" classpath="buildscripts/phing/tasks"/>-->
- <taskdef name="prado-quickstart-index" classname="QuickstartIndexTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="prado-api-index" classname="ManualIndexTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="prado-test" classname="PradoTestTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="phpunitreporttask" classname="PhpUnitReportTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="compact-package" classname="PradoPackageTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="prado-quickstart-docs" classname="PradoQuickStartDocs" classpath="buildscripts/phing/tasks" />
-
- <!-- generates ${prado.version} and ${prado.revision} -->
- <prado-version-check />
-
- <!-- these are required external commands -->
- <property name="php" value="php" /> <!-- PHP parser -->
- <property name="hhc" value="hhc" /> <!-- compile phpdoc into CHM -->
- <property name="pdflatex" value="pdflatex" /> <!-- generates PDF from LaTex -->
- <property name="zip" value="zip" /> <!-- zip compression -->
-
- <property name="pkgname" value="${phing.project.name}-${prado.version}.r${prado.revision}"/>
-
- <property name="compact-strip-comments" value="false" />
-
- <property name="build.base.dir" value="build"/>
- <property name="build.dist.dir" value="${build.base.dir}/dist"/>
- <property name="build.src.dir" value="${build.base.dir}/${pkgname}"/>
- <property name="build.doc.dir" value="${build.base.dir}/docs"/>
- <property name="build.pear.dir" value="${build.base.dir}/pear"/>
- <property name="build.web.dir" value="${build.base.dir}/web"/>
- <property name="build.test.dir" value="${build.base.dir}/test-reports"/>
- <property name="build.coverage.dir" value="${build.base.dir}/code-coverage"/>
- <property name="build.snapshot.dir" value="${build.base.dir}/snapshot"/>
- <property name="build.compact.dir" value="${build.base.dir}/${pkgname}/compact" />
-
- <!--
- All Source Files in framework
- -->
- <fileset dir="." id="framework">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <exclude name="**/pradolite.php" /><!-- will be generated -->
- <exclude name="**/prado-cli.php" /><!-- will be copied later -->
- <include name="framework/**/*"/>
- </fileset>
-
- <!--
- Surrounding files
- -->
- <fileset dir="." id="misc">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <include name="COPYRIGHT"/>
- <include name="HISTORY"/>
- <include name="UPGRADE"/>
- <include name="index.html"/>
- <include name="requirements/*"/>
- </fileset>
-
- <!--
- Documentation ????
- -->
- <fileset dir="." id="docs">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <exclude name="**/latex" />
- <exclude name="**/sqlmap_tut.pdf" />
- <include name="docs/specs/*"/>
- <include name="docs/sqlmap/sqlmap.pdf" />
- </fileset>
-
- <!--
- Demos
- -->
- <fileset dir="." id="demos">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <exclude name="**/runtime/*"/>
- <exclude name="**/assets/*"/>
- <exclude name="**/runtime/*/**"/>
- <exclude name="**/assets/*/**"/>
- <exclude name="demos/blog/protected/Data/Blog.db" />
- <include name="demos/address-book/**/*"/>
- <include name="demos/blog/**/*"/>
- <include name="demos/blog-tutorial/**/*"/>
- <include name="demos/chat/**/*"/>
- <include name="demos/composer/**/*"/>
- <include name="demos/currency-converter/**/*"/>
- <include name="demos/helloworld/**/*"/>
- <include name="demos/northwind-db/**/*"/>
- <include name="demos/personal/**/*"/>
- <include name="demos/quickstart/**/*"/>
- <include name="demos/soap/**/*"/>
- <include name="demos/sqlmap/**/*"/>
- <include name="demos/time-tracker/**/*"/>
- </fileset>
-
- <!--
- Test tools
- -->
- <fileset dir="." id="test-tools">
- <include name="tests/test_tools/**/*"/>
- </fileset>
-
- <!--
- Writable files and directories
- -->
- <fileset dir="." id="writables">
- <include name="${build.src.dir}/demos/**/runtime" />
- <include name="${build.src.dir}/demos/**/assets" />
- <include name="${build.src.dir}/demos/blog/protected/Data" />
- </fileset>
-
- <target name="help">
- <echo>
-
- Welcome to use PRADO build script!
- ----------------------------------
- You may use the following command format to build a target:
-
- phing &lt;target name&gt;
-
- where &lt;target name&gt; can be one of the following:
-
- For all PRADO developers:
- - test : run unit tests (results are under /build/test-reports);
- - lint : run lint on framework
- - lint-demos : run lint on demos
-
- For PRADO release manager:
- - dist : create release files;
- - build : prepare a directory for distribution;
- - clean : clean up the build directory;
- - rebuild : clean first and then build;
- - docs : generate documentation;
- - pear : generate PEAR packages;
- - snapshot: generate nightly snapshot;
- </echo>
- </target>
-
-<!-- bulid compact prado package definitions -->
-
- <target name="compact-collections" description="Collections">
- <mkdir dir="${build.compact.dir}" />
- <mkdir dir="${build.compact.dir}/docs" />
- <mkdir dir="${build.compact.dir}/prado-dao" />
- <compact-package output="${build.compact.dir}/prado-dao/collections.php" strip="${compact-strip-comments}">
- <filelist dir="framework" files="PradoBase.php,TComponent.php,Exceptions/TException.php,interfaces.php" />
- <filelist dir="framework/Collections" files="TList.php,TMap.php,TAttributeCollection.php,TPagedList.php,TPagedDataSource.php" />
- </compact-package>
- <delete file="${build.compact.dir}/prado-dao/messages.txt" />
- <copy file="framework/Exceptions/messages/messages.txt" tofile="${build.compact.dir}/prado-dao/messages.txt" />
- <copy file="COPYRIGHT" tofile="${build.compact.dir}/COPYRIGHT" />
- <copy file="HISTORY" tofile="${build.compact.dir}/HISTORY" />
- <delete file="${build.compact.dir}/readme.txt" />
- <append destFile="${build.compact.dir}/readme.txt">PRADO Framework for PHP 5, version ${prado.version}. See docs/ directory for documentation.</append>
-
- <prado-quickstart-docs output="${build.compact.dir}/docs"
- pages="Advanced/Collections.page,Fundamentals/Components.page"/>
- </target>
-
- <target name="compact-db" description="Database" depends="compact-collections">
- <compact-package output="${build.compact.dir}/prado-dao/db.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data"
- files="TDbConnection.php, TDbCommand.php, TDbDataReader.php, TDbTransaction.php"/>
- <filelist dir="framework/Data/Common"
- files="TDbTableInfo.php, TDbTableColumn.php, TDbCommandBuilder.php, TDbMetaData.php" />
- </compact-package>
- <prado-quickstart-docs output="${build.compact.dir}/docs" pages="Database/DAO.page" />
- </target>
-
- <target name="compact-db-sqlite" description="Sqlite Database" depends="compact-db">
- <compact-package output="${build.compact.dir}/prado-dao/db-sqlite.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data/Common/Sqlite"
- files="TSqliteCommandBuilder.php,TSqliteMetaData.php,TSqliteTableColumn.php,TSqliteTableInfo.php" />
- </compact-package>
- </target>
-
- <target name="compact-db-mysql" description="Mysql Database" depends="compact-db">
- <compact-package output="${build.compact.dir}/prado-dao/db-mysql.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data/Common/Mysql"
- files="TMysqlCommandBuilder.php,TMysqlMetaData.php,TMysqlTableColumn.php,TMysqlTableInfo.php" />
- </compact-package>
- </target>
-
- <target name="compact-db-pgsql" description="Pgsql Database" depends="compact-db">
- <compact-package output="${build.compact.dir}/prado-dao/db-pgsql.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data/Common/Pgsql"
- files="TPgsqlCommandBuilder.php,TPgsqlMetaData.php,TPgsqlTableColumn.php,TPgsqlTableInfo.php" />
- </compact-package>
- </target>
-
- <target name="compact-db-mssql" description="Mssql Database" depends="compact-db">
- <compact-package output="${build.compact.dir}/prado-dao/db-mssql.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data/Common/Mssql"
- files="TMssqlCommandBuilder.php,TMssqlMetaData.php,TMssqlTableColumn.php,TMssqlTableInfo.php" />
- </compact-package>
- </target>
-
- <!-- all the db common classes and drivers -->
- <target name="compact-db-all" depends="compact-db-sqlite,compact-db-mysql,compact-db-pgsql,compact-db-mssql" />
-
- <target name="compact-table-gateway" description="Package Active Record" depends="compact-db-all">
- <compact-package output="${build.compact.dir}/prado-dao/table-gateway.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data/DataGateway"
- files="TDataGatewayCommand.php, TSqlCriteria.php, TTableGateway.php"/>
- </compact-package>
- </target>
-
- <target name="compact-active-record" description="Package Active Record" depends="compact-table-gateway">
- <compact-package output="${build.compact.dir}/prado-dao/active-record.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data/ActiveRecord"
- files="TActiveRecord.php,TActiveRecordManager.php,Exceptions/TActiveRecordException.php,TActiveRecordCriteria.php,TActiveRecordGateway.php" />
- <filelist dir="framework/Data/ActiveRecord/Relations"
- files="TActiveRecordRelation.php,TActiveRecordRelationContext.php,TActiveRecordHasOne.php,TActiveRecordHasManyAssociation.php,TActiveRecordHasMany.php,TActiveRecordBelongsTo.php" />
- </compact-package>
- <append file="framework/Data/ActiveRecord/Exceptions/messages.txt"
- destfile="${build.compact.dir}/prado-dao/messages.txt" />
- <prado-quickstart-docs output="${build.compact.dir}/docs" pages="Database/ActiveRecord.page" />
- </target>
-
- <target name="compact-sqlmap" description="Package SqlMap" depends="compact-db-all">
- <compact-package output="${build.compact.dir}/prado-dao/sqlmap.php" strip="${compact-strip-comments}">
- <filelist dir="framework/Data/SqlMap" files="TSqlMapManager.php,TSqlMapGateway.php" />
- <filelist dir="framework/Data/SqlMap/DataMapper"
- files="TSqlMapException.php,TSqlMapTypeHandlerRegistry.php,TSqlMapCache.php,TPropertyAccess.php,TLazyLoadList.php,TSqlMapPagedList.php"/>
- <filelist dir="framework/Data/SqlMap/Configuration"
- files="TSqlMapStatement.php,TDiscriminator.php,TInlineParameterMapParser.php,TParameterMap.php,TParameterProperty.php,TResultMap.php,TResultProperty.php,TSimpleDynamicParser.php,TSqlMapCacheModel.php,TSqlMapXmlConfiguration.php" />
- <filelist dir="framework/Data/SqlMap/Statements"
- files="IMappedStatement.php,TMappedStatement.php,TCachingStatement.php,TUpdateMappedStatement.php,TDeleteMappedStatement.php,TInsertMappedStatement.php,TPreparedCommand.php,TPreparedStatement.php,TPreparedStatementFactory.php,TSelectMappedStatement.php,TSimpleDynamicSql.php,TStaticSql.php"/>
- </compact-package>
- <append file="framework/Data/SqlMap/DataMapper/messages.txt"
- destfile="${build.compact.dir}/prado-dao/messages.txt" />
- <prado-quickstart-docs output="${build.compact.dir}/docs" pages="Database/SqlMap.page" />
- </target>
-
- <target name="compact-northwind" description="Northwind example">
- <copy todir="${build.compact.dir}/examples">
- <fileset dir="demos/northwind-db/protected/" >
- <include name="database/**/*"/>
- <include name="data/**/*"/>
- </fileset>
- </copy>
- <delete file="${build.compact.dir}/examples/example.php" />
- <append destfile="${build.compact.dir}/examples/example.php"><![CDATA[<?php
-
-include('../prado-dao/collections.php');
-include('../prado-dao/db.php');
-include('../prado-dao/db-sqlite.php');
-include('../prado-dao/table-gateway.php');
-include('../prado-dao/active-record.php');
-include('../prado-dao/sqlmap.php');
-
-$sqlite_dir = './data';
-$sqlite_db = $sqlite_dir.'/Northwind.db';
-if(!is_file($sqlite_db))
- die("Unable to find database file $sqlite_db");
-if(!is_writable($sqlite_dir))
- die("Please make sure that the directory $sqlite_dir is writable by PHP process.");
-if(!is_writable($sqlite_db))
- die("Please make sure that the sqlite database file $sqlite_db is writable by PHP process.");
-
-//add directory "database" for autoload
-$class_dir = realpath(dirname(__FILE__).'/database');
-set_include_path(get_include_path().PATH_SEPARATOR.$class_dir);
-spl_autoload_register(array('PradoBase', 'autoload'));
-//other forms of auto load may be used.
-
-$conn = new TDbConnection("sqlite:$sqlite_db");
-//set default database connection
-TActiveRecordManager::getInstance()->setDbConnection($conn);
-
-//start playing
-
-foreach(Employee::finder()->findAll() as $employee)
- var_dump($employee->LastName);
-
-//fetch all regions and its territories.
-foreach(Region::finder()->withTerritories()->findAll() as $region)
-{
- var_dump($region->RegionDescription);
- foreach($region->Territories as $territory)
- var_dump($territory->TerritoryDescription);
-}
-
-//sqlmap example
-$manager = new TSqlMapManager($conn);
-$manager->configureXml('./database/sqlmap.xml');
-$sqlmap = $manager->getSqlMapGateway();
-
-var_dump($sqlmap->queryForList('products-with-price', 50));
-
-//similar query, but not identical
-//Product::finder()->withCategory()->findAll('UnitPrice < ?', 50)
-
-?>]]></append>
- </target>
- <target name="compact-dao" description="All packages" depends="compact-active-record,compact-sqlmap,compact-northwind" />
-
-<!-- end compact packaging -->
-
- <target name="build" description="Building standard PRADO package v${prado.version}.${prado.revision}">
- <echo>Building pradolite.php...</echo>
- <delete file="framework/pradolite.php"/>
- <exec command="${php} build.php" dir="buildscripts/phpbuilder" passthru="true"/>
-
- <echo>Copying files to build directory...</echo>
- <copy todir="${build.src.dir}">
- <fileset refid="demos"/>
- <fileset refid="docs"/>
- <fileset refid="framework"/>
- <fileset refid="misc"/>
- <fileset refid="test-tools" />
- </copy>
-
- <copy file="buildscripts/classtree/ExtensionReadme.html" tofile="${build.src.dir}/editors/ExtensionReadme.html" />
- <copy file="framework/pradolite.php" tofile="${build.src.dir}/framework/pradolite.php" />
- <copy file="framework/prado-cli.php" tofile="${build.src.dir}/framework/prado-cli.php" />
-
- <echo>Changing file permissions...</echo>
- <chmod mode="0777">
- <fileset refid="writables" />
- </chmod>
-
- <echo>Building quickstart demo search indices...</echo>
- <prado-quickstart-index todir="${build.src.dir}/demos/quickstart/protected/index/quickstart" />
- </target>
-
- <target name="clean">
- <echo>Cleaning up the mess</echo>
- <delete dir="${build.base.dir}"/>
- </target>
-
- <target name="rebuild" depends="clean,build" />
-
- <target name="docs" depends="build">
- <echo>Build PDF + CHM + HTML Docs, it may take about 30 mins</echo>
-
- <echo>Building quickstart.pdf...</echo>
- <delete>
- <fileset dir=".">
- <include name="buildscripts/texbuilder/quickstart/*.aux" />
- </fileset>
- </delete>
- <exec command="${php} build.php" dir="buildscripts/texbuilder/quickstart" passthru="true"/>
- <!-- use -interaction=nonstopmode to see compilation errors in the shell output -->
- <exec command="${pdflatex} -interaction=batchmode quickstart.tex" dir="buildscripts/texbuilder/quickstart" passthru="true"/>
- <move file="buildscripts/texbuilder/quickstart/quickstart.pdf" todir="${build.doc.dir}"/>
-
- <echo>Building API manuals...</echo>
- <delete dir="${build.doc.dir}/manual"/>
- <mkdir dir="${build.doc.dir}/manual" />
- <prado-doc phpdoc="${php} buildscripts/PhpDocumentor/phpdoc"
- title="PRADO v${prado.version} API Manual"
- destdir="${build.doc.dir}/manual"
- sourcepath="${build.src.dir}/framework"
- ignorelist="*pradolite.php,*prado-cli.php,*3rdParty/*,*Javascripts/source/*,*packages.php,*JSMin.php,*I18N/core/*,*WebControls/assets/*"
- output="HTML:frames:default,CHM:default:default,HTML:Smarty:PradoSoft" />
-
- <echo>Indexing API manuals...</echo>
- <prado-api-index docdir="${build.doc.dir}/manual/HTMLSmartyConverter" todir="${build.doc.dir}/manual/HTMLSmartyConverter" />
-
- <copy file="buildscripts/index/search.php" todir="${build.doc.dir}/manual/HTMLSmartyConverter" />
-
- <exec command="${php} build.php" dir="buildscripts/classtree" passthru="true"/>
-
- <echo>Generating CHM Content (Quickstart + ClassDocs)</echo>
- <exec command="${php} build.php" dir="buildscripts/chmbuilder" passthru="true"/>
- <!-- done on project website
- <echo>Generating CHM Content (WIKI)</echo>
- <exec command="${php} build.php" dir="buildscripts/wikibuilder" passthru="true"/>
- -->
- <if>
- <equals arg1="${prado.winbuild}" arg2="true"/>
- <then>
- <exec command="${hhc} ${build.doc.dir}/prado3_manual.hhp" />
- </then>
- </if>
- </target>
-
- <target name="dist" depends="rebuild,docs">
- <echo>Moving doc files to build...</echo>
- <mkdir dir="${build.dist.dir}" />
- <move file="${build.doc.dir}/quickstart.pdf" todir="${build.src.dir}/docs" />
- <copy todir="${build.src.dir}/docs/manual">
- <fileset dir="${build.doc.dir}/manual/HTMLframesConverter">
- <include name="**/**" />
- </fileset>
- </copy>
- <if>
- <equals arg1="${prado.winbuild}" arg2="true"/>
- <then>
- <move file="${build.doc.dir}/prado3_manual.chm" tofile="${build.src.dir}/docs/prado3_manual.chm" />
- </then>
- </if>
-
- <echo>Generating compressed distribution files...</echo>
- <if>
- <equals arg1="${prado.winbuild}" arg2="false"/>
- <then>
- <exec command="tar czvf ${pkgname}.tar.gz ${pkgname}" dir="${build.base.dir}"/>
- <move file="${build.base.dir}/${pkgname}.tar.gz" todir="${build.dist.dir}" />
- </then>
- </if>
-
- <!--
- <exec command="zip ${pkgname}.zip -r ${pkgname}" dir="${build.base.dir}" />
- <move file="${build.base.dir}/${pkgname}.zip" todir="${build.dist.dir}" />
- -->
-
- <echo>Generating files for pradosoft.com...</echo>
- <echo>Compiling class docs...</echo>
- <exec command="${php} build.php" dir="buildscripts/classtree" passthru="true"/>
- <move file="buildscripts/classtree/classes.data" todir="${build.web.dir}/protected/Data" />
-
- <echo>Moving HTML docs to Web folder...</echo>
- <mkdir dir="${build.web.dir}" />
- <copy todir="${build.web.dir}/docs/manual">
- <fileset dir="${build.doc.dir}/manual/HTMLSmartyConverter">
- <include name="**/**" />
- </fileset>
- </copy>
-
- <echo>
-
-
- Distribution Not Completed Yet!!!
-
-The following steps need to be manually performed in order to complete
-the PRADO distribution:
-
-1. Package DreamWeaver extension by running DW extension manager with
- buildscripts/classtree/PRADO.mxi and saving the generated file as
- "${build.src.dir}/editors/Dreamweaver/PRADO.mxp"
-
-2. Use winzip (on Windows) and gzip (on Linux) to generate the compressed
- release files of the direcotry
- "${build.src.dir}".
-
- </echo>
- </target>
-
- <target name="test" description="Running unit tests">
- <delete dir="${build.test.dir}"/>
- <mkdir dir="${build.test.dir}"/>
- <prado-test codecoverage="false" haltonfailure="false" haltonerror="false" printsummary="true">
- <batchtest>
- <fileset dir="tests/unit">
- <include name="**/*Test.php"/>
- </fileset>
- </batchtest>
- <formatter type="xml" todir="${build.test.dir}" outfile="unit-tests.xml"/>
- </prado-test>
- <phpunitreporttask infile="${build.test.dir}/unit-tests.xml" format="frames" todir="${build.test.dir}"/>
- </target>
-
- <target name="snapshot" depends="rebuild">
- <echo>Generating compressed distribution files...</echo>
- <if>
- <equals arg1="${prado.winbuild}" arg2="false"/>
- <then>
- <exec command="tar czvf ${pkgname}.tar.gz ${pkgname}" dir="${build.base.dir}"/>
- <move file="${build.base.dir}/${pkgname}.tar.gz" todir="${build.dist.dir}" />
- </then>
- </if>
- <exec command="zip ${pkgname}.zip -r ${pkgname}" dir="${build.base.dir}" />
- <move file="${build.base.dir}/${pkgname}.zip" tofile="${build.snapshot.dir}/prado-latest.zip" />
- <copy file="${build.src.dir}/HISTORY" tofile="${build.snapshot.dir}/changelog-latest.txt" />
- </target>
-
- <taskdef name="phplint" classname="PhpLintTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="xmllint" classname="XmlLintTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="jslint" classname="JslLintTask" classpath="buildscripts/phing/tasks"/>
-<!--
- <taskdef name="analyze" classname="ZendCodeAnalyzerTask" classpath="buildscripts/phing/tasks"/>
- <taskdef name="pear-package" classname="BuildPradoPEARPackageTask" classpath="buildscripts/phing/tasks"/>
-
- <target name="pear" depends="" description="Creating PEAR package">
- <mkdir dir="${build.pear.dir}" />
- <prado-pear pkgdir="${build.pear.dir}"
- channel="pear.php.net"
- version="${prado.version}"
- state="stable"
- category="framework"
- package="prado"
- summary="PRADO is a ...."
- pkgdescription="detailed description..."
- notes="www.pradosoft.com"
- license="BSD"
- />
- </target>
- <target name="test" description="Run unit tests">
- <echo>Preparing directory structure</echo>
- <delete dir="${reports.dir}"/>
- <mkdir dir="${reports.dir}"/>
- <delete dir="${reports.unit.dir}"/>
- <delete dir="${reports.codecoverage.dir}"/>
-
- <if>
- <equals arg1="${codecoverage}" arg2="true"/>
- <then>
- <mkdir dir="${reports.codecoverage.dir}"/>
- <echo>Preparing Code Coverage Database</echo>
- <coverage-setup database="${reports.codecoverage.dir}/coverage.db">
- <fileset dir="${src.dir}">
- <include name="**/*.php"/>
- <exclude name="Web/Javascripts/js/jsmin.php"/>
- <exclude name="Data/TCache.php"/>
- <exclude name="DataAccess/**/*.php"/>
- <exclude name="I18N/core/Gettext/MO.php"/>
- <exclude name="I18N/core/Gettext/PO.php"/>
- <exclude name="I18N/core/util.php"/>
- <exclude name="I18N/TGlobalization.php"/>
- <exclude name="I18N/TGlobalizationAutoDetect.php"/>
- <exclude name="Security/TUserManager.php"/>
- <exclude name="Security/TMembershipManager.php"/>
- <exclude name="core.php"/>
- <exclude name="3rdParty/**/*.php"/>
- <exclude name="pradolite.php"/>
- <exclude name="prado.php"/>
- </fileset>
- </coverage-setup>
- </then>
- </if>
-
- <echo>Running Unit Tests</echo>
- <phpunit2 codecoverage="${codecoverage}" haltonfailure="false" haltonerror="false" printsummary="true">
- <batchtest>
- <fileset dir="${tests.dir}">
- <include name="**/*Test.php"/>
- </fileset>
- </batchtest>
- <formatter type="xml" todir="${reports.dir}" outfile="logfile.xml"/>
- </phpunit2>
-
- <echo>Creating Unit Test Report</echo>
- <mkdir dir="${reports.unit.dir}"/>
- <phpunit2report infile="${reports.dir}/logfile.xml" format="frames" styledir="${reports.style.dir}" todir="${reports.unit.dir}"/>
-
- <if>
- <equals arg1="${codecoverage}" arg2="true"/>
- <then>
- <echo>Creating Code Coverage Report</echo>
- <coverage-report outfile="${reports.dir}/coverage.xml" geshipath="${reports.geshi.dir}" geshilanguagespath="${reports.geshi.dir}/geshi">
- <report todir="${reports.codecoverage.dir}" styledir="${reports.style.dir}"/>
- </coverage-report>
- </then>
- </if>
- </target>
-
--->
- <target name="lint" description="Check syntax of source files">
- <echo>Checking php files..</echo>
- <phplint deprecatedAsError="true" >
- <fileset dir="framework">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <include name="**/*.php"/>
- </fileset>
- </phplint>
-
- <echo>Checking js files..</echo>
- <jsllint>
- <fileset dir="framework">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <include name="**/*.js"/>
- </fileset>
- </jsllint>
-
- <echo>Checking xml files..</echo>
- <xmllint>
- <fileset dir="framework">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <include name="**/*.xml"/>
- </fileset>
- </xmllint>
- </target>
-
- <target name="lint-demos" description="Check syntax of demo files">
- <echo>Checking php files..</echo>
- <phplint deprecatedAsError="true" >
- <fileset dir="demos">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <include name="**/*.php"/>
- </fileset>
- </phplint>
-
- <echo>Checking js files..</echo>
- <jsllint>
- <fileset dir="demos">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <include name="**/*.js"/>
- </fileset>
- </jsllint>
-
- <echo>Checking xml files..</echo>
- <xmllint>
- <fileset dir="demos">
- <exclude name="**/.svn"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*~"/>
- <include name="**/*.xml"/>
- </fileset>
- </xmllint>
- </target>
-
-<!--
- <target name="build-pear-package">
- <echo>Preparing files for PEAR package...</echo>
- <delete dir="${build.pear.dir}"/>
- <mkdir dir="${build.pear.dir}"/>
- <copy todir="${build.pear.dir}">
- <fileset refid="framework"/>
- <fileset dir="${build.base.dir}">
- <include name="${prado.lite}"/>
- </fileset>
- </copy>
-
- <echo>Creating package.xml...</echo>
- <pear-package dir="${build.pear.dir}" destFile="${build.base.dir}/pear/package.xml" version="${version}" state="${pear.state}" notes="${notes}">
- <fileset refid="framework"/>
- <fileset dir="${build.base.dir}">
- <include name="${prado.lite}"/>
- </fileset>
- </pear-package>
- </target>
- <target name="dist-pear" depends="build-pear-package" description="Create PRADO PEAR package">
- <delete file="${dist.pearfile}"/>
- <mkdir dir="${dist.base.dir}"/>
- <exec command="pear package" dir="${build.pear.dir}" passthru="true"/>
- <move file="${build.pear.dir}/prado3-${version}.tgz" tofile="${dist.pearfile}"/>
- </target>
- <target name="analyze" description="Analyze PHP source files with Zend Code Analyzer">
- <analyze analyzerPath="${zca}" disable="var-ref-notmodified,var-use-before-def,var-arg-unused,if-if-else">
- <fileset refid="src"/>
- </analyze>
- </target>
-
- <target name="install" description="Install PEAR package locally">
- <exec command="sudo pear install ${dist.pearfile}" dir="." passthru="true"/>
- </target>
-
- <target name="uninstall" description="Uninstall PEAR package locally">
- <exec command="sudo pear uninstall pear.pradosoft.com/prado3" dir="." passthru="true"/>
- </target>
--->
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ PRADO 3.2 build file - Copyright (C) 2013 PradoSoft
+
+ Requirements
+ ============
+ xdebug >= 2.0.0beta4
+-->
+<project name="prado" basedir="." default="help">
+ <taskdef name="prado-version-check" classname="PradoVersionTask" classpath="buildscripts/phing/tasks"/>
+ <taskdef name="prado-quickstart-index" classname="QuickstartIndexTask" classpath="buildscripts/phing/tasks"/>
+ <taskdef name="prado-api-index" classname="ManualIndexTask" classpath="buildscripts/phing/tasks"/>
+ <taskdef name="phpunitreporttask" classname="PhpUnitReportTask" classpath="buildscripts/phing/tasks"/>
+
+ <!-- generates ${prado.version} and ${prado.revision} -->
+ <prado-version-check/>
+
+ <!-- these are required external commands -->
+ <property name="php" value="php"/> <!-- PHP parser -->
+ <property name="pdflatex" value="pdflatex"/> <!-- generates PDF from LaTex -->
+ <property name="zip" value="zip"/> <!-- zip compression -->
+
+ <property name="pkgname" value="${phing.project.name}-${prado.version}.r${prado.revision}"/>
+
+ <property name="compact-strip-comments" value="false"/>
+
+ <property name="build.base.dir" value="build"/>
+ <property name="build.dist.dir" value="${build.base.dir}/dist"/>
+ <property name="build.src.dir" value="${build.base.dir}/${pkgname}"/>
+ <property name="build.doc.dir" value="${build.base.dir}/docs"/>
+ <property name="build.web.dir" value="${build.base.dir}/web"/>
+ <property name="build.test.dir" value="${build.base.dir}/test-reports"/>
+ <property name="build.snapshot.dir" value="${build.base.dir}/snapshot"/>
+
+ <!--
+ All Source Files in framework
+ -->
+ <fileset dir="." id="framework">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <exclude name="**/pradolite.php"/><!-- will be generated -->
+ <exclude name="**/prado-cli.php"/><!-- will be copied later -->
+ <include name="framework/**/*"/>
+ </fileset>
+
+ <!--
+ Surrounding files
+ -->
+ <fileset dir="." id="misc">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <include name="COPYRIGHT"/>
+ <include name="HISTORY"/>
+ <include name="UPGRADE"/>
+ <include name="index.html"/>
+ <include name="requirements/*"/>
+ </fileset>
+
+ <!--
+ Documentation
+ -->
+ <fileset dir="." id="docs">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <exclude name="**/latex"/>
+ <exclude name="**/sqlmap_tut.pdf"/>
+ <include name="docs/specs/*"/>
+ <include name="docs/sqlmap/sqlmap.pdf"/>
+ </fileset>
+
+ <!--
+ Demos
+ -->
+ <fileset dir="." id="demos">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <exclude name="**/runtime/*"/>
+ <exclude name="**/assets/*"/>
+ <exclude name="**/runtime/*/**"/>
+ <exclude name="**/assets/*/**"/>
+ <exclude name="demos/blog/protected/Data/Blog.db"/>
+ <include name="demos/address-book/**/*"/>
+ <include name="demos/blog/**/*"/>
+ <include name="demos/blog-tutorial/**/*"/>
+ <include name="demos/chat/**/*"/>
+ <include name="demos/composer/**/*"/>
+ <include name="demos/currency-converter/**/*"/>
+ <include name="demos/helloworld/**/*"/>
+ <include name="demos/northwind-db/**/*"/>
+ <include name="demos/personal/**/*"/>
+ <include name="demos/quickstart/**/*"/>
+ <include name="demos/soap/**/*"/>
+ <include name="demos/sqlmap/**/*"/>
+ <include name="demos/time-tracker/**/*"/>
+ </fileset>
+
+ <!--
+ Test tools
+ -->
+ <fileset dir="." id="test-tools">
+ <include name="tests/test_tools/**/*"/>
+ </fileset>
+
+ <!--
+ Writable files and directories
+ -->
+ <fileset dir="." id="writables">
+ <include name="${build.src.dir}/demos/**/runtime"/>
+ <include name="${build.src.dir}/demos/**/assets"/>
+ <include name="${build.src.dir}/demos/blog/protected/Data"/>
+ </fileset>
+
+ <target name="help">
+ <echo>
+
+ Welcome to use PRADO build script!
+ ----------------------------------
+ You may use the following command format to build a target:
+
+ phing &lt;target name&gt;
+
+ where &lt;target name&gt; can be one of the following:
+
+ For all PRADO developers:
+ - test : run unit tests (results are under /build/test-reports);
+ - lint : run lint on framework
+ - lint-demos : run lint on demos
+
+ For PRADO release manager:
+ - dist : create release files;
+ - build : prepare a directory for distribution;
+ - clean : clean up the build directory;
+ - rebuild : clean first and then build;
+ - docs : generate documentation;
+ - snapshot: generate nightly snapshot;
+ </echo>
+ </target>
+
+ <target name="build" description="Building standard PRADO package v${prado.version}.${prado.revision}">
+ <echo>Building pradolite.php...</echo>
+ <delete file="framework/pradolite.php"/>
+ <exec command="${php} build.php" dir="buildscripts/phpbuilder" passthru="true"/>
+
+ <echo>Copying files to build directory...</echo>
+ <copy todir="${build.src.dir}">
+ <fileset refid="demos"/>
+ <fileset refid="docs"/>
+ <fileset refid="framework"/>
+ <fileset refid="misc"/>
+ <fileset refid="test-tools"/>
+ </copy>
+
+ <copy file="buildscripts/classtree/ExtensionReadme.html" tofile="${build.src.dir}/editors/ExtensionReadme.html"/>
+ <copy file="framework/pradolite.php" tofile="${build.src.dir}/framework/pradolite.php"/>
+ <copy file="bin/prado-cli.php" tofile="${build.src.dir}/bin/prado-cli.php"/>
+
+ <echo>Changing file permissions...</echo>
+ <chmod mode="0777">
+ <fileset refid="writables"/>
+ </chmod>
+
+ <echo>Building quickstart demo search indices...</echo>
+ <prado-quickstart-index todir="${build.src.dir}/demos/quickstart/protected/index/quickstart"/>
+ </target>
+
+ <target name="clean">
+ <echo>Cleaning up the mess</echo>
+ <delete dir="${build.base.dir}"/>
+ </target>
+
+ <target name="rebuild" depends="clean,build"/>
+
+ <target name="api-manual" depends="build">
+ <echo>Building API manuals...</echo>
+ <delete dir="${build.doc.dir}/manual"/>
+ <mkdir dir="${build.doc.dir}/manual"/>
+ <apigen
+ executable="bin/apigen.php"
+ source="${build.src.dir}/framework"
+ destination="${build.doc.dir}/manual"
+ exclude="*pradolite.php,*prado-cli.php,*3rdParty/*,*Javascripts/source/*,*packages.php,*JSMin.php,*I18N/core/*,*WebControls/assets/*"
+ title="PRADO v${prado.version} API Manual"
+ deprecated="true"
+ todo="true"
+ sourcecode="false"
+ php="false"
+ templateconfig="buildscripts/apigen/pradosoft/config.neon"
+ />
+ <echo>Cleaning svn directories from API manuals...</echo>
+ <delete dir="${build.doc.dir}/manual/resources/.svn" includeemptydirs="true" failonerror="true" />
+
+ <echo>Indexing API manuals...</echo>
+ <prado-api-index docdir="${build.doc.dir}/manual" todir="${build.doc.dir}/manual"/>
+ <copy file="buildscripts/index/search.php" todir="${build.doc.dir}/manual" />
+ </target>
+
+ <target name="docs" depends="build,api-manual">
+ <echo>Build PDF + HTML Docs, it may take about 5 mins</echo>
+
+ <echo>Building quickstart.pdf...</echo>
+ <delete>
+ <fileset dir=".">
+ <include name="buildscripts/texbuilder/quickstart/*.aux"/>
+ </fileset>
+ </delete>
+ <exec command="${php} build.php" dir="buildscripts/texbuilder/quickstart" passthru="true"/>
+ <!-- use -interaction=nonstopmode to see compilation errors in the shell output -->
+ <exec command="${pdflatex} -interaction=batchmode quickstart.tex" dir="buildscripts/texbuilder/quickstart" passthru="true"/>
+ <move file="buildscripts/texbuilder/quickstart/quickstart.pdf" todir="${build.doc.dir}"/>
+
+ <exec command="${php} build.php" dir="buildscripts/classtree" passthru="true"/>
+ </target>
+
+ <target name="dist" depends="rebuild,docs">
+ <echo>Moving doc files to build...</echo>
+ <mkdir dir="${build.dist.dir}"/>
+ <move file="${build.doc.dir}/quickstart.pdf" todir="${build.src.dir}/docs"/>
+ <copy todir="${build.src.dir}/docs/manual">
+ <fileset dir="${build.doc.dir}/manual">
+ <include name="**/**"/>
+ </fileset>
+ </copy>
+
+ <echo>Generating compressed distribution files...</echo>
+ <if>
+ <equals arg1="${prado.winbuild}" arg2="false"/>
+ <then>
+ <exec command="tar czvf ${pkgname}.tar.gz ${pkgname}" dir="${build.base.dir}"/>
+ <move file="${build.base.dir}/${pkgname}.tar.gz" todir="${build.dist.dir}"/>
+ </then>
+ </if>
+
+ <echo>Generating files for pradosoft.com...</echo>
+ <echo>Compiling class docs...</echo>
+ <exec command="${php} build.php" dir="buildscripts/classtree" passthru="true"/>
+ <move file="buildscripts/classtree/classes.data" todir="${build.web.dir}/protected/Data"/>
+
+ <echo>Moving HTML docs to Web folder...</echo>
+ <mkdir dir="${build.web.dir}"/>
+ <copy todir="${build.web.dir}/docs/manual">
+ <fileset dir="${build.doc.dir}/manual">
+ <include name="**/**"/>
+ </fileset>
+ </copy>
+
+ <echo>
+ Distribution Completed!!!
+ </echo>
+ </target>
+
+ <target name="test" description="Running unit tests">
+ <delete dir="${build.test.dir}"/>
+ <mkdir dir="${build.test.dir}"/>
+ <phpunit codecoverage="false" haltonfailure="false" haltonerror="false" printsummary="true">
+ <batchtest>
+ <fileset dir="tests/unit">
+ <include name="**/*Test.php"/>
+ </fileset>
+ </batchtest>
+ <formatter type="xml" todir="${build.test.dir}" outfile="unit-tests.xml"/>
+ </phpunit>
+ <phpunitreporttask infile="${build.test.dir}/unit-tests.xml" format="frames" todir="${build.test.dir}"/>
+ </target>
+
+ <target name="snapshot" depends="rebuild">
+ <echo>Generating compressed distribution files...</echo>
+ <if>
+ <equals arg1="${prado.winbuild}" arg2="false"/>
+ <then>
+ <exec command="tar czvf ${pkgname}.tar.gz ${pkgname}" dir="${build.base.dir}"/>
+ <move file="${build.base.dir}/${pkgname}.tar.gz" todir="${build.dist.dir}"/>
+ </then>
+ </if>
+ <exec command="zip ${pkgname}.zip -r ${pkgname}" dir="${build.base.dir}"/>
+ <move file="${build.base.dir}/${pkgname}.zip" tofile="${build.snapshot.dir}/prado-latest.zip"/>
+ <copy file="${build.src.dir}/HISTORY" tofile="${build.snapshot.dir}/changelog-latest.txt"/>
+ </target>
+
+ <taskdef name="phplint" classname="PhpLintTask" classpath="buildscripts/phing/tasks"/>
+ <taskdef name="xmllint" classname="XmlLintTask" classpath="buildscripts/phing/tasks"/>
+ <taskdef name="jslint" classname="JslLintTask" classpath="buildscripts/phing/tasks"/>
+
+ <target name="lint" description="Check syntax of source files">
+ <echo>Checking php files..</echo>
+ <phplint deprecatedAsError="true">
+ <fileset dir="framework">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <include name="**/*.php"/>
+ </fileset>
+ </phplint>
+
+ <echo>Checking js files..</echo>
+ <jsllint>
+ <fileset dir="framework">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <include name="**/*.js"/>
+ </fileset>
+ </jsllint>
+
+ <echo>Checking xml files..</echo>
+ <xmllint>
+ <fileset dir="framework">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <include name="**/*.xml"/>
+ </fileset>
+ </xmllint>
+ </target>
+
+ <target name="lint-demos" description="Check syntax of demo files">
+ <echo>Checking php files..</echo>
+ <phplint deprecatedAsError="true">
+ <fileset dir="demos">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <include name="**/*.php"/>
+ </fileset>
+ </phplint>
+
+ <echo>Checking js files..</echo>
+ <jsllint>
+ <fileset dir="demos">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <include name="**/*.js"/>
+ </fileset>
+ </jsllint>
+
+ <echo>Checking xml files..</echo>
+ <xmllint>
+ <fileset dir="demos">
+ <exclude name="**/.svn"/>
+ <exclude name="**/*.bak"/>
+ <exclude name="**/*~"/>
+ <include name="**/*.xml"/>
+ </fileset>
+ </xmllint>
+ </target>
+
+</project>
diff --git a/buildscripts/PhpDocumentor/LICENSE b/buildscripts/PhpDocumentor/LICENSE
deleted file mode 100755
index fab24cc6..00000000
--- a/buildscripts/PhpDocumentor/LICENSE
+++ /dev/null
@@ -1,145 +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.
-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 \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/new_phpdoc.php b/buildscripts/PhpDocumentor/new_phpdoc.php
deleted file mode 100644
index 176d2286..00000000
--- a/buildscripts/PhpDocumentor/new_phpdoc.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<?php
-/**
- * Advanced Web Interface to phpDocumentor
- *
- * PHP versions 4 and 5
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Juan Pablo Morales <ju-moral@uniandes.edu.co>
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Gregory Beaver <cellog@php.net>
- * @author Chuck Burgess <ashnazg@php.net>
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @link http://pear.php.net/package/PhpDocumentor
- * @see phpdoc.php
- * @filesource
- * @todo CS cleanup - change package to PhpDocumentor
- * @deprecated redirects automatically to docbuilder
- * (see {@link docbuilder/index.html})
- */
-?>
-
-<html>
-<head>
-<title>PhpDocumentor (deprecated web interface)</title>
-<META HTTP-EQUIV="Refresh" CONTENT="5; URL=docbuilder/"/>
-</head>
-<body>
-This PhpDocumentor web interface is deprecated...
-you will be redirected to the DocBuilder interface.
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/pear-phpdoc b/buildscripts/PhpDocumentor/pear-phpdoc
deleted file mode 100644
index 64858a40..00000000
--- a/buildscripts/PhpDocumentor/pear-phpdoc
+++ /dev/null
@@ -1,41 +0,0 @@
-#!@PHP-BIN@
-<?php
-/**
- * PHP auto documentor, like javadoc
- * If you get an error uses this as a shell script then its been dosified
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2007 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @copyright 2000-2007 Joshua Eichorn
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- */
-require "PhpDocumentor/phpDocumentor/phpdoc.inc";
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor.ini b/buildscripts/PhpDocumentor/phpDocumentor.ini
deleted file mode 100644
index c329b94d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor.ini
+++ /dev/null
@@ -1,119 +0,0 @@
-;; phpDocumentor.ini
-;;
-;; contains all the runtime values that are configurable.
-;; This is moved from phpdoc.inc, to remove the necessity to edit the php code and
-;; simplify debugging
-[DEBUG]
-;; If you want to see the internals of the parser in action, set this to true
-PHPDOCUMENTOR_DEBUG = false
-;; set to true if you want to eliminate extra whitespace in doc comments (slows things down quite a bit)
-PHPDOCUMENTOR_KILL_WHITESPACE = false
-
-[_phpDocumentor_options]
-memory_limit = 1024;
-;; this is the value that will be displayed as the root directory
-Program_Root =
-;; uncomment this to set the path phpDocumentor looks in to find user files
-;userdir = user/
-
-;; Use useconfig if you want to be able to run phpdoc with no command-line options (!!)
-;; change the value of useconfig to an .ini file that is in users/ (like greg.ini)
-;[_phpDocumentor_setting]
-;useconfig = default
-
-[_phpDocumentor_phpfile_exts]
-php
-php3
-php4
-phtml
-inc
-
-;; deprecated in 1.2
-;; this list is informational only - the following tags will be parsed as
-;; having meaning, everything else will be treated as text by the output
-;; converter, meaning in the HTML converter, all other tags will be htmlentitied
-;[_phpDocumentor_html_allowed]
-;ul
-;ol
-;li
-;p
-;strong
-;pre
-;a
-;code
-;br
-;var
-;samp
-;kbd
-
-[_phpDocumentor_tags_allowed]
-abstract
-access
-author
-category
-copyright
-;; for Zend IDE support - minimal at best
-desc
-deprec
-deprecated
-example
-exception
-filesource
-final
-global
-ignore
-internal
-license
-link
-magic
-name
-package
-param
-parameter
-return
-;; alias for @return
-returns
-see
-since
-source
-static
-staticvar
-subpackage
-throws
-todo
-TODO
-tutorial
-uses
-var
-version
-;; compat tags, things wont parse right in incorrectly documented code without them
-;; hopefully better error handling in handleDockeyword allows these to go away
-;; this is a dumb tag included for pear compatability see bug# 558028
-extends
-private
-public
-
-[_phpDocumentor_inline_doc_tags_allowed]
-example
-inheritdoc
-internal
-link
-source
-tutorial
-
-[_phpDocumentor_inline_tutorial_tags_allowed]
-category
-example
-id
-link
-toc
-tutorial
-
-;; custom files to include in RIC
-;; these MUST be in upper-case
-[_phpDocumentor_RIC_files]
-README
-INSTALL
-CHANGELOG
-FAQ
-NEWS
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Classes.inc b/buildscripts/PhpDocumentor/phpDocumentor/Classes.inc
deleted file mode 100755
index 6de944a5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Classes.inc
+++ /dev/null
@@ -1,1356 +0,0 @@
-<?php
-/**
- * Intermediate class parsing structure.
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2007 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: Classes.inc 243933 2007-10-10 01:18:25Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * 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.}}
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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:<pre>
- * array(
- * parent => array(
- * parentfile => array(
- * child => childfile
- * )
- * )
- * )</pre>
- * @var array
- */
- var $definitechild;
- /**
- * array of parsed classes organized by the name of the file that contains
- * the class.
- *
- * Format:<pre>
- * array(
- * filename => array(
- * classname => {@link parserClass}
- * )
- * )</pre>
- * @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:<pre>
- * array(
- * filename => array(
- * classname => array(
- * {@link parserVar} 1,
- * {@link parserVar} 2,
- * ...
- * )
- * )
- * )</pre>
- * @var array
- */
- var $varsbyfile = array();
- /**
- * array of parsed class constants organized by the file that contains them.
- *
- * Format:<pre>
- * array(
- * filename => array(
- * classname => array(
- * {@link parserConst} 1,
- * {@link parserConst} 2,
- * ...
- * )
- * )
- * )</pre>
- * @var array
- */
- var $constsbyfile = array();
- /**
- * keeps track of extend declarations by file, used to find inheritance
- *
- * Format:<pre>
- * array(
- * filename => array(
- * classname => parentclassname
- * )
- * )</pre>
- * @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:<pre>
- * array(
- * parentclassname => array(
- * filename => array(
- * childclassname => array(
- * packagename,
- * packagename
- * )
- * )
- * )
- * )</pre>
- * @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:<pre>
- * array(
- * filename => array(
- * packagename1,
- * packagename2,
- * ...
- * )
- * )</pre>
- * @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();
- /**
- * All classes with a parent that was not parsed are included in this array
- *
- * Format:<pre>
- * array(
- * classname => array(
- * name of file1 that contains root classname,
- * name of file2 that contains root classname,
- * ...
- * )
- * )</pre>
- * @var array
- */
- var $specialRoots = 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}
- *
- * @return void
- * @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}
- *
- * @return void
- */
- 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}
- *
- * @return void
- */
- 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}
- *
- * @return void
- */
- 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
- *
- * @return void
- */
- function nextFile($file)
- {
- $this->curfile = $file;
- $this->curclass = false;
- }
-
- /**
- * Mark a package as being used in a class
- *
- * {@source}
- *
- * @param string $package package name
- *
- * @return void
- */
- 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
- *
- * @return void
- * @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))) {
- // (for debugging)
- // 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 &$render the renderer object
- *
- * @return void
- * @uses processChild() set up inheritance
- * @todo CS Cleanup - rename to "inherit" for CamelCaps naming standard
- */
- 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}
- *
- * @return void
- * @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
- *
- * @param mixed $class the class name to search for
- *
- * @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()
- *
- * @param mixed $class the class
- * @param mixed $path the path
- *
- * @return void
- * @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
- * {@link 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 the renderer object
- * @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()}
- *
- * @return void
- * @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 key 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->specialRoots[$db->parent][] = array($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
- *
- * @param string $class classname
- * @param string $file file classname is located in
- *
- * @return parserClass
- */
- 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
- *
- * @param string $file file classname is located in
- * @param string $class classname
- *
- * @return bool
- * @access private
- */
- function hasMethods($file, $class)
- {
- return isset($this->methodsbyfile[$file][$class]);
- }
-
- /**
- * called by {@link parserClass::hasConsts()}.
- * Should not be directly called
- *
- * @param string $file file classname is located in
- * @param string $class classname
- *
- * @return bool
- * @access private
- */
- function hasConsts($file,$class)
- {
- return isset($this->constsbyfile[$file][$class]);
- }
-
- /**
- * called by {@link parserClass::hasVars()}. Should not be directly called
- *
- * @param string $file file classname is located in
- * @param string $class classname
- *
- * @return bool
- * @access private
- */
- function hasVars($file, $class)
- {
- return isset($this->varsbyfile[$file][$class]);
- }
-
- /**
- * called by {@link parserClass::hasMethod()}. Should not be directly called
- *
- * @param string $class classname
- * @param string $file file classname is located in
- * @param string $name method name
- *
- * @return bool
- * @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 $class classname
- * @param string $file file classname is located in
- * @param string $name var name
- *
- * @return bool
- * @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 $class classname
- * @param string $file file classname is located in
- * @param string $name constant name
- *
- * @return bool
- * @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
- *
- * @param string $class classname
- * @param string $file file classname is located in
- *
- * @return mixed
- * @access private
- */
- function &getMethods($class, $file)
- {
- if (!isset($this->methodsbyfile[$file][$class])) {
- $flag = false;
- return $flag;
- }
- return $this->methodsbyfile[$file][$class];
- }
-
- /**
- * called by {@link parserClass::getVars()}. Should not be directly called
- *
- * @param string $class classname
- * @param string $file file classname is located in
- *
- * @return mixed
- * @access private
- */
- function &getVars($class, $file)
- {
- if (!isset($this->varsbyfile[$file][$class])) {
- $flag = false;
- return $flag;
- }
- return $this->varsbyfile[$file][$class];
- }
-
- /**
- * called by {@link parserClass::getConsts()}. Should not be directly called
- *
- * @param string $class classname
- * @param string $file file classname is located in
- *
- * @return mixed
- * @access private
- */
- function &getConsts($class, $file)
- {
- if (!isset($this->constsbyfile[$file][$class])) {
- $flag = false;
- return $flag;
- }
- return $this->constsbyfile[$file][$class];
- }
-
- /**
- * called by {@link parserClass::getMethod()}. Should not be directly called
- *
- * @param string $class classname
- * @param string $file file classname is located in
- * @param string $name method name
- *
- * @return mixed
- * @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 classname
- * @param string $file file classname is located in
- * @param string $name var name
- *
- * @return mixed
- * @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 classname
- * @param string $file file classname is located in
- * @param string $name const name
- *
- * @return mixed
- * @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
- *
- * @param string $class classname
- * @param string $package package classname is in
- *
- * @return mixed returns false if no class in $package,
- * otherwise returns a {@link parserClass}
- */
- function &getClassByPackage($class, $package)
- {
- if (!isset($this->classesbynamefile[$class])) {
- // removed, too many warnings, not very useful
- // addWarning(PDERROR_CLASS_NOT_IN_PACKAGE,$class,$package);
-
- $flag = false;
- return $flag;
- }
- 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);
-
- $flag = false;
- return $flag;
- }
-
- /**
- * 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>
- *
- * @param string $class classname
- * @param string $file file classname is located in
- *
- * @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 {
- if (class_exists('ReflectionClass') && class_exists($ex)) {
- $r = new ReflectionClass($ex);
- if ($r->isInternal()) {
- return $ex; // no warning
- }
- }
- 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}
- *
- * @param boolean $all [since phpDocumentor 1.3.0RC6] determines whether to
- * return class trees that extend non-parsed classes
- *
- * @return array array(package => array(rootclassname, rootclassname,...),...)
- */
- function getRoots($all = false)
- {
- $roots = array();
- $temproots = $this->roots;
- if (!$all) {
- foreach ($this->specialRoots as $package => $root) {
- foreach ($root as $parent => $info) {
- $temproots[$info[0]][] = $info[1];
- }
- }
- }
- foreach ($temproots 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");
- }
- if ($all) {
- $specialRoots = array();
- foreach ($this->specialRoots as $parent => $classinfo) {
- if (count($classinfo)) {
- foreach ($classinfo as $i => $info) {
- $x = $this->getClass($info[0], $info[1]);
-
- $specialRoots[$x->getPackage()][$parent][] = $info[0];
- }
- }
- }
- foreach ($specialRoots as $package => $root) {
- uksort($specialRoots[$package], "strnatcasecmp");
- foreach ($specialRoots[$package] as $parent => $classes) {
- usort($specialRoots[$package][$parent], 'strnatcasecmp');
- }
- }
- return array('special' => $specialRoots, 'normal' => $roots);
- }
- return $roots;
- }
-
- /**
- * Get all classes confirmed in parsing
- * to be descended class $parclass in file $file
- *
- * @param string $parclass name of parent class
- * @param string $file file parent class is found in
- *
- * @return mixed either false if no children, or array of format
- * array(childname => childfile,childname2 => childfile2,...)
- * @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 100755
index 7f658189..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converter.inc
+++ /dev/null
@@ -1,5460 +0,0 @@
-<?php
-/**
- * Base class for all Converters
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package Converters
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: Converter.inc 287891 2009-08-30 08:08:00Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since 1.0rc1
- */
-/**
- * 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@php.net>
- * @since 1.0rc1
- * @version $Id: Converter.inc 287891 2009-08-30 08:08:00Z ashnazg $
- */
-class Converter
-{
- /**
- * This converter knows about the new root tree processing
- * In order to fix PEAR Bug #6389
- * @var boolean
- */
- var $processSpecialRoots = false;
- /**
- * 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;
-
- /**
- * Flag used to help converters determine whether to do special source highlighting
- * @var boolean
- */
- var $highlightingSource = false;
-
- /**
- * 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();
-
- /**
- * Directory where compiled templates go - will be deleted on exit
- *
- * @var string
- * @access private
- */
- var $_compiledDir = 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->processSpecialRoots);
- $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 Tutorial XML 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*/)
- {
- $this->highlightingSource = true;
- if (tokenizer_ext)
- {
- $e = $example;
- if (!is_array($example))
- {
- $obj = new phpDocumentorTWordParser;
- $obj->setup($example);
- $e = $obj->getFileSource();
- $bOpenTagFound = false;
- foreach ($e as $ke => $ee)
- {
- foreach ($ee as $kee => $eee)
- {
- if ((int) $e[$ke][$kee][0] == T_OPEN_TAG)
- {
- $bOpenTagFound = true;
- }
- }
- }
- if (!$bOpenTagFound) {
- $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);
- }
- $this->highlightingSource = false;
-
- 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)
- {
- $this->highlightingSource = true;
- $parse = new phpDocumentor_TutorialHighlightParser;
- $x = $parse->parse($example, $this);
- $this->highlightingSource = false;
- return $x;
- }
-
- /**
- * 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, strlen($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
- *
- * {@internal since file paths get stored with most/all slashes
- * set to forward slash '/', we need to doublecheck that
- * we're not given a backslashed path to search for...
- * if we are, it's likely that it was originally stored
- * with a forward slash. Further, I'm not convinced it's safe
- * to just check the {@link PHPDOCUMENTOR_WINDOWS} flag, so I'm checking
- * specifically for backslashes intead.}}
- *
- * @param string full path to the source code file
- * @return boolean
- */
- function hasSourceCode($path)
- {
- return isset($this->sourcePaths[$path]);
- if (strpos($path, '\\') > -1) {
- $modifiedPath = str_replace('\\', '/', $path);
- return isset($this->sourcePaths[$modifiedPath]);
- } else {
- 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,$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 = $this->_tutorial_path($tutorial,$tutorial,$tutorial);
- 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 = array(
- '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;
- }
- $subpackagename = ($subpkg->subpackage ? '/' . $subpkg->subpackage : '');
- return $pkg->package . $subpackagename . '/' . $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) {
- continue;
- }
-
- $child_path = $this->_tutorial_path($tutorial,$tutorial,$tutorial);
- if (isset($this->processed_tutorials[$child_path])) {
- continue;
- }
- $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) {
- continue;
- }
- $child_path = $this->_tutorial_path($parent,$parent,$tute);
- if (isset($this->processed_tutorials[$child_path])) {
- continue;
- }
- $this->processed_tutorials[$child_path] = $tute;
- if ($tute->name != $child . '.' . $parent->tutorial_type) {
- continue;
- }
- //echo "Adding [$child_path] to [$parent_path]<br>";
- $tree[$parent_path]['child'][$this->_tutorial_path($parent,$parent,$tute)]['tutorial']
- = $tute;
- if (!$tute->ini) {
- continue;
- }
- // 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('Converter', '_sortTodoPackage'));
- foreach ($r as $a => $sub) {
- if (is_array($this->todoList[$package][$a][1])) {
- usort($this->todoList[$package][$a][1],array('Converter', '_sortTodos'));
- }
- }
- }
- phpDocumentor_out("done\n");
- }
-
- /** @access private */
- function _sortTodoPackage($a, $b)
- {
- return strnatcasecmp($a[0]->name, $b[0]->name);
- }
-
- /** @access private */
- function _sortTodos($a, $b)
- {
- if (!is_object($a)) {
- var_dump($a);
- }
- return strnatcasecmp($a->getString(), $b->getString());
- }
-
- /**
- * 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)
- {
- if ($element->type != 'include') {
- $this->addTodoLink($this->addLink($element),$a);
- } else {
- addWarning(PDERROR_NOTODO_INCLUDE, $element->getLineNumber(),
- $element->getPath());
- }
- }
- }
- $startPositionOfElementName = 0; // which character of the element name actually starts its textual name
- 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);
- $startPositionOfElementName = 1; // lose the leading "$" character
- 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);
- $startPositionOfElementName = 1; // lose the leading "$" character
- $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);
- $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()),$startPositionOfElementName,1)][] = $element;
- $this->pkg_elements[$this->package][$this->subpackage][substr(strtolower($element->getFile()),$startPositionOfElementName,1)][] = $element;
- } else
- {
- $this->elements[substr(strtolower($element->getName()),$startPositionOfElementName,1)][] = $element;
- $this->pkg_elements[$this->package][$this->subpackage][substr(strtolower($element->getName()),$startPositionOfElementName,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>object 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') {
- $s = 'http://www.php.net/'.$a[1];
- return $s;
- }
- $s = &Converter::getLink($a[1],$a[0],array());
- return $s;
- }
- }
- $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);
- return $return;
- }
- // 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
- $flag = false;
- return $flag;
- }
-
- /**
- * 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
- $flag = false;
- return $flag;
- }
-
- /**
- * 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']);
- $this->class_data->assign( "prop_tags", $docblock['property_tags'] );
- 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 = $docblock['access'];
- } 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'],
- 'static' => $docblock['static'],
- 'abstract' => $docblock['abstract'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'see_tags' => $docblock['see_tags'],
- 'info_tags_sorted' => $docblock['info_tags_sorted'],
- '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),
- 'method_implements' => $this->getFormattedMethodImplements($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'],
- 'static' => $docblock['static'],
- 'abstract' => $docblock['abstract'],
- 'utags' => $docblock['utags'],
- 'tags' => $docblock['tags'],
- 'api_tags' => $docblock['api_tags'],
- 'info_tags' => $docblock['info_tags'],
- 'var_name' => $element->getName(),
- 'has_default' => strlen($element->getValue()),
- '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("hasclasses",$element->hasClasses());
- $this->page_data->assign("hasinterfaces",$element->hasInterfaces());
- $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' => $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",
- "property", "property-read", "property-write", "method",
- "staticvar", "usedby", "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);
- }
- $property_tags = array();
- foreach ( $element->docblock->properties as $prop_name => $val )
- {
- $a = $val->Convert( $this );
- if ( !empty( $a ) )
- {
- $tags[] = $api_tags[] = array( 'keyword' => $val->keyword ,
- 'data' => $val->converted_returnType . ' ' . $prop_name . ': ' . $a );
- $prop['prop_name'] = $prop_name;
- $prop['access'] = $val->keyword == 'property-read' ? 'read' :
- ( $val->keyword == 'property-write' ? 'write' : 'read/write' );
- $prop['prop_type'] = $val->converted_returnType;
- $prop['sdesc'] = $a;
- $property_tags[ $prop_name ] = $prop;
- }
- }
- ksort( $property_tags, SORT_STRING );
- $property_tags = array_values( $property_tags );
- $info_tags_sorted = array();
- $ret['static'] = false;
- foreach($tagses as $tag)
- {
- if (isset($names[$tag->keyword])) $tag->keyword = $names[$tag->keyword];
- if ($tag->keyword == 'static') {
- $ret['static'] = true;
- continue;
- }
- 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));
- @list( $className, $desc ) = explode( " ", $tag->Convert($this), 2 );
- $info_tags_sorted[ $tag->keyword ][] = array( 'keyword' => $className, 'data' => $desc );
- }
- }
- $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';
- $see_tags = array();
- foreach($tags as $tag)
- {
- if ($tag['keyword'] == 'access') {
- $ret['access'] = $tag['data'];
- }
- if ($tag['keyword'] == 'abstract') {
- $ret['abstract'] = true;
- }
- if ($tag['keyword'] == 'see' || $tag['keyword'] == 'uses' ||
- $tag['keyword'] == 'usedby') {
- $see_tags[] = $tag['data'];
- }
- }
- $ret['sdesc'] = $element->docblock->getSDesc($this);
- $ret['desc'] = $element->docblock->getDesc($this);
- $ret['tags'] = $tags;
- $ret['see_tags'] = $see_tags;
- $ret['info_tags_sorted'] = $info_tags_sorted;
- $ret['api_tags'] = $api_tags;
- $ret['info_tags'] = $info_tags;
- $ret['utags'] = $utags;
- $ret['property_tags'] = $property_tags;
- 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 (!empty($_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)
- {
- $link = $this->getLink($interface);
- if ($link && is_object($link)) {
- $ret[] = $this->returnSee($link);
- } else {
- if (class_exists('ReflectionClass')) {
- if (interface_exists($interface)) {
- $inter = new ReflectionClass($interface);
- if ($inter->isInternal()) {
- $ret[] = $interface . ' (internal interface)';
- } else {
- $ret[] = $interface;
- }
- }
- } else {
- $ret[] = $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);
- $name = method_exists($ovr, 'getFunctionCall') ? $ovr->getFunctionCall() : $ovr->getName();
- $link = ($link = $ovr->getLink($this)) ? $link : $ovr->getClass() . '::' . $name;
- return array('link' => $link,'sdesc' => $sdesc);
- }
-
- /**
- * Get the method this method(s) implemented from an interface, if any
- * @return array|false array('link'=>link to implemented method,
- * 'sdesc'=>short description
- * @uses parserMethod::getImplements()
- * @param parserMethod
- */
- function getFormattedMethodImplements(&$element)
- {
- $ovr = $element->getImplements($this);
- if (!$ovr) return false;
- $ret = array();
- foreach ($ovr as $impl) {
- $sdesc = $impl->docblock->getSDesc($this);
- $name = $impl->getName();
- $link = ($link = $impl->getLink($this)) ? $link : $impl->getClass() . '::' . $name;
- $ret[] = array('link' => $link,'sdesc' => $sdesc);
- }
- return $ret;
- }
-
- /**
- * 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 var
- * @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);
- if ($par) {
- $package = $par->docblock->package;
- }
- usort($vars,array($this,"sortVar"));
- $result['parent_class'] = $this->getClassLink($parent, $package);
- if (!$result['parent_class']) {
- $result['parent_class'] = $parent . ' (Internal Class)';
- }
- 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);
- if (!$info['link']) {
- $info['link'] = $info['name'];
- }
- $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);
- if ($par) {
- $package = $par->docblock->package;
- }
- usort($methods,array($this,"sortMethod"));
- $result['parent_class'] = $this->getClassLink($parent,$package);
- if (!$result['parent_class']) {
- $result['parent_class'] = $parent . ' (Internal Class)';
- }
- 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;
- $returntype = 'void';
- if ($method->isConstructor) {
- $returntype = $method->getClass();
- }
- if ($method->docblock->return) {
- $a = $method->docblock->return->Convert($this);
- $returntype = $method->docblock->return->converted_returnType;
- }
- $info['function_return'] = $returntype;
- $info['static'] = isset ($method->docblock->tags['static'][0]);
- $info['link'] = $method->getLink($this);
- if (!$info['link']) {
- $info['link'] = $method->getFunctionCall();
- }
- $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);
- if ($par) {
- $package = $par->docblock->package;
- }
- usort($vars,array($this,"sortVar"));
- $result['parent_class'] = $this->getClassLink($parent,$package);
- if (!$result['parent_class']) {
- $result['parent_class'] = $parent . ' (Internal Class)';
- }
- 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);
- if (!$info['link']) {
- $info['link'] = $info['name'] . ' = ' . $var->getValue();
- }
- $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');
- $templatename = get_class($this) . $this->templateName;
- if (!file_exists($this->targetDir . DIRECTORY_SEPARATOR . md5($templatename))) {
- // we'll delete this on finishing conversion
- $this->_compiledDir[$this->targetDir . DIRECTORY_SEPARATOR . md5($templatename)] = 1;
- mkdir($this->targetDir . DIRECTORY_SEPARATOR . md5($templatename),0775);
- }
- $templ->compile_dir = realpath($this->targetDir . PATH_DELIMITER . md5($templatename));
- $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;
- }
-
- /**
- * Finish up parsing/cleanup directories
- */
- function cleanup()
- {
- foreach ($this->_compiledDir as $dir => $one) {
- $this->_rmdir($dir);
- }
- }
-
- /**
- * Completely remove a directory and its contents
- *
- * @param string $directory
- */
- function _rmdir($directory)
- {
- $handle = @opendir($directory);
- if ($handle) {
- while (false !== ($file = readdir($handle))) {
- if ($file == '.' || $file == '..') {
- continue;
- }
- if (is_dir($directory . DIRECTORY_SEPARATOR . $file)) {
- $this->_rmdir($directory . DIRECTORY_SEPARATOR . $file);
- }
- @unlink($directory . DIRECTORY_SEPARATOR . $file);
- }
- closedir($handle);
- @rmdir($directory);
- }
- }
-
- /**
- * 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 ('@DATA-DIR@' != '@' . 'DATA-DIR@') {
- 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([^(]*)((?:.|\r|\n)*)/',$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) .
- $this->postProcess($newval[2]);
- }
- return $value;
- }
- return $this->postProcess($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
- *
- * As of 1.3.0RC6, this also sets the compiled templates directory inside
- * the target directory
- * @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);
- } elseif (!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 100755
index e5ad8172..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc
+++ /dev/null
@@ -1,1899 +0,0 @@
-<?php
-/**
- * CHM (Compiled Help Manual) output converter for Smarty Template.
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2003-2006 Andrew Eddie, Greg Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package Converters
- * @subpackage CHMdefault
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2000-2006 Joshua Eichorn, Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: CHMdefaultConverter.inc 234145 2007-04-19 20:20:57Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- */
-/**
- * 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@php.net>
- * @since 1.0rc1
- * @version $Revision: 234145 $
- */
-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)
- {
- return $this->returnLink('{$subdir}__filesource/' .
- $this->getFileSourceName($path).'.html','Source Code for this file');
- }
-
- /**
- * 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('{$subdir}__filesource/' .
- $this->getFileSourceName($sourcefile) . '.html#a' . $anchor, $text);
- } else {
- return '<a name="a'.$anchor.'"></a>';
- }
- }
-
-
- /**
- * 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><div class="src-line">' . $this->getSourceAnchor($path, $linenumber) .
- str_replace("\n",'',$line) . $extra .
- "</div></li>\n";
- } else
- {
- return '<li><div class="src-line">' . str_replace("\n",'',$line) .
- "$extra</div></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 $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'];
- }
-
- function getCurrentPageLink()
- {
- return $this->curname . '.html';
- }
-
- /**
- * Uses htmlspecialchars() on the input
- */
- function postProcess($text)
- {
- if ($this->highlightingSource) {
- return str_replace(array(' ',"\t"), array('&nbsp;', '&nbsp;&nbsp;&nbsp;'),
- htmlspecialchars($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 (!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;
- }
- }
-
- 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['normal'][$package]) &&
- !isset($this->roots['special'][$package])) {
- return array();
- }
- $trees = array();
- if (isset($this->roots['normal'][$package])) {
- $roots = $this->roots['normal'][$package];
- for($i=0;$i<count($roots);$i++)
- {
- $root = $this->classes->getClassByPackage($roots[$i], $package);
- if ($root && $root->isInterface()) {
- continue;
- }
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- }
- if (isset($this->roots['special'][$package])) {
- $roots = $this->roots['special'][$package];
- foreach ($roots as $parent => $classes) {
- $thistree = '';
- foreach ($classes as $classinfo) {
- $root = $this->classes->getClassByPackage($classinfo, $package);
- if ($root && $root->isInterface()) {
- continue;
- }
- $thistree .=
- $this->getRootTree(
- $this->getSortedClassTreeFromClass(
- $classinfo,
- $package,
- ''),
- $package,
- true);
- }
- if (!$thistree) {
- continue;
- }
- $trees[] = array(
- 'class' => $parent,
- 'class_tree' => "<ul>\n" . $thistree . "</ul>\n"
- );
- }
- }
- return $trees;
- }
-
- /**
- * returns a template-enabled array of interface inheritance trees
- *
- * @param string $package package to generate a class tree for
- * @see $roots, HTMLConverter::getRootTree()
- */
- function generateFormattedInterfaceTrees($package)
- {
- if (!isset($this->roots['normal'][$package]) &&
- !isset($this->roots['special'][$package])) {
- return array();
- }
- $trees = array();
- if (isset($this->roots['normal'][$package])) {
- $roots = $this->roots['normal'][$package];
- for($i=0;$i<count($roots);$i++)
- {
- $root = $this->classes->getClassByPackage($roots[$i], $package);
- if ($root && !$root->isInterface()) {
- continue;
- }
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- }
- if (isset($this->roots['special'][$package])) {
- $roots = $this->roots['special'][$package];
- foreach ($roots as $parent => $classes) {
- $thistree = '';
- foreach ($classes as $classinfo) {
- $root = $this->classes->getClassByPackage($classinfo, $package);
- if ($root && !$root->isInterface()) {
- continue;
- }
- $thistree .=
- $this->getRootTree(
- $this->getSortedClassTreeFromClass(
- $classinfo,
- $package,
- ''),
- $package,
- true);
- }
- if (!$thistree) {
- continue;
- }
- $trees[] = array(
- 'class' => $parent,
- 'class_tree' => "<ul>\n" . $thistree . "</ul>\n"
- );
- }
- }
- return $trees;
- }
-
- /**
- * return formatted class tree for the Class Trees page
- *
- * @param array $tree output from {@link getSortedClassTreeFromClass()}
- * @param string $package package
- * @param boolean $nounknownparent if true, an object's parent will not be checked
- * @see Classes::$definitechild, generateFormattedClassTrees()
- * @return string
- */
- function getRootTree($tree, $package, $noparent = false)
- {
- if (!$tree) return '';
- $my_tree = '';
- $cur = '#root';
- $lastcur = array(false);
- $kids = array();
- $dopar = false;
- if (!$noparent && $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 = '')
- {
- $versionControlDirectories = array ('CVS', 'media/CVS', 'media\\CVS', '.svn', 'media/.svn', 'media\\.svn');
- if (!is_array($media)) {
- return;
- }
- foreach($media as $dir => $files)
- {
- if ($dir === '/')
- {
- $this->copyMediaRecursively($files,$targetdir);
- } else
- {
- if (!is_numeric($dir))
- {
- if (in_array($dir, $versionControlDirectories))
- {
- // skip it entirely
- }
- else
- {
- // create the subdir
- phpDocumentor_out("creating $targetdir" . PATH_DELIMITER . "$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" . PATH_DELIMITER . $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 => $types)
- {
- $comp_types = '';
- foreach($types as $type => $files)
- {
- $comp = '';
- $templ1 = &$this->newSmarty();
- $templ1->assign('entry', array());
- 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';
- $this->TOC[$package][$subpackage][$sub][] = 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 100755
index cae1952d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/options.ini
+++ /dev/null
@@ -1,507 +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_ABSTRACT = <font color="blue">
-/T_ABSTRACT = </font>
-T_CLONE = <font color="blue">
-/T_CLONE = </font>
-T_HALT_COMPILER = <font color="red">
-/T_HALT_COMPILER = </font>
-T_PUBLIC = <font color="blue">
-/T_PUBLIC = </font>
-T_PRIVATE = <font color="blue">
-/T_PRIVATE = </font>
-T_PROTECTED = <font color="blue">
-/T_PROTECTED = </font>
-T_FINAL = <font color="blue">
-/T_FINAL = </font>
-T_IMPLEMENTS = <font color="blue">
-/T_IMPLEMENTS = </font>
-T_CLASS = <font color="blue">
-/T_CLASS = </font>
-T_INTERFACE = <font color="blue">
-/T_INTERFACE = </font>
-T_INCLUDE = <font color="blue">
-/T_INCLUDE = </font>
-T_INCLUDE_ONCE = <font color="blue">
-/T_INCLUDE_ONCE = </font>
-T_REQUIRE_ONCE = <font color="blue">
-/T_REQUIRE_ONCE = </font>
-T_FUNCTION = <font color="blue">
-/T_FUNCTION = </font>
-T_VARIABLE = <strong>
-/T_VARIABLE = </strong>
-T_CONSTANT_ENCAPSED_STRING = <font color="#66cccc">
-/T_CONSTANT_ENCAPSED_STRING = </font>
-T_COMMENT = <font color="green">
-/T_COMMENT = </font>
-T_OBJECT_OPERATOR = <strong>
-/T_OBJECT_OPERATOR = </strong>
-T_RETURN = <font color="blue">
-/T_RETURN = </font>
-T_STATIC = <font color="blue">
-/T_STATIC = </font>
-T_SWITCH = <font color="blue">
-/T_SWITCH = </font>
-T_IF = <font color="blue">
-/T_IF = </font>
-T_FOREACH = <font color="blue">
-/T_FOREACH = </font>
-T_FOR = <font color="blue">
-/T_FOR = </font>
-T_VAR = <font color="blue">
-/T_VAR = </font>
-T_EXTENDS = <font color="blue">
-/T_EXTENDS = </font>
-T_RETURN = <font color="blue">
-/T_RETURN = </font>
-T_GLOBAL = <font color="blue">
-/T_GLOBAL = </font>
-T_DOUBLE_COLON = <strong>
-/T_DOUBLE_COLON = </strong>
-T_OBJECT_OPERATOR = <strong>
-/T_OBJECT_OPERATOR = </strong>
-T_OPEN_TAG = <strong>
-/T_OPEN_TAG = </strong>
-T_CLOSE_TAG = <strong>
-/T_CLOSE_TAG = </strong>
-
-[highlightSource]
-;; this is for highlighting things that aren't tokens like "&"
-;; format:
-;; word = open
-;; /word = close
-@ = <strong>
-/@ = </strong>
-& = <strong>
-/& = </strong>
-[ = <strong>
-/[ = </strong>
-] = <strong>
-/] = </strong>
-! = <strong>
-/! = </strong>
-";" = <strong>
-/; = </strong>
-( = <strong>
-/( = </strong>
-) = <strong>
-/) = </strong>
-, = <strong>
-/, = </strong>
-{ = <strong>
-/{ = </strong>
-} = <strong>
-/} = </strong>
-""" = <font color="#66cccc">
-/" = </font>
-
-[highlightDocBlockSourceTokens]
-;; this is for docblock tokens, using by phpDocumentor_HighlightParser
-;; tagphptype is for "string" in @param string description, for example
-docblock = <font color="#009999">
-/docblock = </font>
-tagphptype = <em>
-/tagphptype = </em>
-tagvarname = <strong>
-/tagvarname = </strong>
-coretag = <strong><font color = "#0099FF">
-/coretag = </font></strong>
-tag = <strong><font color="#009999">
-/tag = </font></strong>
-inlinetag = <em><font color="#0099FF">
-/inlinetag = </font></em>
-internal = <em><font color = "#6699cc">
-/internal = </font></em>
-closetemplate = <strong><font color="blue">
-/closetemplate = </font></strong>
-docblocktemplate = <font color="blue">
-/docblocktemplate = </font color="blue">
-
-[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 =
-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
-;;
-;; 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 = <font size="-1"><strong>by <em>
-/author = </em></strong></font>
-author! = 0
-
-authorblurb = blockquote
-
-authorgroup = <strong>Authors:</strong><br />
-/authorgroup =
-authorgroup! = 0
-
-caution = <table border="1"><th align="center">Caution</th><tr><td>
-/caution = </td></tr></table>
-caution! = 0
-
-command = <b class="cmd">
-/command = </b>
-
-cmdsynopsis = <div id="cmdsynopsis">
-/cmdsynopsis = </div>
-
-copyright = <em>
-/copyright = </em><br />
-
-emphasis = strong
-
-example = <table class="example" width="100%" border="1"><tr><td>
-/example = </td></tr></table>
-example! = 0
-
-function =
-/function = ()
-
-formalpara = p
-
-graphic = img
-graphic->fileref = src
-graphic/ =
-
-important = u
-
-informalequation = blockquote
-
-informalexample = pre
-
-inlineequation = em
-
-itemizedlist = ul
-
-listitem = li
-
-literal = code
-
-literallayout = pre
-
-option = " "
-/option =
-
-orderedlist = ol
-
-para = p
-
-programlisting = <table border="0" bgcolor="#E0E0E0" cellpadding="5"><tr><td><div class="src-code">
-/programlisting = </div></td></tr></table>
-programlisting! = 0
-
-refentry = div
-
-refnamediv = <div class="refname">
-/refnamediv = </div>
-refnamediv! = 0
-
-refname = h1
-
-refpurpose = <h2 class="refpurpose"><em>
-/refpurpose = </em></h2>
-
-refsynopsisdiv = <div class="refsynopsis">
-/refsynopsisdiv = </div>
-refsynopsisdiv! = 0
-
-refsect1 = span
-
-refsect2 =
-/refsect2 = <hr />
-
-refsect3 =
-/refsect3 = <br />
-
-releaseinfo = (
-/releaseinfo = )<br />
-
-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 = <table border="1"><tr><td>
-/warning = </td></tr></table>
-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" align="center">
-close = </h1>
-
-[refsect1_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h2 class="title" align="center">
-close = </h1>
-
-[refsect2_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h2 class="title" align="center">
-close = </h2>
-
-[refsect3_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h3 class="title" align="center">
-close = </h3>
-
-[para_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <strong class="title" align="center">
-close = </strong>
-
-[formalpara_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <strong class="title" align="center">
-close = </strong>
-
-[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/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl
deleted file mode 100755
index 29a27593..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/basicindex.tpl
+++ /dev/null
@@ -1,21 +0,0 @@
-{section name=letter loop=$letters}
- <a href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a>
-{/section}
-<table>
-{section name=index loop=$index}
-<tr><td colspan = "2"><a name="{$index[index].letter}">&nbsp; </a>
-<a href="#top">top</a><br>
-<TABLE CELLPADDING='3' CELLSPACING='0' WIDTH='100%' CLASS="border">
- <TR CLASS='TableHeadingColor'>
- <TD>
- <FONT SIZE='+2'><B>{$index[index].letter}</B></FONT>
- </TD>
- </TR>
-</TABLE>
-</td></tr>
- {section name=contents loop=$index[index].index}
- <tr><td><b>{$index[index].index[contents].name}</b></td><td width="100%" align="left" valign="top">{$index[index].index[contents].listing}</td></tr>
- {/section}
-{/section}
-</table>
-
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 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/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/CHM/default/templates/default/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl
deleted file mode 100755
index 93cd4f27..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/class.tpl
+++ /dev/null
@@ -1,94 +0,0 @@
-{include file="header.tpl" eltype="class" hasel=true contents=$classcontents}
-<!-- Start of Class Data -->
-<H3>
- <SPAN class="type">{if $is_interface}Interface{else}Class{/if}</SPAN> {$class_name}
- <HR>
-</H3>
-[line <span class="linenumber">{if $class_slink}{$class_slink}{else}{$line_number}{/if}</span>]<br />
-<pre>
-{section name=tree loop=$class_tree.classes}{$class_tree.classes[tree]}{$class_tree.distance[tree]}{/section}
-</pre>
-{if $tutorial}
-<div class="maintutorial">Class Tutorial: {$tutorial}</div>
-{/if}
-{if $children}
-<SPAN class="type">Classes extended from {$class_name}:</SPAN>
- {section name=kids loop=$children}
- <dl>
- <dt>{$children[kids].link}</dt>
- <dd>{$children[kids].sdesc}</dd>
- </dl>
- {/section}</p>
-{/if}
-{if $conflicts.conflict_type}<p class="warning">Conflicts with classes:<br />
- {section name=me loop=$conflicts.conflicts}
- {$conflicts.conflicts[me]}<br />
- {/section}
-<p>
-{/if}
-<SPAN class="type">Location:</SPAN> {$source_location}
-<hr>
-{include file="docblock.tpl" type="class" sdesc=$sdesc desc=$desc}
-<hr>
-{include file="var.tpl" show="summary"}
-<hr>
-{include file="const.tpl" show="summary"}
-<hr>
-<!-- =========== INHERITED CONST SUMMARY =========== -->
-<A NAME='inheritedconst_summary'><!-- --></A>
-<H3>Inherited Class Constant Summary</H3>
-
-{section name=iconsts loop=$iconsts}
-<H4>Inherited From Class {$iconsts[iconsts].parent_class}</H4>
-<UL>
- {section name=iconsts2 loop=$iconsts[iconsts].iconsts}
- <!-- =========== Summary =========== -->
- <LI><CODE>{$iconsts[iconsts].iconsts[iconsts2].link}</CODE> = <CODE class="varsummarydefault">{$iconsts[iconsts].iconsts[iconsts2].value}</CODE>
- <BR>
- {$iconsts[iconsts].iconsts[iconsts2].sdesc}
- {/section}
- </LI>
-</UL>
-{/section}
-<hr>
-<!-- =========== INHERITED VAR SUMMARY =========== -->
-<A NAME='inheritedvar_summary'><!-- --></A>
-<H3>Inherited Class Variable Summary</H3>
-
-{section name=ivars loop=$ivars}
-<H4>Inherited From Class {$ivars[ivars].parent_class}</H4>
-<UL>
- {section name=ivars2 loop=$ivars[ivars].ivars}
- <!-- =========== Summary =========== -->
- <LI><CODE>{$ivars[ivars].ivars[ivars2].link}</CODE> = <CODE class="varsummarydefault">{$ivars[ivars].ivars[ivars2].default}</CODE>
- <BR>
- {$ivars[ivars].ivars[ivars2].sdesc}
- {/section}
- </LI>
-</UL>
-{/section}
-
-<hr>
-{include file="method.tpl" show="summary"}
-<!-- =========== INHERITED METHOD SUMMARY =========== -->
-<A NAME='methods_inherited'><!-- --></A>
-<H3>Inherited Method Summary</H3>
-
-{section name=imethods loop=$imethods}
-<H4>Inherited From Class {$imethods[imethods].parent_class}</h4>
-<UL>
- {section name=im2 loop=$imethods[imethods].imethods}
- <!-- =========== Summary =========== -->
- <LI><CODE>{$imethods[imethods].imethods[im2].link}</CODE><br>
- {$imethods[imethods].imethods[im2].sdesc}
- {/section}
-</UL>
-{/section}
-<hr>
-{include file="method.tpl"}
-<hr>
-{include file="var.tpl"}
-<hr>
-{include file="const.tpl"}
-<hr>
-{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 100755
index 65d60118..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classleft.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{foreach key=subpackage item=files from=$classleftindex}
- {if $subpackage != ""}<b>{$subpackage}</b><br>{/if}
- {section name=files loop=$files}
- {if $files[files].link != ''}<a href="{ldelim}$subdir{rdelim}{$files[files].link}">{/if}
- {$files[files].title}
- {if $files[files].link != ''}</a>{/if}<br>
- {/section}
-{/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 100755
index 6308aba9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/classtrees.tpl
+++ /dev/null
@@ -1,12 +0,0 @@
-{capture name="title"}Class Trees for Package {$package}{/capture}
-{include file="header.tpl" title=$smarty.capture.title}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{section name=classtrees loop=$classtrees}
-<SPAN class="code">Root class {$classtrees[classtrees].class}</SPAN>
-<code class="vardefaultsummary">{$classtrees[classtrees].class_tree}</code>
-{/section}
-{include file="footer.tpl"} \ No newline at end of file
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 720a71b5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/const.tpl
+++ /dev/null
@@ -1,29 +0,0 @@
-{if $show=="summary"}
-<!-- =========== CONST SUMMARY =========== -->
-<A NAME='const_summary'><!-- --></A>
-<H3>Class Constant Summary</H3>
-
-<UL>
- {section name=consts loop=$consts}
- <!-- =========== Summary =========== -->
- <LI><CODE><a href="{$consts[consts].id}">{$consts[consts].const_name}</a></CODE> = <CODE class="varsummarydefault">{$consts[consts].const_value|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</CODE>
- <BR>
- {$consts[consts].sdesc}
- {/section}
-</UL>
-{else}
-<!-- ============ VARIABLE DETAIL =========== -->
-
-<A NAME='variable_detail'></A>
-
-<H3>Class Constant Detail</H3>
-
-<UL>
-{section name=consts loop=$consts}
-<A NAME="{$consts[consts].const_dest}"><!-- --></A>
-<LI><SPAN class="code">{$consts[consts].const_name}</SPAN> = <CODE class="varsummarydefault">{$consts[consts].const_value|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</CODE> [line <span class="linenumber">{if $consts[consts].slink}{$consts[consts].slink}{else}{$consts[consts].line_number}{/if}</span>]</LI>
-{include file="docblock.tpl" sdesc=$consts[consts].sdesc desc=$consts[consts].desc tags=$consts[consts].tags}
-<BR>
-{/section}
-</UL>
-{/if} \ No newline at end of file
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 100755
index 44938319..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/contents.hhc.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<meta name="GENERATOR" content="phpDocumentor version {$phpdocversion}">
-<!-- Sitemap 1.0 -->
-</HEAD><BODY>
-<OBJECT type="text/site properties">
- <param name="ImageType" value="Folder">
-</OBJECT>
-{$toc}
-</BODY></HTML>
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 100755
index 4a3a64e9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/define.tpl
+++ /dev/null
@@ -1,33 +0,0 @@
-{if $summary}
-<!-- =========== CONSTANT SUMMARY =========== -->
-<A NAME='constant_summary'><!-- --></A>
-<H3>Constant Summary</H3>
-
-<UL>
- {section name=def loop=$defines}
- <LI><CODE><A HREF="{$defines[def].id}">{$defines[def].define_name}</A></CODE> = <CODE class="varsummarydefault">{$defines[def].define_value}</CODE>
- <BR>{$defines[def].sdesc}
- {/section}
-</UL>
-{else}
-<!-- ============ CONSTANT DETAIL =========== -->
-
-<A NAME='constant_detail'></A>
-<H3>Constant Detail</H3>
-
-<UL>
- {section name=def loop=$defines}
- <A NAME="{$defines[def].define_link}"><!-- --></A>
- <LI><SPAN class="code">{$defines[def].define_name}</SPAN> = <CODE class="varsummarydefault">{$defines[def].define_value}</CODE> [line <span class="linenumber">{if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}</span>]<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}
-<BR><BR>
- {include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags}
- {/section}
-</UL>
-{/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 100755
index ef621b9b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/docblock.tpl
+++ /dev/null
@@ -1,31 +0,0 @@
-<!-- ========== Info from phpDoc block ========= -->
-{if $function}
- {if $params}
- <p class="label"><b>Parameters</b></p>
- {section name=params loop=$params}
- <p class=dt><i>{$params[params].var}</i></p>
- <p class=indent>{$params[params].data}</p>
- {/section}
- {/if}
-{/if}
-{section name=tags loop=$tags}
-{if $tags[tags].keyword == 'return'}
- <p class="label"><b>Returns</b></p>
- <p class=indent>{$tags[tags].data}</p>
-{/if}
-{/section}
-{if $sdesc || $desc}
-<p class="label"><b>Remarks</b></p>
-{/if}
-{if $sdesc}
-<p>{$sdesc}</p>
-{/if}
-{if $desc}
-<p>{$desc}</p>
-{/if}
-{section name=tags loop=$tags}
-{if $tags[tags].keyword != 'return'}
- <p class="label"><b>{$tags[tags].keyword}</b></p>
- <p class=indent>{$tags[tags].data}</p>
-{/if}
-{/section} \ 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 100755
index 755f33c7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/elementindex.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<a name="top"></a>
-<h1>Index of All Elements</h1>
-<b>Indexes by package:</b><br>
-{section name=p loop=$packageindex}
-<a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a><br>
-{/section}<br>
-{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 100755
index 0f526584..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/fileleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl
deleted file mode 100755
index 45bcf945..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/fileleft.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{foreach key=subpackage item=files from=$fileleftindex}
- {if $subpackage != ""}subpackage <b>{$subpackage}</b><br>{/if}
- {section name=files loop=$files}
- {if $files[files].link != ''}<a href="{ldelim}$subdir{rdelim}{$files[files].link}">{/if}
- {$files[files].title}
- {if $files[files].link != ''}</a>{/if}<br>
- {/section}
-{/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 100755
index 55c826b9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/filesource.tpl
+++ /dev/null
@@ -1,6 +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>
-{$source}
-{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 100755
index 157bb1cd..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/footer.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{if !$index}
- <div id="credit">
- <hr>
- Documentation generated on {$date} by <a href="{$phpdocwebsite}" target="_blank">phpDocumentor {$phpdocversion}</a>
- </div>
-{/if}
-</body>
-</html>
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 100755
index 895e8ab4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/function.tpl
+++ /dev/null
@@ -1,44 +0,0 @@
-{if $summary}
-<!-- =========== FUNCTION SUMMARY =========== -->
-<A NAME='function_summary'><!-- --></A>
-<H3>Function Summary</H3>
-
-<UL>
- {section name=func loop=$functions}
- <!-- =========== Summary =========== -->
- <LI><CODE><A HREF="{$functions[func].id}">{$functions[func].function_return} {$functions[func].function_name}()</A></CODE>
- <BR>{$functions[func].sdesc}
- {/section}
-</UL>
-{else}
-<!-- ============ FUNCTION DETAIL =========== -->
-
-<A NAME='function_detail'></A>
-<H3>Function Detail</H3>
-
-<UL>
-{section name=func loop=$functions}
-<A NAME="{$functions[func].function_dest}"><!-- --></A>
-
-<LI><SPAN class="code">{$functions[func].function_return} {$functions[func].function_name}()</SPAN> [line <span class="linenumber">{if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}</span>]<br />
-<BR><BR>
-<SPAN class="type">Usage:</SPAN> <SPAN class="code">{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].hasdefault}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].hasdefault} = {$functions[func].ifunction_call.params[params].default|escape:"html"}]{/if}
-{/section}
-{/if})</SPAN>
-<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}
-{include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags params=$functions[func].params function=true}
-<BR>
-<p class="top">[ <a href="#top">Top</a> ]</p>
-{/section}
-</UL>
-{/if} \ No newline at end of file
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 100755
index 113a67ab..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/global.tpl
+++ /dev/null
@@ -1,32 +0,0 @@
-{if $summary}
-<!-- =========== GLOBAL VARIABLE SUMMARY =========== -->
-<A NAME='global_summary'><!-- --></A>
-<H3>Global Variable Summary</H3>
-
-<UL>
- {section name=glob loop=$globals}
- <LI><CODE><A HREF="{$globals[glob].id}">{$globals[glob].global_name}</A></CODE> = <CODE class="varsummarydefault">{$globals[glob].global_value}</CODE>
- <BR>{$globals[glob].sdesc}
- {/section}
-</UL>
-
-{else}
-<!-- ============ GLOBAL VARIABLE DETAIL =========== -->
-
-<A NAME='global_detail'></A>
-<H3>Global Variable Detail</H3>
-
-<UL>
- {section name=glob loop=$globals}
- <A NAME="{$globals[glob].global_link}"><!-- --></A>
- <LI><i>{$globals[glob].global_type}</i> <SPAN class="code">{$globals[glob].global_name}</SPAN> = <CODE class="varsummarydefault">{$globals[glob].global_value}</CODE> [line <span class="linenumber">{if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}</span>]<br />
- {if $globals[glob].global_conflicts.conflict_type}
- <p><b>Conflicts with globals:</b>
- {section name=me loop=$globals[glob].global_conflicts.conflicts}
- {$globals[glob].global_conflicts.conflicts[me]}<br />
- {/section}
- {/if}<BR><BR>
- {include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags}
- {/section}
-</UL>
-{/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 100755
index 30fad6bb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/header.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
- IE 6 makes the page to wide with the following doctype. I accept
- standards if they help me, not if they make anything even harder!
-//-->
-<!--<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN' 'http://www.w3.org/TR/REC-html40/loose.dtd'>//-->
-<!--NewPage-->
-<HTML>
-<HEAD>
- <!-- Generated by PhpDoc date: '{$date}' -->
- <TITLE>{$title}</TITLE>
-<LINK REL ='stylesheet' TYPE='text/css' HREF='{$subdir}media/stylesheet.css' TITLE='Style'>
-{if $bgleft}
-<STYLE type="text/css"><!--
- BODY {ldelim}
- background-image : url("{$subdir}media/bg_left.png");
- background-repeat : repeat-y;
- {rdelim}
-//--></STYLE>
-{/if}
-</HEAD>
-<BODY {if !$bgleft}BGCOLOR='white'{/if}>
-<a name="top"><!-- --></a> \ No newline at end of file
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 100755
index c82846a8..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)
-Title={$maintitle}
-
-[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 100755
index db76e4dc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/include.tpl
+++ /dev/null
@@ -1,26 +0,0 @@
-{if $summary}
-<!-- =========== INCLUDE SUMMARY =========== -->
-<A NAME='include_summary'><!-- --></A>
-<H3>Include Statements Summary</H3>
-
-<UL>
- {section name=includes loop=$includes}
- <LI><CODE><A HREF="#{$includes[includes].include_file}">{$includes[includes].include_name}</A></CODE> = <CODE class="varsummarydefault">{$includes[includes].include_value}</CODE>
- <BR>{$includes[includes].sdesc}
- {/section}
-</UL>
-{else}
-<!-- ============ INCLUDE DETAIL =========== -->
-
-<A NAME='include_detail'></A>
-<H3>Include Statements Detail</H3>
-
-<UL>
- {section name=includes loop=$includes}
- <A NAME="{$includes[includes].include_file}"><!-- --></A>
- <LI><SPAN class="code">{$includes[includes].include_name} file:</SPAN> = <CODE class="varsummarydefault">{$includes[includes].include_value}</CODE> [line <span class="linenumber">{if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}</span>]<br />
- <BR><BR>
- {include file="docblock.tpl" sdesc=$includes[includes].sdesc desc=$includes[includes].desc tags=$includes[includes].tags}
- {/section}
-</UL>
-{/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 100755
index 94cbd18e..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 100755
index 4e053097..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/index.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
- <!-- Generated by PhpDoc on {$date} -->
- <TITLE>{$title}</TITLE>
-</HEAD>
-<FRAMESET cols='220,*'>
-{if $package_count > 1}
- <FRAMESET rows='220,*'>
- <FRAME src='packages.html' name='left_top'>
-{/if}
- <FRAME src='{$start}' name='left_bottom'>
-{if $package_count > 1}
- </FRAMESET>
-{/if}
- <FRAME src='{$blank}.html' name='right'>
- <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/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 100755
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/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css
deleted file mode 100755
index aa245bfa..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/media/stylesheet.css
+++ /dev/null
@@ -1,130 +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 }
-.src-code { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
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 100755
index 4816c4f9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/method.tpl
+++ /dev/null
@@ -1,126 +0,0 @@
-{if $show == 'summary'}
-<!-- =========== METHOD SUMMARY =========== -->
-<A NAME='method_summary'><!-- --></A>
-<H3>Method Summary</H3>
-
-<UL>
- {section name=methods loop=$methods}
- {if $methods[methods].static}
- <!-- =========== Summary =========== -->
- <LI><CODE>static <A HREF='{$methods[methods].id}'>{$methods[methods].function_return} {$methods[methods].function_name}()</A></CODE>
- <BR>{$methods[methods].sdesc}
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if $methods[methods].static}
- <!-- =========== Summary =========== -->
- <LI><CODE><A HREF='{$methods[methods].id}'>{$methods[methods].function_return} {$methods[methods].function_name}()</A></CODE>
- <BR>{$methods[methods].sdesc}
- {/if}
- {/section}
-</UL>
-
-{else}
-<!-- ============ METHOD DETAIL =========== -->
-
-<A NAME='method_detail'></A>
-<H3>Method Detail</H3>
-
-<UL>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<A NAME='{$methods[methods].method_dest}'><!-- --></A>
-
-<h1><A name="{$methods[methods].function_name}"></A>static {$class_name}::{$methods[methods].function_name}</h1>
-
-<p class=method>
-<b>static {if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}(</b>
-{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].hasdefault}[{/if}<b>{$methods[methods].ifunction_call.params[params].type}</b>
-<i>{$methods[methods].ifunction_call.params[params].name}</i>{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if}<b> );</b>
-</p>
-
-{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}
-{if $methods[methods].method_overrides}
-<p>Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})</p>
-{/if}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/if}
-
-{include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=true}
- <p class="top">[ <a href="#top">Top</a> ]</p>
-<BR>
-{/if}
-{/section}
-
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<A NAME='{$methods[methods].method_dest}'><!-- --></A>
-
-<h1><A name="{$methods[methods].function_name}"></A>{$class_name}::{$methods[methods].function_name}</h1>
-
-<p class=method>
-<b>{if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}(</b>
-{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].hasdefault}[{/if}<b>{$methods[methods].ifunction_call.params[params].type}</b>
-<i>{$methods[methods].ifunction_call.params[params].name}</i>{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if}<b> );</b>
-</p>
-
-{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}
-{if $methods[methods].method_overrides}
-<p>Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})</p>
-{/if}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/if}
-
-{include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=true}
- <p class="top">[ <a href="#top">Top</a> ]</p>
-<BR>
-{/if}
-{/section}
-</UL>
-{/if} \ No newline at end of file
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 100755
index 0967e6e7..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 100755
index 39f4823a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/page.tpl
+++ /dev/null
@@ -1,34 +0,0 @@
-{include file="header.tpl" eltype="Procedural file"}
-<h3><SPAN class="type">File:</SPAN> {$source_location}<HR>
-</h3>
-{if $tutorial}
-<div class="maintutorial">Main Tutorial: {$tutorial}</div>
-{/if}
-{include file="docblock.tpl" desc=$desc sdesc=$sdesc tags=$tags}
-Classes in this file:
-<dl>
-{section name=classes loop=$classes}
-<dt>{$classes[classes].link}</dt>
- <dd>{$classes[classes].sdesc}</dd>
-{/section}
-</dl>
-<hr>
-{include file="include.tpl" summary=true}
-<hr>
-{include file="global.tpl" summary=true}
-<hr>
-{include file="define.tpl" summary=true}
-<hr>
-{include file="function.tpl" summary=true}
-<hr>
-{include file="include.tpl"}
-<hr>
-{include file="global.tpl"}
-<hr>
-{include file="define.tpl"}
-<hr>
-{include file="function.tpl"}
-<hr>
-{include file="footer.tpl"}
-
-</HTML> \ No newline at end of file
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 100755
index f3a90ab3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/pkgelementindex.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{include file="header.tpl"}
-<a name="top"></a>
-<h1>Element index for package {$package}</h1>
-{if count($packageindex) > 1}
-<b>Indexes by package:</b><br>
-{/if}
-{section name=p loop=$packageindex}
-{if $packageindex[p].title != $package}
-<a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a><br>
-{/if}
-{/section}<br>
-<a href="elementindex.html"><b>Index of all elements</b></a><br>
-{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 100755
index eff734c1..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 100755
index dd0669b5..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 100755
index f929ccdb..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 100755
index a943522c..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 100755
index 3d22d403..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 100755
index de907179..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<ul>
- <li><a href="{$main.link}" target="right">{$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 100755
index eeefcc51..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/CHM/default/templates/default/templates/var.tpl
+++ /dev/null
@@ -1,51 +0,0 @@
-{if $show=="summary"}
-<!-- =========== VAR SUMMARY =========== -->
-<A NAME='var_summary'><!-- --></A>
-<H3>Class Variable Summary</H3>
-
-<UL>
- {section name=vars loop=$vars}
- {if $vars[vars].static}
- <!-- =========== Summary =========== -->
- <LI><CODE>static <a href="{$vars[vars].id}">{$vars[vars].var_name}</a></CODE> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</CODE>
- <BR>
- {$vars[vars].sdesc}
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <!-- =========== Summary =========== -->
- <LI><CODE><a href="{$vars[vars].id}">{$vars[vars].var_name}</a></CODE> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</CODE>
- <BR>
- {$vars[vars].sdesc}
- {/if}
- {/section}
-</UL>
-{else}
-<!-- ============ VARIABLE DETAIL =========== -->
-
-<A NAME='variable_detail'></A>
-
-<H3>Variable Detail</H3>
-
-<UL>
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<A NAME="{$vars[vars].var_dest}"><!-- --></A>
-<LI><SPAN class="code">static {$vars[vars].var_name}</SPAN> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</CODE> [line <span class="linenumber">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>]</LI>
-<LI><b>Data type:</b> <CODE class="varsummarydefault">{$vars[vars].var_type}</CODE>{if $vars[vars].var_overrides}<b>Overrides:</b> {$vars[vars].var_overrides}<br>{/if}</LI>
-{include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}
-<BR>
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<A NAME="{$vars[vars].var_dest}"><!-- --></A>
-<LI><SPAN class="code">{$vars[vars].var_name}</SPAN> = <CODE class="varsummarydefault">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</CODE> [line <span class="linenumber">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>]</LI>
-<LI><b>Data type:</b> <CODE class="varsummarydefault">{$vars[vars].var_type}</CODE>{if $vars[vars].var_overrides}<b>Overrides:</b> {$vars[vars].var_overrides}<br>{/if}</LI>
-{include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}
-<BR>
-{/if}
-{/section}
-</UL>
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc
deleted file mode 100755
index d9fe459c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/HTMLSmartyConverter.inc
+++ /dev/null
@@ -1,1966 +0,0 @@
-<?php
-/**
- * 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}.
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2000-2006 Joshua Eichorn, Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package Converters
- * @subpackage HTMLframes
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2000-2006 Joshua Eichorn, Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: HTMLSmartyConverter.inc 234145 2007-04-19 20:20:57Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since 1.0rc1
- */
-/**
- * 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@php.net>
- * @since 1.0rc1
- * @version $Revision: 234145 $
- */
-class HTMLSmartyConverter extends Converter
-{
- /**
- * This converter knows about the new root tree processing
- * In order to fix PEAR Bug #6389
- * @var boolean
- */
- var $processSpecialRoots = true;
- /**
- * 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('{$subdir}__filesource/' .
- $this->getFileSourceName($path).'.html','Source Code for this file');
- }
-
- /**
- * 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('{$subdir}__filesource/' .
- $this->getFileSourceName($sourcefile) . '.html#a' . $anchor, $text);
- } else {
- return '<a name="a'.$anchor.'"></a>';
- }
- }
-
- /**
- * 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><div class="src-line">' . $this->getSourceAnchor($path, $linenumber) .
- str_replace("\n",'',$line) . $extra .
- "</div></li>\n";
- } else
- {
- return '<li><div class="src-line">' . str_replace("\n",'',$line) . "$extra</div></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'];
- }
-
- 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)
- {
- if ($this->highlightingSource) {
- return str_replace(array(' ',"\t"), array('&nbsp;', '&nbsp;&nbsp;&nbsp;'),
- htmlspecialchars($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);
- $classleft = $this->getClassLeft();
- $this->class_data->assign("compiledfileindex",$this->getPageLeft());
- $this->class_data->assign("compiledclassindex",$classleft['class']);
- $this->class_data->assign("compiledinterfaceindex",$classleft['interface']);
- $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 = $classarr = $interfacearr = array();
- if (isset($this->left['#class'][$this->package]))
- foreach($this->left['#class'][$this->package] as $subpackage => $pages)
- {
- for ($i = 0; $i < count($pages); $i++) {
- if ($pages[$i]['is_interface']) {
- $interfacearr[$subpackage][] = $pages[$i];
- } else {
- $classarr[$subpackage][] = $pages[$i];
- }
- }
- }
- $templ = &$this->newSmarty();
- $templ->assign('classleftindex',$classarr);
- $classarr = $templ->fetch('classleft.tpl');
- $this->_classleft_cache[$this->package][$this->subpackage]['class'] = $classarr;
- $templ = &$this->newSmarty();
- $templ->assign('classleftindex',$interfacearr);
- $interfacearr = $templ->fetch('classleft.tpl');
- $this->_classleft_cache[$this->package][$this->subpackage]['interface'] =
- $interfacearr;
- return $this->_classleft_cache[$this->package][$this->subpackage];
- }
-
- 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 .= '../';
- $classleft = $this->getClassLeft();
- $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",$classleft['class']);
- $this->page_data->assign("compiledinterfaceindex",$classleft['interface']);
- $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++)
- {
- $isinterface = false;
- if ($links[$i]->type == 'class') {
- $class = $this->classes->getClass($links[$i]->name,
- $links[$i]->path);
- if ($class) {
- $isinterface = $class->isInterface();
- }
- }
- $this->left['#class'][$package][$subpackage][] =
- array("link" => $this->getId($links[$i]), "title" => $links[$i]->name, 'is_interface' => $isinterface);
- }
- }
- }
- }
-
- /**
- * 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 = '';
- $classleft = $this->getClassLeft();
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("compiledclassindex",$classleft['class']);
- $template->assign("compiledinterfaceindex",$classleft['interface']);
- $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("package", false);
- $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
- $a = array_keys($this->pkg_elements);
- $start = array_shift($a);
- }
- $this->package = $start;
- $this->subpackage = '';
- $classleft = $this->getClassLeft();
- $index->assign("compiledfileindex",$this->getPageLeft());
- $index->assign("compiledclassindex",$classleft['class']);
- $index->assign("compiledinterfaceindex",$classleft['interface']);
- $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 = '';
- $classleft = $this->getClassLeft();
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("compiledclassindex",$classleft['class']);
- $template->assign("compiledinterfaceindex",$classleft['interface']);
- $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();
- $classleft = $this->getClassLeft();
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("compiledclassindex",$classleft['class']);
- $template->assign("compiledinterfaceindex",$classleft['interface']);
- $template->assign("classtrees",$this->generateFormattedClassTrees($package));
- $template->assign("interfaces",$this->generateFormattedInterfaceTrees($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 = '';
- $classleft = $this->getClassLeft();
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("compiledclassindex",$classleft['class']);
- $template->assign("compiledinterfaceindex",$classleft['interface']);
- $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;
- $classleft = $this->getClassLeft();
- $template->assign("compiledfileindex",$this->getPageLeft());
- $template->assign("compiledclassindex",$classleft['class']);
- $template->assign("compiledinterfaceindex",$classleft['interface']);
- $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['normal'][$package]) &&
- !isset($this->roots['special'][$package])) {
- return array();
- }
- $trees = array();
- if (isset($this->roots['normal'][$package])) {
- $roots = $this->roots['normal'][$package];
- for($i=0;$i<count($roots);$i++)
- {
- $root = $this->classes->getClassByPackage($roots[$i], $package);
- if ($root && $root->isInterface()) {
- continue;
- }
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- }
- if (isset($this->roots['special'][$package])) {
- $roots = $this->roots['special'][$package];
- foreach ($roots as $parent => $classes) {
- $thistree = '';
- foreach ($classes as $classinfo) {
- $root = $this->classes->getClassByPackage($classinfo, $package);
- if ($root && $root->isInterface()) {
- continue;
- }
- $thistree .=
- $this->getRootTree(
- $this->getSortedClassTreeFromClass(
- $classinfo,
- $package,
- ''),
- $package,
- true);
- }
- if (!$thistree) {
- continue;
- }
- $trees[] = array(
- 'class' => $parent,
- 'class_tree' => "<ul>\n" . $thistree . "</ul>\n"
- );
- }
- }
- return $trees;
- }
-
- /**
- * returns a template-enabled array of interface inheritance trees
- *
- * @param string $package package to generate a class tree for
- * @see $roots, HTMLConverter::getRootTree()
- */
- function generateFormattedInterfaceTrees($package)
- {
- if (!isset($this->roots['normal'][$package]) &&
- !isset($this->roots['special'][$package])) {
- return array();
- }
- $trees = array();
- if (isset($this->roots['normal'][$package])) {
- $roots = $this->roots['normal'][$package];
- for($i=0;$i<count($roots);$i++)
- {
- $root = $this->classes->getClassByPackage($roots[$i], $package);
- if ($root && !$root->isInterface()) {
- continue;
- }
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- }
- if (isset($this->roots['special'][$package])) {
- $roots = $this->roots['special'][$package];
- foreach ($roots as $parent => $classes) {
- $thistree = '';
- foreach ($classes as $classinfo) {
- $root = $this->classes->getClassByPackage($classinfo, $package);
- if ($root && !$root->isInterface()) {
- continue;
- }
- $thistree .=
- $this->getRootTree(
- $this->getSortedClassTreeFromClass(
- $classinfo,
- $package,
- ''),
- $package,
- true);
- }
- if (!$thistree) {
- continue;
- }
- $trees[] = array(
- 'class' => $parent,
- 'class_tree' => "<ul>\n" . $thistree . "</ul>\n"
- );
- }
- }
- return $trees;
- }
-
- /**
- * return formatted class tree for the Class Trees page
- *
- * @param array $tree output from {@link getSortedClassTreeFromClass()}
- * @param string $package package
- * @param boolean $nounknownparent if true, an object's parent will not be checked
- * @see Classes::$definitechild, generateFormattedClassTrees()
- * @return string
- */
- function getRootTree($tree, $package, $noparent = false)
- {
- if (!$tree) return '';
- $my_tree = '';
- $cur = '#root';
- $lastcur = array(false);
- $kids = array();
- $dopar = false;
- if (!$noparent && $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");
- $root = $this->classes->getClassByPackage($tree[$cur]['parent']->name,
- $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;
- $root = $this->classes->getClassByPackage(
- $tree[$cur]['link']->name,
- $tree[$cur]['link']->package);
- if ($implements = $root->getImplements()) {
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']) .
- ' (implements ';
- foreach ($implements as $i => $interface) {
- if ($i && $i != count($implements) - 1) $my_tree .= ', ';
- if ($link = $this->getLink('object ' . $interface)) {
- $my_tree .= $this->returnSee($link);
- } else {
- $my_tree .= $interface;
- }
- }
- $my_tree .= ')';
- } else {
- $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 = '')
- {
- $versionControlDirectories = array ('CVS', 'media/CVS', 'media\\CVS', '.svn', 'media/.svn', 'media\\.svn');
- if (!is_array($media)) {
- return;
- }
- foreach($media as $dir => $files)
- {
- if ($dir === '/')
- {
- $this->copyMediaRecursively($files,$targetdir);
- } else
- {
- if (!is_numeric($dir))
- {
- if (in_array($dir, $versionControlDirectories))
- {
- // skip it entirely
- }
- else
- {
- // create the subdir
- phpDocumentor_out("creating $targetdir" . PATH_DELIMITER . "$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" . PATH_DELIMITER . $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/HandS/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/options.ini
deleted file mode 100755
index 32ea2088..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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, highlighted 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 =
-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 = <strong>by <span class="author">
-/author = </span></strong>
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/HandS/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/basicindex.tpl
deleted file mode 100755
index 02da5c40..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/basicindex.tpl
+++ /dev/null
@@ -1,21 +0,0 @@
-{section name=letter loop=$letters}
- [ <a href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a> ]
-{/section}
-<br /><br />
-{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>
- <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>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/blank.tpl
deleted file mode 100755
index a7f6308f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/blank.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<div align="center"><h1>{$maintitle}</h1></div>
-<strong>Welcome to {$package}!</strong><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/HandS/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/class.tpl
deleted file mode 100755
index fe930904..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/class.tpl
+++ /dev/null
@@ -1,541 +0,0 @@
-{include file="header.tpl" eltype="class" hasel=true contents=$classcontents}
-
-<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">{if $is_interface}Interface{else}Class{/if} Overview</div>
- <div class="nav-bar">
- {if $children || $vars || $ivars || $methods || $imethods || $consts || $iconsts}
- <span class="disabled">{if $is_interface}Interface{else}Class{/if} Overview</span>
- {/if}
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
-
- {if $ivars || $imethods}
- | <a href="#sec-inherited">Inherited Properties, Constants, and Methods</a>
- {/if}
- {if $vars || $ivars}
- {if $vars}
- | <a href="#sec-var-summary">Property Summary</a> | <a href="#sec-vars">Properties Detail</a>
- {else}
- | <a href="#sec-vars">Properties</a>
- {/if}
- {/if}
- {if $methods || $imethods}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <a href="#sec-methods">Methods Detail</a>
- {else}
- | <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <a href="#sec-consts">Constants Detail</a>
- {else}
- | <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- <table width="100%" border="0">
- <tr><td valign="top" width="60%" class="class-overview">
-
- {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> [<span class="field">line {if $class_slink}{$class_slink}{else}{$line_number}{/if}</span>]
- </p>
-
- {if $tutorial}
- <hr class="separator" />
- <div class="notes">Tutorial: <span class="tutorial">{$tutorial}</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}
-
- {if count($tags) > 0}
- <strong>Author(s):</strong>
- <ul>
- {section name=tag loop=$tags}
- {if $tags[tag].keyword eq "author"}
- <li>{$tags[tag].data}</li>
- {/if}
- {/section}
- </ul>
- {/if}
-
- {include file="classtags.tpl" tags=$tags}
- </td>
-
- {if count($contents.var) > 0}
- <td valign="top" width="20%" class="class-overview">
- <p align="center" class="short-description"><strong><a href="#sec_vars">Properties</a></strong></p>
- <ul>
- {section name=contents loop=$contents.var}
- <li>{$contents.var[contents]}</li>
- {/section}
- </ul>
- </td>
- {/if}
-
- {if count($contents.method) > 0}
- <td valign="top" width="20%" class="class-overview">
- <p align="center" class="short-description"><strong><a href="#sec_methods">Methods</a></strong></p>
- <ul>
- {section name=contents loop=$contents.method}
- <li>{$contents.method[contents]}</li>
- {/section}
- </ul>
- </td>
- {/if}
-
- </tr></table>
- <div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
-</div>
-
-{if $children}
- <a name="sec-descendants"></a>
- <div class="info-box">
- <div class="info-box-title">Descendants</div>
- <div class="nav-bar">
- <a href="#sec-description">Class Overview</a>
- {if $children}
- | <span class="disabled">Descendants</span>
- {/if}
- {if $ivars || $imethods}
- | <a href="#sec-inherited">Inherited Properties and Methods</a>
- {/if}
- {if $vars || $ivars}
- {if $vars}
- | <a href="#sec-var-summary">Property Summary</a> | <a href="#sec-vars">Properties Detail</a>
- {else}
- | <a href="#sec-vars">Properties</a>
- {/if}
- {/if}
- {if $methods || $imethods}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <a href="#sec-methods">Methods Detail</a>
- {else}
- | <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <a href="#sec-consts">Constants Detail</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">Child 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>
- <br /><div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
- </div>
-{/if}
-
-{if $ivars || $imethods || $iconsts}
- <a name="sec-inherited"></a>
- <div class="info-box">
- <div class="info-box-title">Inherited Properties, Constants, and Methods</div>
- <div class="nav-bar">
- <a href="#sec-description">Class Overview</a>
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
- | <span class="disabled">Inherited Properties, Constants, and Methods</span>
- {if $vars || $ivars}
- {if $vars}
- | <a href="#sec-var-summary">Property Summary</a> | <a href="#sec-vars">Properties Detail</a>
- {else}
- | <a href="#sec-vars">Properties</a>
- {/if}
- {/if}
- {if $methods || $imethods}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <a href="#sec-methods">Methods Detail</a>
- {else}
- | <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <a href="#sec-consts">Constants Detail</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" width="30%">Inherited Properties</th>
- <th class="class-table-header" width="40%">Inherited Methods</th>
- <th class="class-table-header" width="30%">Inherited Constants</th>
- </tr>
- <tr>
- <td width="30%">
- {section name=ivars loop=$ivars}
- <p>Inherited From <span class="classname">{$ivars[ivars].parent_class}</span></p>
- <blockquote>
- <dl>
- {section name=ivars2 loop=$ivars[ivars].ivars}
- <dt>
- <span class="method-definition">{$ivars[ivars].ivars[ivars2].link}</span>
- </dt>
- <dd>
- <span class="method-definition">{$ivars[ivars].ivars[ivars2].ivars_sdesc}</span>
- </dd>
- {/section}
- </dl>
- </blockquote>
- {/section}
- </td>
- <td width="40%">
- {section name=imethods loop=$imethods}
- <p>Inherited From <span class="classname">{$imethods[imethods].parent_class}</span></p>
- <blockquote>
- <dl>
- {section name=im2 loop=$imethods[imethods].imethods}
- <dt>
- <span class="method-definition">{$imethods[imethods].imethods[im2].link}</span>
- </dt>
- <dd>
- <span class="method-definition">{$imethods[imethods].imethods[im2].sdesc}</span>
- </dd>
- {/section}
- </dl>
- </blockquote>
- {/section}
- </td>
- <td width="30%">
- {section name=iconsts loop=$iconsts}
- <p>Inherited From <span class="classname">{$iconsts[iconsts].parent_class}</span></p>
- <blockquote>
- <dl>
- {section name=iconsts2 loop=$iconsts[iconsts].iconsts}
- <dt>
- <span class="method-definition">{$iconsts[iconsts].iconsts[iconsts2].link}</span>
- </dt>
- <dd>
- <span class="method-definition">{$iconsts[iconsts].iconsts[iconsts2].iconsts_sdesc}</span>
- </dd>
- {/section}
- </dl>
- </blockquote>
- {/section}
- </td>
- </tr>
- </table>
- <br /><div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
- </div>
-{/if}
-
-{if $consts}
- <a name="sec-const-summary"></a>
- <div class="info-box">
- <div class="info-box-title">Constant Summary</span></div>
- <div class="nav-bar">
- <a href="#sec-description">Class Overview</a>
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
- {if $ivars || $imethods || $iconsts}
- | <a href="#sec-inherited">Inherited Properties, Constants, and Methods</a>
- {/if}
- | <span class="disabled">Constants Summary</span> | <a href="#sec-consts">Constants Detail</a>
- {if $vars || $ivars}
- {if $vars}
- | <a href="#sec-var-summary">Property Summary</a> | <a href="#sec-vars">Properties Detail</a>
- {else}
- | <a href="#sec-vars">Properties</a>
- {/if}
- {/if}
- {if $methods || $imethods}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <a href="#sec-methods">Methods Detail</a>
- {else}
- | <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- <div class="const-summary">
- <table border="0" cellspacing="0" cellpadding="0" class="var-summary">
- {section name=consts loop=$consts}
- <div class="var-title">
- <tr>
- <td class="var-title"><a href="#{$consts[consts].const_dest}" title="details" class="const-name-summary">{$consts[consts].const_name}</a>&nbsp;&nbsp;</td>
- <td class="const-summary-description">{$consts[consts].sdesc}</td></tr>
- </div>
- {/section}
- </table>
- </div>
- <br /><div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
- </div>
-{/if}
-
-{if $vars}
- <a name="sec-var-summary"></a>
- <div class="info-box">
- <div class="info-box-title">Property Summary</span></div>
- <div class="nav-bar">
- <a href="#sec-description">Class Overview</a>
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
- {if $ivars || $imethods || $iconsts}
- | <a href="#sec-inherited">Inherited Properties and Methods</a>
- {/if}
- | <span class="disabled">Property Summary</span> | <a href="#sec-vars">Properties Detail</a>
- {if $methods || $imethods}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <a href="#sec-methods">Methods Detail</a>
- {else}
- | <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <a href="#sec-consts">Constants Detail</a>
- {else}
- | <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- <div class="var-summary">
- <table border="0" cellspacing="0" cellpadding="0" class="var-summary">
- {section name=vars loop=$vars}
- {if $vars[vars].static}
- <div class="var-title">
- <tr><td class="var-title">static <span class="var-type-summary">{$vars[vars].var_type}</span>&nbsp;&nbsp;</td>
- <td class="var-title"><a href="#{$vars[vars].var_name}" title="details" class="var-name-summary">{$vars[vars].var_name}</a>&nbsp;&nbsp;</td>
- <td class="var-summary-description">{$vars[vars].sdesc}</td></tr>
- </div>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <div class="var-title">
- <tr><td class="var-title"><span class="var-type-summary">{$vars[vars].var_type}</span>&nbsp;&nbsp;</td>
- <td class="var-title"><a href="#{$vars[vars].var_name}" title="details" class="var-name-summary">{$vars[vars].var_name}</a>&nbsp;&nbsp;</td>
- <td class="var-summary-description">{$vars[vars].sdesc}</td></tr>
- </div>
- {/if}
- {/section}
- </table>
- </div>
- <br /><div class="top">[ <a href="#top">Top</a> ]</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">Class Overview</a>
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
- {if $ivars || $imethods || $iconsts}
- | <a href="#sec-inherited">Inherited Properties and Methods</a>
- {/if}
- {if $vars || $ivars}
- {if $vars}
- | <a href="#sec-var-summary">Property Summary</a> | <a href="#sec-vars">Properties Detail</a>
- {else}
- | <a href="#sec-vars">Properties</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <a href="#sec-consts">Constants Detail</a>
- {else}
- | <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- | <span class="disabled">Method Summary</span> | <a href="#sec-methods">Methods Detail</a>
- </div>
- <div class="info-box-body">
- <div class="method-summary">
- <table border="0" cellspacing="0" cellpadding="0" class="method-summary">
- {section name=methods loop=$methods}
- {if $methods[methods].static}
- <div class="method-definition">
- <tr><td class="method-definition">static
- {if $methods[methods].function_return}
- <span class="method-result">{$methods[methods].function_return}</span>&nbsp;&nbsp;
- {/if}</td>
- <td class="method-definition"><a href="#{$methods[methods].function_name}" title="details" class="method-name">{if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}</a>()&nbsp;&nbsp;</td>
- <td class="method-definition">{$methods[methods].sdesc}</td></tr>
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <div class="method-definition">
- {if $methods[methods].function_return}
- <tr><td class="method-definition"><span class="method-result">{$methods[methods].function_return}</span>&nbsp;&nbsp;</td>
- {/if}
- <td class="method-definition"><a href="#{$methods[methods].function_name}" title="details" class="method-name">{if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}</a>()&nbsp;&nbsp;</td>
- <td class="method-definition">{$methods[methods].sdesc}</td></tr>
- </div>
- {/if}
- {/section}
- </table>
- </div>
- <br /><div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
- </div>
-{/if}
-
-{if $vars || $ivars}
- <a name="sec-vars"></a>
- <div class="info-box">
- <div class="info-box-title">Properties</div>
- <div class="nav-bar">
- <a href="#sec-description">Class Overview</a>
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
- {if $ivars || $imethods || $iconsts}
- | <a href="#sec-inherited">Inherited Properties and Methods</a>
- {/if}
- {if $methods}
- | <a href="#sec-var-summary">Property Summary</a> | <span class="disabled">Properties Detail</span>
- {else}
- | <span class="disabled">Properties</span>
- {/if}
- {if $methods || $imethods}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <a href="#sec-methods">Methods Detail</a>
- {else}
- | <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <a href="#sec-consts">Constants Detail</a>
- {else}
- | <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- {include file="var.tpl"}
- </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">Class Overview</a>
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
- {if $ivars || $imethods || $iconsts}
- | <a href="#sec-inherited">Inherited Properties and Methods</a>
- {/if}
- {if $vars || $ivars}
- {if $vars}
- | <a href="#sec-var-summary">Property Summary</a> | <a href="#sec-vars">Properties Detail</a>
- {else}
- | <a href="#sec-vars">Properties</a>
- {/if}
- {/if}
- {if $consts || $iconsts}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <a href="#sec-consts">Constants Detail</a>
- {else}
- | <a href="#sec-consts">Constants</a>
- {/if}
- {/if}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <span class="disabled">Methods Detail</span>
- {else}
- | <span class="disabled">Methods</span>
- {/if}
- </div>
- <div class="info-box-body">
- {include file="method.tpl"}
- </div>
- </div>
-{/if}
-
-{if $consts || $consts}
- <a name="sec-consts"></a>
- <div class="info-box">
- <div class="info-box-title">Constants</div>
- <div class="nav-bar">
- <a href="#sec-description">Class Overview</a>
- {if $children}
- | <a href="#sec-descendants">Descendants</a>
- {/if}
- {if $consts}
- | <a href="#sec-const-summary">Constants Summary</a> | <span class="disabled">Constants Detail</span>
- {else}
- | <span class="disabled">Constants</span>
- {/if}
- {if $ivars || $imethods || $iconsts}
- | <a href="#sec-inherited">Inherited Properties, Constants, and Methods</a>
- {/if}
- {if $methods || $imethods}
- {if $methods}
- | <a href="#sec-method-summary">Method Summary</a> | <a href="#sec-methods">Methods Detail</a>
- {else}
- | <a href="#sec-methods">Methods</a>
- {/if}
- {/if}
- </div>
- <div class="info-box-body">
- {include file="const.tpl"}
- </div>
- </div>
-{/if}
-
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classleft.tpl
deleted file mode 100755
index 3bae1684..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classleft.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{foreach key=subpackage item=files from=$classleftindex}
- <div class="package">
- {if $subpackage != ""}{$subpackage}<br />{/if}
- {section name=files loop=$files}
- {if $subpackage != ""}<span style="padding-left: 1em;">{/if}
- {if $files[files].link != ''}<a href="{$files[files].link}">{/if}{$files[files].title}{if $files[files].link != ''}</a>{/if}
- {if $subpackage != ""}</span>{/if}
- <br />
- {/section}
- </div>
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtags.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtags.tpl
deleted file mode 100755
index b810ecf8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtags.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-{if count($api_tags) > 0}
-<strong>API Tags:</strong><br />
-<table border="0" cellspacing="0" cellpadding="0">
-{section name=tag loop=$api_tags}
- <tr>
- <td class="indent"><strong>{$api_tags[tag].keyword|capitalize}:</strong>&nbsp;&nbsp;</td><td>{$api_tags[tag].data}</td>
- </tr>
-{/section}
-</table>
-<br />
-{/if}
-
-{if count($info_tags) > 0}
-<strong>Information Tags:</strong><br />
-<table border="0" cellspacing="0" cellpadding="0">
-{section name=tag loop=$info_tags}
- {if $info_tags[tag].keyword ne "author"}
- <tr><td><strong>{$info_tags[tag].keyword|capitalize}:</strong>&nbsp;&nbsp;</td><td>{$info_tags[tag].data}</td></tr>
- {/if}
-{/section}
-</table>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtrees.tpl
deleted file mode 100755
index 0c0e974a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/classtrees.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<h1>{$title}</h1>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<hr />
-<div class="classtree">Root interface {$interfaces[classtrees].class}</div><br />
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<hr />
-<div class="classtree">Root class {$classtrees[classtrees].class}</div><br />
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/const.tpl
deleted file mode 100644
index 2e3270e0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/const.tpl
+++ /dev/null
@@ -1,19 +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="var-header">
- <span class="var-title">
- <span class="var-name">{$consts[consts].const_name}</span>
- = <span class="var-default">{$consts[consts].const_value|replace:"\n":"<br />"}</span>
- <span class="smalllinenumber">[line {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}
- {include file="tags.tpl" api_tags=$consts[consts].api_tags info_tags=$consts[consts].info_tags}
-
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div>
-</div>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/define.tpl
deleted file mode 100755
index 9b3809df..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/define.tpl
+++ /dev/null
@@ -1,34 +0,0 @@
-{if count($defines) > 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>&nbsp;&nbsp;<span class="smalllinenumber">[line {if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}]</span>
- </span>
- </div>
-<br />
- <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}
- {include file="tags.tpl" api_tags=$defines[def].api_tags info_tags=$defines[def].info_tags}
- <br />
-
- {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><br />
- {/if}
- <div class="top">[ <a href="#top">Top</a> ]</div>
- <br />
-</div>
-{/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/docblock.tpl
deleted file mode 100755
index 20bda10b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/docblock.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{if $sdesc != ''}
-<p align="center" class="short-description"><strong>{$sdesc|default:''}
-</strong></p>
-{/if}
-{if $desc != ''}<span class="description">{$desc|default:''}</span>{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/elementindex.tpl
deleted file mode 100755
index 0bb2be85..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/elementindex.tpl
+++ /dev/null
@@ -1,12 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<a name="top"></a>
-<h1>Index of All Elements</h1>
-<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/Smarty/templates/HandS/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/examplesource.tpl
deleted file mode 100755
index 8b8c94fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/examplesource.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl" title=$title}
-<h1 align="center">{$title}</h1>
-<div class="src-code"><span class="php">
-{$source}
-</span></div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/fileleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/fileleft.tpl
deleted file mode 100755
index 44d254e1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/fileleft.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{foreach key=subpackage item=files from=$fileleftindex}
- <div class="package">
- {if $subpackage != ""}<strong>{$subpackage}</strong><br />{/if}
- {section name=files loop=$files}
- <span style="padding-left: 1em;">{if $files[files].link != ''}<a href="{$files[files].link}">{/if}{$files[files].title}{if $files[files].link != ''}</a>{/if}</span><br />
- {/section}
- </div>
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/filesource.tpl
deleted file mode 100755
index 73074863..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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="src-code"><span class="php">
-{$source}
-</span></div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/filetags.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/filetags.tpl
deleted file mode 100755
index 77427b0e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/filetags.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{if count($tags) > 0}
-<table border="0" cellspacing="0" cellpadding="0">
- {section name=tag loop=$tags}
- <tr><td><strong>{$tags[tag].keyword|capitalize}:</strong>&nbsp;&nbsp;</td><td>{$tags[tag].data}</td></tr>
- {/section}
-</table>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/footer.tpl
deleted file mode 100755
index 32b09c11..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/footer.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
- <div class="credit">
- <hr class="separator" />
- Documentation generated on {$date} by <a href="{$phpdocwebsite}">phpDocumentor {$phpdocversion}</a>
- </div>
- </td></tr></table>
- </td>
- </tr>
-</table>
-
-</body>
-</html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/function.tpl
deleted file mode 100755
index 417bbf76..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/function.tpl
+++ /dev/null
@@ -1,54 +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>&nbsp;&nbsp;<span class="smalllinenumber">[line {if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}]</span>
- </div>
-<br />
- <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].hasdefault}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].hasdefault} = {$functions[func].ifunction_call.params[params].default|escape:"html"}]{/if}
-{/section}
-&nbsp;
-{/if})</code>
- </td></tr></table>
- </td></tr></table>
-
- {include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc}
-
- {if count($functions[func].params) > 0}
- <strong>Parameters:</strong><br />
- <table border="0" cellspacing="0" cellpadding="0">
- {section name=params loop=$functions[func].params}
- <tr><td class="indent">
- <span class="var-type">{$functions[func].params[params].datatype}</span>&nbsp;&nbsp;</td>
- <td>
- <span class="var-name">{$functions[func].params[params].var}:&nbsp;</span></td>
- <td>
- {if $functions[func].params[params].data}<span class="var-description"> {$functions[func].params[params].data}</span>{/if}
- </td></tr>
- {/section}
- </table>
- {/if}
-
-<br />
- {include file="tags.tpl" api_tags=$functions[func].api_tags info_tags=$functions[func].info_tags}
-
- {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}
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div>
- </div>
- </div>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/global.tpl
deleted file mode 100755
index f616349b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/global.tpl
+++ /dev/null
@@ -1,35 +0,0 @@
-{if count($globals) > 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>&nbsp;&nbsp;
- <span class="var-name">{$globals[glob].global_name}</span>
- <span class="smalllinenumber">[line {if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}]</span>
- </span>
- </div>
-
- {if $globals[glob].sdesc != ""}
- {include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc}
- {/if}
-
- <b>Default value:</b>&nbsp;&nbsp;<span class="var-default">{$globals[glob].global_value|replace:" ":"&nbsp;"|replace:"\n":"<br />\n"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</span>
-<br />
- {include file="tags.tpl" api_tags=$globals[glob].api_tags info_tags=$globals[glob].info_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}
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div>
- <br />
-</div>
-{/section}
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/header.tpl
deleted file mode 100755
index b57cbdb6..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/header.tpl
+++ /dev/null
@@ -1,110 +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>
- <title>{$title}</title>
- <link rel="stylesheet" type="text/css" href="{$subdir}media/style.css">
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
-</head>
-<body>
-
-<table border="0" cellspacing="0" cellpadding="0" height="48" width="100%">
- <tr>
- <td class="header-top-left"><img src="{$subdir}media/logo.png" border="0" alt="phpDocumentor {$phpdocver}" /></td>
- <td class="header-top-right">{$package}<br /><div class="header-top-right-subpackage">{$subpackage}</div></td>
- </tr>
- <tr><td colspan="2" class="header-line"><img src="{$subdir}media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
- <tr>
- <td colspan="2" class="header-menu">
- {assign var="packagehaselements" value=false}
- {foreach from=$packageindex item=thispackage}
- {if in_array($package, $thispackage)}
- {assign var="packagehaselements" value=true}
- {/if}
- {/foreach}
- {if $packagehaselements}
- [ <a href="{$subdir}classtrees_{$package}.html" class="menu">class tree: {$package}</a> ]
- [ <a href="{$subdir}elementindex_{$package}.html" class="menu">index: {$package}</a> ]
- {/if}
- [ <a href="{$subdir}elementindex.html" class="menu">all elements</a> ]
- </td>
- </tr>
- <tr><td colspan="2" class="header-line"><img src="{$subdir}media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
-</table>
-
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="195" class="menu">
- <div class="package-title">{$package}</div>
-{if count($ric) >= 1}
- <div class="package">
- <div id="ric">
- {section name=ric loop=$ric}
- <p><a href="{$subdir}{$ric[ric].file}">{$ric[ric].name}</a></p>
- {/section}
- </div>
- </div>
-{/if}
-{if $hastodos}
- <div class="package">
- <div id="todolist">
- <p><a href="{$subdir}{$todolink}">Todo List</a></p>
- </div>
- </div>
-{/if}
- <b>Packages:</b><br />
- <div class="package">
- {section name=packagelist loop=$packageindex}
- <a href="{$subdir}{$packageindex[packagelist].link}">{$packageindex[packagelist].title}</a><br />
- {/section}
- </div>
- <br />
-{if $tutorials}
- <b>Tutorials/Manuals:</b><br />
- <div class="package">
- {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}
- </div>
- {/if}
-{/if}
- {if !$noleftindex}{assign var="noleftindex" value=false}{/if}
- {if !$noleftindex}
- {if $compiledfileindex}
- <b>Files:</b><br />
- {eval var=$compiledfileindex}
- {/if}
- <br />
- {if $compiledinterfaceindex}
- <b>Interfaces:</b><br />
- {eval var=$compiledinterfaceindex}
- {/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">
-
-{if !$hasel}{assign var="hasel" value=false}{/if}
-{if $eltype == 'class' && $is_interface}{assign var="eltype" value="interface"}{/if}
-{if $hasel}
-<h1>{$eltype|capitalize}: {$class_name}</h1>
-Source Location: {$source_location}<br /><br />
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/include.tpl
deleted file mode 100755
index ffab8eff..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/include.tpl
+++ /dev/null
@@ -1,18 +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>)
- <span class="smalllinenumber">[line {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}
- {include file="tags.tpl" api_tags=$includes[includes].api_tags info_tags=$includes[includes].info_tags}
- <div class="top">[ <a href="#top">Top</a> ]</div>
- <br />
-</div>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/index.tpl
deleted file mode 100755
index a493f70e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/media/background.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/background.png
deleted file mode 100755
index 8c4ff464..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/background.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/empty.png
deleted file mode 100755
index a9f29bb1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/logo.png
deleted file mode 100644
index 10fe5d61..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/style.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/style.css
deleted file mode 100755
index a06eee2f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/media/style.css
+++ /dev/null
@@ -1,135 +0,0 @@
-a{ background-color: transparent; color: #636331; text-decoration: none; }
-a:hover{ text-decoration: underline; }
-a.menu{ background-color: transparent; color: #636331; }
-body{ background-color: #ffffff; background-image: url("background.png"); background-repeat: repeat-y; color: #000000; font-family: tahoma,verdana,arial,sans-serif; font-size: 10pt; margin: 0; padding: 0; }
-dd { margin-left: 0px; padding-left: 1em; }
-div.credit{ font-size: 8pt; text-align: center; }
-div.description,div.tags,div.function{ padding-left: 15px; }
-div.header-top-right-subpackage{ background-color: #fdfcf2; color: #636331; font-size: 12pt; font-weight: bold; padding: 10px; text-align: right; }
-div.package{ padding-left: 5px; }
-div.warning{ background-color: transparent; color: #ff0000; }
-hr{ border-color: #ccc9a4; border-style: solid; height: 1px; margin-bottom: 10px; margin-top: 10px; }
-li { list-style-type: square; }
-td{ font-size: 10pt; vertical-align: top; }
-td.class-overview{ padding: 2px; padding-left: 1em; }
-td.code{ background-color: #ccc9a4; color: #000000; padding-left: 3em; padding-right: 1em; text-indent: -2em; }
-td.code-border{ background-color: #636331; color: #000000; }
-td.header-line{ background-color: #636331; color: #ffffff; }
-td.header-menu{ background-color: #ccc9a4; color: #636331; font-size: 8pt; padding: 2px; padding-right: 5px; text-align: right; }
-td.header-top-left{ background-color: #fdfcf2; color: #636331; font-size: 16pt; font-weight: bold; padding: 10px; text-align: left; }
-td.header-top-right{ background-color: #fdfcf2; color: #636331; font-size: 16pt; font-weight: bold; padding: 10px; text-align: right; }
-td.indent { padding-left: 1em; }
-td.menu{ padding: 2px; padding-left: 5px; }
-td.type,.folder-title,.method-result,.include-type{ font-style: italic; }
-ul{ margin-left: 0px; padding-left: 8px; vertical-align: top; }
-.class-name { color: #000000; font-weight: bold; }
-.class-table { width: 100%; }
-.class-table-header { border-bottom: 1px dotted #666666; text-align: left; }
-.const-title { }
-.description{ color: #000000; }
-.detail,div.top,span.smalllinenumber{ font-size: 8pt; }
-.disabled{ color: #ccc9a4; font-style: italic; }
-.evenrow{ border: 1px solid #ccc9a4; color: #000000; margin-bottom: 1em; padding: .5em; }
-.include-title{ }
-.index-item-body { margin-bottom: .5em; margin-top: .5em; }
-.index-item-description { margin-top: .25em; }
-.index-item-details { font-size: 8pt; font-style: italic; font-weight: normal; }
-.index-letter { font-size: 12pt; }
-.index-letter-menu { margin: 1em; text-align: center; }
-.index-letter-section { background-color: #ccc9a4; border: 1px dotted #636331; margin-bottom: 1em; padding: .5em; }
-.index-letter-title { font-size: 12pt; font-weight: bold; }
-.info-box{ }
-.info-box-body{ border: 1px solid #ccc9a4; padding: .5em; }
-.info-box-title{ background-color: #ccc9a4; border: 1px solid #636331; color: #636331; font-size: 14pt; font-weight: normal; margin: 1em 0em 0em 0em; padding: .25em; }
-.line-number, .var-name-summary { font-size: 8pt; font-weight: bold; }
-.method-definition { font-size: 8pt; margin-bottom: .3em; padding-left: 1em; }
-.method-definition{ font-size: 8pt; margin-bottom: .3em; }
-.method-header{ }
-.method-result { color: #636331; font-size: 8pt; font-style: italic; }
-.method-signature{ color: #ccc9a4; font-size: 85%; margin: .5em 0em; }
-.nav-bar{ font-size: 8pt; margin: 0em 0em 1em 0em; padding: .2em; text-align: right; white-space: nowrap; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover{ background-color: #dddddd; outline: 1px solid #999999; text-decoration: none; }
-.nav-button-disabled{ color: #999999; }
-.notes{ font-size: 8pt; font-style: italic; }
-.oddrow{ background-color: #fdfcf2; border: 1px solid #ccc9a4; color: #000000; margin-bottom: 1em; padding: .5em; }
-.package{ padding-left : 2em; font-size : 9pt; }
-.package-details{ font-size: 85%; }
-.package-title{ border-bottom: 1px solid #000000; font-size: 14pt; font-weight: bold; }
-.page-body{ margin: auto; max-width: 800px; }
-.parameters{ list-style-type: square; margin-bottom: 0em; margin-left: 3em; margin-right: 1em; margin-top: 0em; padding-left: 0em; vertical-align: top; }
-.redefinitions{ font-size: 8pt; margin-left: 2em; padding-left: 0em; }
-.separator{ background-color: #ccc9a4; height: 1px; }
-.short-description{ color: #636331; font-weight: bold; }
-.src-code li, .php-src li, .php li, .listing li { list-style-type: decimal }
-/* This will not be executed by IE, so now we have a fix! */
-.php-src { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.sub-package{ font-size: 120%; font-weight: bold; }
-.tags{ color: #636331; list-style-type: square; margin-bottom: 0em; margin-left: 3em; margin-right: 1em; margin-top: 0em; padding-left: 0em; vertical-align: top; }
-.tree dl { margin: 0px; }
-.tutorial{ border-color: #0066ff; border-width: thin; }
-.tutorial-nav-box{ background-color: #fdfcf2; border: 1px solid #999999; width: 100%; }
-.var-default{ }
-.var-summary-description { font-size: 8pt; font-weight: normal; color: #000000; }
-.var-description{ color: #000000; font-weight: normal; }
-.var-header{ }
-.var-name, .const-name, .method-title,.method-name,.include-name,.var-name,.field { font-weight: bold; }
-.var-summary,.method-summary{ font-size: 8pt;}
-.var-title{ margin-bottom: .3em; }
-.var-type{ color: #636331; font-style: italic; }
-.var-type-summary{ color: #636331; font-size: 8pt; font-style: italic; padding-left: 1em; }
-.warning{ color: #ff6600; }
-
-/* Syntax highlighting */
-
-.src-code { background-color: #f5f5f5; border: 1px solid #ccc9a4; padding: 1em; margin : 0px;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.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; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-.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: #fdfcf2;
- color: #636331; }
-.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/Smarty/templates/HandS/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/method.tpl
deleted file mode 100755
index 8ea3853c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/method.tpl
+++ /dev/null
@@ -1,176 +0,0 @@
-<a name='method_detail'></a>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static method {$methods[methods].function_name}</span>&nbsp;&nbsp;<span class="smalllinenumber">[line {if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}]</span>
-</div>
-<br />
-
- <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">&nbsp;
- <code>static {$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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-&nbsp;
-{/if})</code>
- </td></tr></table>
- </td></tr></table><br /></div>
-
- {include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc}
-
- {if $methods[methods].params}
- <strong>Parameters:</strong><br />
- <table border="0" cellspacing="0" cellpadding="0">
- {section name=params loop=$methods[methods].params}
- <tr><td class="indent">
- <span class="var-type">{$methods[methods].params[params].datatype}</span>&nbsp;&nbsp;</td>
- <td>
- <span class="var-name">{$methods[methods].params[params].var}:&nbsp;</span></td>
- <td>
- {if $methods[methods].params[params].data}<span class="var-description"> {$methods[methods].params[params].data}</span>{/if}
- </td></tr>
- {/section}
- </table>
-
- {/if}
-<br />
- {include file="tags.tpl" api_tags=$methods[methods].api_tags info_tags=$methods[methods].info_tags}
-
- {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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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}
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div>
-</div>
-{/if}
-{/section}
-
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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>&nbsp;&nbsp;<span class="smalllinenumber">[line {if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}]</span>
-</div>
-<br />
-
- <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">&nbsp;
- <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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-&nbsp;
-{/if})</code>
- </td></tr></table>
- </td></tr></table><br /></div>
-
- {include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc}
-
- {if $methods[methods].params}
- <strong>Parameters:</strong><br />
- <table border="0" cellspacing="0" cellpadding="0">
- {section name=params loop=$methods[methods].params}
- <tr><td class="indent">
- <span class="var-type">{$methods[methods].params[params].datatype}</span>&nbsp;&nbsp;</td>
- <td>
- <span class="var-name">{$methods[methods].params[params].var}:&nbsp;</span></td>
- <td>
- {if $methods[methods].params[params].data}<span class="var-description"> {$methods[methods].params[params].data}</span>{/if}
- </td></tr>
- {/section}
- </table>
-
- {/if}
-<br />
- {include file="tags.tpl" api_tags=$methods[methods].api_tags info_tags=$methods[methods].info_tags}
-
- {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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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}
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div>
-</div>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/packages.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/packages.tpl
deleted file mode 100755
index 0967e6e7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/page.tpl
deleted file mode 100755
index 83cfc582..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/page.tpl
+++ /dev/null
@@ -1,210 +0,0 @@
-{include file="header.tpl" eltype="Procedural file" class_name=$name hasel=true contents=$pagecontents}
-
-<a name="sec-description"></a>
-<div class="info-box">
- <div class="info-box-title">Page Details</div>
- <div class="nav-bar">
- {if $classes || $includes || $defines || $globals || $functions}
- <span class="disabled">Page Details</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">Globals</a>
- {if $functions}|{/if}
- {/if}
- {if $functions}
- <a href="#sec-functions">Functions</a>
- {/if}
- </div>
- <div class="info-box-body">
- {include file="docblock.tpl" type="page" desc=$desc sdesc=$sdesc}
- {include file="filetags.tpl" 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">Page Details</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">Globals</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">Page Details</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">Globals</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><br />
-{/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">Page Details</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">Globals</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><br />
-{/if}
-
-{if $globals}
- <a name="sec-variables"></a>
- <div class="info-box">
- <div class="info-box-title">Globals</div>
- <div class="nav-bar">
- <a href="#sec-description">Page Details</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">Globals</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><br />
-{/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">Page Details</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">Globals</a>
- {if $functions}|{/if}
- {/if}
- <span class="disabled">Functions</span>
- </div>
- <div class="info-box-body">
- {include file="function.tpl"}
- </div>
- </div><br />
-{/if}
-
-{include file="footer.tpl" top3=true}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/pkgelementindex.tpl
deleted file mode 100755
index 7f12c6c5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/pkgelementindex.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-{include file="header.tpl"}
-<a name="top"></a>
-<h1>Element index for package {$package}</h1>
-{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}
-{include file="basicindex.tpl" indexname=elementindex_$package}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/ric.tpl
deleted file mode 100755
index eff734c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/tags.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tags.tpl
deleted file mode 100755
index 9f965d88..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tags.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-{if count($api_tags) > 0}
-<strong>API Tags:</strong><br />
-<table border="0" cellspacing="0" cellpadding="0">
-{section name=tag loop=$api_tags}
- <tr>
- <td class="indent"><strong>{$api_tags[tag].keyword|capitalize}:</strong>&nbsp;&nbsp;</td><td>{$api_tags[tag].data}</td>
- </tr>
-{/section}
-</table>
-<br />
-{/if}
-
-{if count($info_tags) > 0}
-<strong>Information Tags:</strong><br />
-<table border="0" cellspacing="0" cellpadding="0">
-{section name=tag loop=$info_tags}
- <tr>
- <td class="indent"><strong>{$info_tags[tag].keyword|capitalize}:</strong>&nbsp;&nbsp;</td><td>{$info_tags[tag].data}</td>
- </tr>
-{/section}
-</table>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tutorial.tpl
deleted file mode 100755
index a943522c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tutorial_toc.tpl
deleted file mode 100755
index 3d22d403..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/tutorial_tree.tpl
deleted file mode 100755
index dd2e5811..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/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/HandS/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/var.tpl
deleted file mode 100755
index 45aba195..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/HandS/templates/var.tpl
+++ /dev/null
@@ -1,94 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <span class="var-type">{$vars[vars].var_type}</span>&nbsp;&nbsp;
- <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}
- <span class="smalllinenumber">[line {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}
- {include file="tags.tpl" api_tags=$vars[vars].api_tags info_tags=$vars[vars].info_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}
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div>
-</div>
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>&nbsp;&nbsp;
- <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}
- <span class="smalllinenumber">[line {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}
- {include file="tags.tpl" api_tags=$vars[vars].api_tags info_tags=$vars[vars].info_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}
- <br />
- <div class="top">[ <a href="#top">Top</a> ]</div>
-</div>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/options.ini
deleted file mode 100755
index 73479c5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/PHP/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/basicindex.tpl
deleted file mode 100755
index 36cf9b4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/blank.tpl
deleted file mode 100755
index aae59975..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/class.tpl
deleted file mode 100755
index 860707eb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/class.tpl
+++ /dev/null
@@ -1,231 +0,0 @@
-{include file="header.tpl" eltype="class" hasel=true contents=$classcontents}
-
-{if $conflicts.conflict_type}<div class="warning">Conflicts with classes:<br />
- {section name=me loop=$conflicts.conflicts}
- {$conflicts.conflicts[me]}<br />
- {/section}
-</div>
- {/if}
-{* original <div class="warning">{$conflicts</div> *}
-
-<table width="100%" border="0">
-<tr><td valign="top">
-
-<h3><a href="#class_details">{if $is_interface}Interface{else}Class{/if} Overview</a></h3>
-<pre>{section name=tree loop=$class_tree.classes}{$class_tree.classes[tree]}{$class_tree.distance[tree]}{/section}</pre><br />
-<div class="description">{$sdesc|default:''}</div><br /><br />
-{if $tutorial}
-<h4 class="classtutorial">{if $is_interface}Interface{else}Class{/if} Tutorial:</h4>
-<ul>
- <li>{$tutorial}</li>
-</ul>
-{/if}
-{if count($tags) > 0}
-<h4>Author(s):</h4>
-<ul>
- {section name=tag loop=$tags}
- {if $tags[tag].keyword eq "author"}
- <li>{$tags[tag].data}</li>
- {/if}
- {/section}
-</ul>
-{/if}
-
-{assign var="version" value=""}
-{assign var="copyright" value=""}
-
-{section name=tag loop=$tags}
- {if $tags[tag].keyword eq "version"}
- {assign var="version" value=$tags[tag].data}
- {/if}
- {if $tags[tag].keyword eq "copyright"}
- {assign var="copyright" value=$tags[tag].data}
- {/if}
-{/section}
-
-{if $version}
-<h4>Version:</h4>
-<ul>
- <li>{$version}</li>
-</ul>
-{/if}
-
-{if $copyright}
-<h4>Copyright:</h4>
-<ul>
- <li>{$copyright}</li>
-</ul>
-{/if}
- {if $implements}
- <p class="implements">
- Implements interfaces:
- <ul>
- {foreach item="int" from=$implements}<li>{$int}</li>{/foreach}
- </ul>
- </p>
- {/if}
-
-</td>
-
-{if count($contents.var) > 0}
-<td valign="top">
-<h3><a href="#class_vars">Variables</a></h3>
-<ul>
- {section name=contents loop=$contents.var}
- <li>{$contents.var[contents]}</li>
- {/section}
-</ul>
-</td>
-{/if}
-
-{if count($contents.const) > 0}
-<td valign="top">
-<h3><a href="#class_consts">Constants</a></h3>
-<ul>
- {section name=contents loop=$contents.const}
- <li>{$contents.const[contents]}</li>
- {/section}
-</ul>
-</td>
-{/if}
-
-{if count($contents.method) > 0}
-<td valign="top">
-<h3><a href="#class_methods">Methods</a></h3>
-<ul>
- {section name=contents loop=$contents.method}
- <li>{$contents.method[contents]}</li>
- {/section}
-</ul>
-</td>
-{/if}
-
-</tr></table>
-<hr />
-
-<table width="100%" border="0"><tr>
-
-{* original {if $children != ""
-<td valign="top">
-<h3>Child classes:</h3>
-<div class="tags">
-{$children *}
-
-{if $children}
-<td valign="top">
-<h3>Child classes:</h3>
-<div class="tags">
-{section name=kids loop=$children}
-<dl>
-<dt>{$children[kids].link}</dt>
- <dd>{$children[kids].sdesc}</dd>
-</dl>
-{/section}
-</div>
-</td>
-{/if}
-
-{if $iconsts && count($iconsts) > 0}
-<td valign="top">
-<h3>Inherited Constants</h3>
-{section name=iconsts loop=$iconsts}
-<div class="tags">
-<h4>Class: {$iconsts[iconsts].parent_class}</h4>
-<dl>
-{section name=iconsts2 loop=$iconsts[iconsts].iconsts}
-<dt>
- {$iconsts[iconsts].iconsts[iconsts2].link}
-</dt>
-<dd>
- {$iconsts[iconsts].iconsts[iconsts2].iconsts_sdesc}
-</dd>
-{/section}
-</dl>
-</div>
-{/section}
-</td>
-{/if}
-
-{if $ivars && count($ivars) > 0}
-<td valign="top">
-<h3>Inherited Variables</h3>
-{section name=ivars loop=$ivars}
-<div class="tags">
-<h4>Class: {$ivars[ivars].parent_class}</h4>
-<dl>
-{section name=ivars2 loop=$ivars[ivars].ivars}
-<dt>
- {$ivars[ivars].ivars[ivars2].link}
- {* original <a href="{$ivars[ivars].ivars[ivars2].ipath #{$ivars[ivars].ivars[ivars2].ivar_name ">{$ivars[ivars].ivars[ivars2].ivar_name </a> *}
-</dt>
-<dd>
- {$ivars[ivars].ivars[ivars2].ivars_sdesc}
-</dd>
-{/section}
-</dl>
-</div>
-{/section}
-</td>
-{/if}
-
-{if $imethods && count($imethods) > 0}
-<td valign="top">
-<h3>Inherited Methods</h3>
-<div class="tags">
-{section name=imethods loop=$imethods}
-<h4>Class: {$imethods[imethods].parent_class}</h4>
-<dl>
- {section name=im2 loop=$imethods[imethods].imethods}
- <dt>
- {$imethods[imethods].imethods[im2].link}
-{* original <a href="{$imethods[imethods].imethods[im2].ipath#{$imethods[imethods].imethods[im2].ifunction_name">{$imethods[imethods].imethods[im2].ifunction_call</a> *}
- </dt>
- <dd>
- {$imethods[imethods].imethods[im2].sdesc}
- </dd>
- {/section}
-</dl>
-{/section}
-</div>
-</td>
-{/if}
-
-</tr></table>
-<hr />
-
-<a name="class_details"></a>
-<h3>Class Details</h3>
-<div class="tags">
-[line {if $class_slink}{$class_slink}{else}{$line_number}{/if}]<br />
-{include file="docblock.tpl" type="class" sdesc=$sdesc desc=$desc}
-</div><br /><br />
-<div class="top">[ <a href="#top">Top</a> ]</div><br />
-
-{if $vars && count($vars) > 0}
-<hr />
-<a name="class_vars"></a>
-<h3>Class Variables</h3>
-<div class="tags">
-{include file="var.tpl"}
-</div><br />
-{/if}
-
-{if $methods & count($methods) > 0}
-<hr />
-<a name="class_methods"></a>
-<h3>Class Methods</h3>
-<div class="tags">
-{include file="method.tpl"}
-</div><br />
-{/if}
-
-{if $consts && count($consts) > 0}
-<hr />
-<a name="class_consts"></a>
-<h3>Class Constants</h3>
-<div class="tags">
-{include file="const.tpl"}
-</div><br />
-{/if}
-
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/classleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/classleft.tpl
deleted file mode 100755
index b847f409..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/classtrees.tpl
deleted file mode 100755
index 0c0e974a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/classtrees.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<h1>{$title}</h1>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<hr />
-<div class="classtree">Root interface {$interfaces[classtrees].class}</div><br />
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<hr />
-<div class="classtree">Root class {$classtrees[classtrees].class}</div><br />
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/const.tpl
deleted file mode 100644
index 9ad36e01..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/define.tpl
deleted file mode 100755
index 3cc84da3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/docblock.tpl
deleted file mode 100755
index 2ddfa0be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/elementindex.tpl
deleted file mode 100755
index adb7b136..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/examplesource.tpl
deleted file mode 100755
index c9ed8b86..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/fileleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/fileleft.tpl
deleted file mode 100755
index 9af5e1cf..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/filesource.tpl
deleted file mode 100755
index 3d93199e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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="src-code">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/footer.tpl
deleted file mode 100755
index 57097ba5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/footer.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
- <div class="credit">
- <hr />
- Documentation generated on {$date} by <a href="{$phpdocwebsite}">phpDocumentor {$phpdocversion}</a>
- </div>
- </td></tr></table>
- </td>
- </tr>
-</table>
-
-</body>
-</html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/function.tpl
deleted file mode 100755
index 204c582f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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].hasdefault}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].hasdefault} = {$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/PHP/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/global.tpl
deleted file mode 100755
index 51ba0855..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/header.tpl
deleted file mode 100755
index 7d3e8f7d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/header.tpl
+++ /dev/null
@@ -1,97 +0,0 @@
-<html>
-<head>
-<title>{$title}</title>
-<link rel="stylesheet" type="text/css" href="{$subdir}media/style.css">
-</head>
-<body>
-
-<table border="0" cellspacing="0" cellpadding="0" height="48" width="100%">
- <tr>
- <td class="header_top">{$package}</td>
- </tr>
- <tr><td class="header_line"><img src="{$subdir}media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
- <tr>
- <td class="header_menu">
- {assign var="packagehaselements" value=false}
- {foreach from=$packageindex item=thispackage}
- {if in_array($package, $thispackage)}
- {assign var="packagehaselements" value=true}
- {/if}
- {/foreach}
- {if $packagehaselements}
- [ <a href="{$subdir}classtrees_{$package}.html" class="menu">class tree: {$package}</a> ]
- [ <a href="{$subdir}elementindex_{$package}.html" class="menu">index: {$package}</a> ]
- {/if}
- [ <a href="{$subdir}elementindex.html" class="menu">all elements</a> ]
- </td>
- </tr>
- <tr><td class="header_line"><img src="{$subdir}media/empty.png" width="1" height="1" border="0" alt="" /></td></tr>
-</table>
-
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr valign="top">
- <td width="200" class="menu">
-{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}
-{if $hastodos}
- <div id="todolist">
- <p><a href="{$subdir}{$todolink}">Todo List</a></p>
- </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 $compiledinterfaceindex}
- <b>Interfaces:</b><br />
- {eval var=$compiledinterfaceindex}
- {/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">
-
-{if !$hasel}{assign var="hasel" value=false}{/if}
-{if $hasel}
-<h1>{$eltype|capitalize}: {$class_name}</h1>
-Source Location: {$source_location}<br /><br />
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/include.tpl
deleted file mode 100755
index 68b80081..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/index.tpl
deleted file mode 100755
index a493f70e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/media/background.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/background.png
deleted file mode 100755
index d6f36f60..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/background.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/empty.png
deleted file mode 100755
index a9f29bb1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/style.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/style.css
deleted file mode 100755
index bc65d896..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/media/style.css
+++ /dev/null
@@ -1,195 +0,0 @@
-.php {
- padding: 1em;
-}
-.php-src { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-body
-{
- color: #000000;
- background-color: #ffffff;
- background-image: url("background.png");
- background-repeat: repeat-y;
- font-family: tahoma, verdana, arial, sans-serif;
- font-size: 10pt;
- margin: 0;
- padding: 0;
-}
-
-a
-{
- color: #000099;
- background-color: transparent;
- text-decoration: none;
-}
-
-a:hover
-{
- text-decoration: underline;
-}
-
-a.menu
-{
- color: #ffffff;
- background-color: transparent;
-}
-
-td
-{
- font-size: 10pt;
-}
-
-td.header_top
-{
- color: #ffffff;
- background-color: #9999cc;
- font-size: 16pt;
- font-weight: bold;
- text-align: right;
- padding: 10px;
-}
-
-td.header_line
-{
- color: #ffffff;
- background-color: #333366;
-}
-
-td.header_menu
-{
- color: #ffffff;
- background-color: #666699;
- font-size: 8pt;
- text-align: right;
- padding: 2px;
- padding-right: 5px;
-}
-
-td.menu
-{
- padding: 2px;
- padding-left: 5px;
-}
-
-td.code_border
-{
- color: #000000;
- background-color: #c0c0c0;
-}
-
-td.code
-{
- color: #000000;
- background-color: #f0f0f0;
-}
-
-td.type
-{
- font-style: italic;
-}
-
-div.credit
-{
- font-size: 8pt;
- text-align: center;
-}
-
-div.package
-{
- padding-left: 5px;
-}
-
-div.tags
-{
- padding-left: 15px;
-}
-
-div.function
-{
- padding-left: 15px;
-}
-
-div.top
-{
- font-size: 8pt;
-}
-
-div.warning
-{
- color: #ff0000;
- background-color: transparent;
-}
-
-div.description
-{
- padding-left: 15px;
-}
-
-hr
-{
- height: 1px;
- border-style: solid;
- border-color: #c0c0c0;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-span.smalllinenumber
-{
- font-size: 8pt;
-}
-
-ul {
- margin-left: 0px;
- padding-left: 8px;
-}
-/* Syntax highlighting */
-
-.src-code { background-color: #f5f5f5; border: 1px solid #ccc9a4; padding: 0 0 0 1em; margin : 0px;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.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; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-.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: #9999CC }
-.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/Smarty/templates/PHP/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/method.tpl
deleted file mode 100755
index bcc4dcee..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/method.tpl
+++ /dev/null
@@ -1,145 +0,0 @@
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-{if $show == 'summary'}
-static method {$methods[methods].function_call}, {$methods[methods].sdesc}<br />
-{else}
- <hr />
- <a name="{$methods[methods].method_dest}"></a>
- <h3>static method {$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>static {$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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$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}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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}
-{/if}
-{/section}
-
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-{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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$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}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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}
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/packages.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/packages.tpl
deleted file mode 100755
index 0967e6e7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/page.tpl
deleted file mode 100755
index db2cd607..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/pkgelementindex.tpl
deleted file mode 100755
index 0dabfdb7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/ric.tpl
deleted file mode 100755
index eff734c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/tutorial.tpl
deleted file mode 100755
index a943522c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/tutorial_toc.tpl
deleted file mode 100755
index 3d22d403..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/tutorial_tree.tpl
deleted file mode 100755
index dd2e5811..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/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/PHP/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/var.tpl
deleted file mode 100755
index e36c61fd..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/PHP/templates/var.tpl
+++ /dev/null
@@ -1,60 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-{if $show == 'summary'}
- static var {$vars[vars].var_name}, {$vars[vars].sdesc}<br>
-{else}
- <a name="{$vars[vars].var_dest}"></a>
- <p></p>
- <h4>static {$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}
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-{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}
-{/if}
-{/section}
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/Smarty/templates/default/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/options.ini
deleted file mode 100755
index e61aeba8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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" align="center">
-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/default/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/basicindex.tpl
deleted file mode 100755
index b3f0c4a4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/basicindex.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{section name=letter loop=$letters}
- <a href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a>
-{/section}
-
-{section name=index loop=$index}
- <a name="{$index[index].letter}"></a>
- <a href="{$indexname}.html#top">top</a><br>
- <div>
- <h2>{$index[index].letter}</h2>
- <dl class="lettercontents">
- {section name=contents loop=$index[index].index}
- <dt>{$index[index].index[contents].name}</dt>
- <dd>{$index[index].index[contents].listing}</dd>
- {/section}
- </dl>
- </div>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/blank.tpl
deleted file mode 100755
index aae59975..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/HTML/Smarty/templates/default/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/class.tpl
deleted file mode 100755
index 399116ad..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/class.tpl
+++ /dev/null
@@ -1,173 +0,0 @@
-{include file="header.tpl" eltype="class" hasel=true contents=$classcontents}
-
-{if $conflicts.conflict_type}<p class="warning">Conflicts with classes:<br />
- {section name=me loop=$conflicts.conflicts}
- {$conflicts.conflicts[me]}<br />
- {/section}
-<p>
- {/if}
-
-<div class="leftcol">
- <h3><a href="#class_details">{if $is_interface}Interface{else}Class{/if} Overview</a> <span class="smalllinenumber">[line {if $class_slink}{$class_slink}{else}{$line_number}{/if}]</span></h3>
- <div id="classTree"><pre>{section name=tree loop=$class_tree.classes}{$class_tree.classes[tree]}{$class_tree.distance[tree]}{/section}</pre>
-</div>
- <div class="small">
- <p>{$sdesc|default:''}</p>
- {if $tutorial}
- <h4 class="classtutorial">{if $is_interface}Interface{else}Class{/if} Tutorial:</h4>
- <ul>
- <li>{$tutorial}</li>
- </ul>
- {/if}
- <h4>Author(s):</h4>
- <ul>
- {section name=tag loop=$tags}
- {if $tags[tag].keyword eq "author"}
- <li>{$tags[tag].data}</li>
- {/if}
- {/section}
- </ul>
- <h4>Version:</h4>
- <ul>
- {section name=tag loop=$tags}
- {if $tags[tag].keyword eq "version"}
- <li>{$tags[tag].data}</li>
- {/if}
- {/section}
- </ul>
-
- <h4>Copyright:</h4>
- <ul>
- {section name=tag loop=$tags}
- {if $tags[tag].keyword eq "copyright"}
- <li>{$tags[tag].data}</li>
- {/if}
- {/section}
- </li>
- </div>
-</div>
-
-<div class="middlecol">
- <h3><a href="#class_vars">Variables</a></h3>
- <ul class="small">
- {section name=contents loop=$contents.var}
- <li>{$contents.var[contents]}</li>
- {/section}
- </ul>
- <h3><a href="#class_consts">Constants</a></h3>
- <ul class="small">
- {section name=contents loop=$contents.const}
- <li>{$contents.const[contents]}</li>
- {/section}
- </ul>
-</div>
-<div class="rightcol">
- <h3><a href="#class_methods">Methods</a></h3>
- <ul class="small">
- {section name=contents loop=$contents.method}
- <li>{$contents.method[contents]}</li>
- {/section}
- </ul>
-</div>
-
-<div id="content">
-<hr>
- <div class="contents">
-{if $children}
- <h2>Child classes:</h2>
- {section name=kids loop=$children}
- <dl>
- <dt>{$children[kids].link}</dt>
- <dd>{$children[kids].sdesc}</dd>
- </dl>
- {/section}</p>
-{/if}
- </div>
-
- <div class="leftCol">
- {if $implements}
- <h2>Implements interfaces</h2>
- <ul>
- {foreach item="int" from=$implements}<li>{$int}</li>{/foreach}
- </ul>
- {/if}
- <h2>Inherited Variables</h2>
- {section name=ivars loop=$ivars}
- <div class="indent">
- <h3>Class: {$ivars[ivars].parent_class}</h3>
- <div class="small">
- <dl>
- {section name=ivars2 loop=$ivars[ivars].ivars}
- <dt>
- {$ivars[ivars].ivars[ivars2].link}
- </dt>
- <dd>
- {$ivars[ivars].ivars[ivars2].ivars_sdesc}
- </dd>
- {/section}
- </dl>
- </div>
- </div>
- {/section}
- <h2>Inherited Constants</h2>
- {section name=iconsts loop=$iconsts}
- <div class="indent">
- <h3>Class: {$iconsts[iconsts].parent_class}</h3>
- <div class="small">
- <dl>
- {section name=iconsts2 loop=$iconsts[iconsts].iconsts}
- <dt>
- {$iconsts[iconsts].iconsts[iconsts2].link}
- </dt>
- <dd>
- {$iconsts[iconsts].iconsts[iconsts2].iconsts_sdesc}
- </dd>
- {/section}
- </dl>
- </div>
- </div>
- {/section}
- </div>
-
- <div class="rightCol">
- <h2>Inherited Methods</h2>
- {section name=imethods loop=$imethods}
- <div class="indent">
- <h3>Class: {$imethods[imethods].parent_class}</h3>
- <dl class="small">
- {section name=im2 loop=$imethods[imethods].imethods}
- <dt>
- {$imethods[imethods].imethods[im2].link}
- </dt>
- <dd>
- {$imethods[imethods].imethods[im2].sdesc}
- </dd>
- {/section}
- </dl>
- </div>
- {/section}
- </div>
- <br clear="all">
- <hr>
-
- <a name="class_details"></a>
- <h2>Class Details</h2>
- {include file="docblock.tpl" type="class" sdesc=$sdesc desc=$desc}
- <p class="small" style="color: #334B66;">[ <a href="#top">Top</a> ]</p>
-
- <hr>
- <a name="class_vars"></a>
- <h2>Class Variables</h2>
- {include file="var.tpl"}
-
- <hr>
- <a name="class_methods"></a>
- <h2>Class Methods</h2>
- {include file="method.tpl"}
-
- <hr>
- <a name="class_consts"></a>
- <h2>Class Constants</h2>
- {include file="const.tpl"}
-</div>
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classleft.tpl
deleted file mode 100755
index 7d7de89a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classleft.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{foreach key=subpackage item=files from=$classleftindex}
- {if $subpackage != ""}<b>{$subpackage}</b><br>{/if}
- {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}
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classtrees.tpl
deleted file mode 100755
index 0c0e974a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/classtrees.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<h1>{$title}</h1>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<hr />
-<div class="classtree">Root interface {$interfaces[classtrees].class}</div><br />
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<hr />
-<div class="classtree">Root class {$classtrees[classtrees].class}</div><br />
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/const.tpl
deleted file mode 100644
index aeab7293..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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>
- <div class="indent">
- <p class="linenumber">[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}
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/define.tpl
deleted file mode 100755
index 0aa7ef76..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/define.tpl
+++ /dev/null
@@ -1,23 +0,0 @@
-<div id="define{if $show == 'summary'}_summary{/if}">
-{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}
- <a name="{$defines[def].define_link}"></a>
- <h3>{$defines[def].define_name}</h3>
- <div class="indent">
- <p class="linenumber">[line {if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}]</p>
- <p><code>{$defines[def].define_name} = {$defines[def].define_value}</code></p>
- {include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags}
- {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}
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/docblock.tpl
deleted file mode 100755
index 9ea60cf2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/docblock.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-{if $sdesc != ''}
-<p align="center"><strong>{$sdesc|default:''}
-</strong></p>
-{/if}
-{if $desc != ''}{$desc|default:''}{/if}
-{if count($tags)}
-<h4>Tags:</h4>
-<ul>
-{section name=tag loop=$tags}
- <li><b>{$tags[tag].keyword}</b> - {$tags[tag].data}</li>
-{/section}
-</ul>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/elementindex.tpl
deleted file mode 100755
index 0ff4a79e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/HTML/Smarty/templates/default/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/Smarty/templates/default/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/examplesource.tpl
deleted file mode 100755
index 1bf1f882..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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-src">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/fileleft.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/fileleft.tpl
deleted file mode 100755
index 9e141dc5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/fileleft.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{foreach key=subpackage item=files from=$fileleftindex}
- {if $subpackage != ""}subpackage <b>{$subpackage}</b><br>{/if}
- {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}
-{/foreach}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/filesource.tpl
deleted file mode 100755
index 15f7fbfe..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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-src">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/footer.tpl
deleted file mode 100755
index 0bdda65c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/footer.tpl
+++ /dev/null
@@ -1,7 +0,0 @@
- <div id="credit">
- <hr>
- Documentation generated on {$date} by <a href="{$phpdocwebsite}">phpDocumentor {$phpdocversion}</a>
- </div>
-</div>
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/function.tpl
deleted file mode 100755
index 14fd78eb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/function.tpl
+++ /dev/null
@@ -1,39 +0,0 @@
-<div id="function{if $show == 'summary'}_summary{/if}">
-{section name=func loop=$functions}
-{if $show == 'summary'}
-function {$functions[func].id}, {$functions[func].sdesc}<br>
-{else}
- <a name="{$functions[func].function_dest}"></a>
- <h3>{$functions[func].function_name}</h3>
- <div class="indent">
- <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].hasdefault}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].hasdefault} = {$functions[func].ifunction_call.params[params].default|escape:"html"}]{/if}
-{/section}
-{/if})</code>
- <p class="linenumber">[line {if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags}
- {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}
-
- <h4>Parameters</h4>
- <ul>
- {section name=params loop=$functions[func].params}
- <li>
- <span class="type">{$functions[func].params[params].datatype}</span>
- <b>{$functions[func].params[params].var}</b>
- -
- {$functions[func].params[params].data}</li>
- {/section}
- </ul>
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/global.tpl
deleted file mode 100755
index 9fa52bce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/global.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<div id="global{if $show == 'summary'}_summary{/if}">
-{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}
- <a name="{$globals[glob].global_link}"></a>
- <h3><i>{$globals[glob].global_type}</i> {$globals[glob].global_name}</h3>
- <div class="indent">
- <p class="linenumber">[line {if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags}
-
- <p><b>Default Value:</b>{$globals[glob].global_value|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</p>
- {if $globals[glob].global_conflicts.conflict_type}
- <p><b>Conflicts with globals:</b>
- {section name=me loop=$globals[glob].global_conflicts.conflicts}
- {$globals[glob].global_conflicts.conflicts[me]}<br />
- {/section}
- </p>
- {/if}
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/section}
-</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/header.tpl
deleted file mode 100755
index f23687eb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/header.tpl
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>{$title}</title>
- <link rel="stylesheet" type="text/css" id="layout" href="{$subdir}media/layout.css" media="screen">
- <link rel="stylesheet" type="text/css" href="{$subdir}media/style.css" media="all">
- <link rel="stylesheet" type="text/css" href="{$subdir}media/print.css" media="print">
-</head>
-
-<body>
-<div id="header">
- <div id="navLinks">
- {assign var="packagehaselements" value=false}
- {foreach from=$packageindex item=thispackage}
- {if in_array($package, $thispackage)}
- {assign var="packagehaselements" value=true}
- {/if}
- {/foreach}
- {if $packagehaselements}
- [ <a href="{$subdir}classtrees_{$package}.html">Class Tree: {$package}</a> ]
- [ <a href="{$subdir}elementindex_{$package}.html">Index: {$package}</a> ]
- {/if}
- [ <a href="{$subdir}elementindex.html">All elements</a> ]
- </div>
- <div id="packagePosition">
- <div id="packageTitle2">{$package}</div>
- <div id="packageTitle">{$package}</div>
- <div id="elementPath">{$subpackage} &middot; {$current}</div>
- </div>
-</div>
-
-<div id="nav" class="small">
-{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}
-{if $hastodos}
- <div id="todolist">
- <p><a href="{$subdir}{$todolink}">Todo List</a></p>
- </div>
-{/if}
- <div id="packages">
- Packages:
- {section name=packagelist loop=$packageindex}
- <p><a href="{$subdir}{$packageindex[packagelist].link}">{$packageindex[packagelist].title}</a></p>
- {/section}
- </div>
-{if $tutorials}
- <div id="tutorials">
- Tutorials/Manuals:<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}
- </div>
-{/if}
-
- {if !$noleftindex}{assign var="noleftindex" value=false}{/if}
- {if !$noleftindex}
- <div id="index">
- <div id="files">
- {if $compiledfileindex}
- Files:<br>
- {eval var=$compiledfileindex}{/if}
- </div>
- <div id="interfaces">
- {if $compiledinterfaceindex}Interfaces:<br>
- {eval var=$compiledinterfaceindex}{/if}
- </div>
- <div id="classes">
- {if $compiledclassindex}Classes:<br>
- {eval var=$compiledclassindex}{/if}
- </div>
- </div>
- {/if}
-</div>
-
-<div id="body">
- {if !$hasel}{assign var="hasel" value=false}{/if}
- {if $eltype == 'class' && $is_interface}{assign var="eltype" value="interface"}{/if}
- {if $hasel}
- <h1>{$eltype|capitalize}: {$class_name}</h1>
- <p style="margin: 0px;">Source Location: {$source_location}</p>
- {/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/include.tpl
deleted file mode 100755
index f2f5625d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/include.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{if count($includes) > 0}
-Includes:<br>
-{section name=includes loop=$includes}
-{$includes[includes].include_name}({$includes[includes].include_value}) <span class="linenumber">[line {if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}]</span>
-<br />
-{include file="docblock.tpl" sdesc=$includes[includes].sdesc desc=$includes[includes].desc tags=$includes[includes].tags}
-{/section}
-{/if} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/index.tpl
deleted file mode 100755
index a493f70e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/HTML/Smarty/templates/default/templates/layout.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/layout.css
deleted file mode 100755
index 1184cf1f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/layout.css
+++ /dev/null
@@ -1,81 +0,0 @@
-#header {
- z-index: 100;
- position: absolute;
- top: 0px;
- left: 0px;
- width: 100%;
- height: 5%;
-}
-#nav {
- z-index: 200;
- position: absolute;
- top: 5%;
- left: 0px;
- width: 15%;
- height: 1600px;
- clip: auto;
- overflow: auto;
-}
-#body {
- position: absolute;
- top: 6%;
- left: 17%;
- width: 82%;
-}
-#content {
- clear: both;
- top: -1px;
-}
-#packagePosition {
- position: absolute;
- right: 5px;
- top: 0px;
- width: 35%;
- height: 100%;
-}
-#packageTitle {
- position: absolute;
- right: 0px;
-}
-#packageTitle2 {
- position: absolute;
- right: -3px;
- top: -2px;
-}
-#elementPath {
- position: absolute;
- right: 0px;
- bottom: 0px;
-}
-#navLinks {
- position: absolute;
- top: 0px;
- left: 10px;
- height: 100%;
-
-}
-.leftCol {
- width: auto;
- float: left;
-}
-.middleCol {
- width: auto;
- float: left;
-}
-.rightCol {
- width: auto;
- float: left;
-}
-#credit {
- margin-top: 20px;
- margin-bottom: 50px;
-}
-
-/** Fixed layout for nav on mozilla */
-head:first-child+body div#header {
- position: fixed;
-}
-head:first-child+body div#nav {
- position: fixed;
- height: 94%
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/layout.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/layout.css
deleted file mode 100755
index 1184cf1f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/layout.css
+++ /dev/null
@@ -1,81 +0,0 @@
-#header {
- z-index: 100;
- position: absolute;
- top: 0px;
- left: 0px;
- width: 100%;
- height: 5%;
-}
-#nav {
- z-index: 200;
- position: absolute;
- top: 5%;
- left: 0px;
- width: 15%;
- height: 1600px;
- clip: auto;
- overflow: auto;
-}
-#body {
- position: absolute;
- top: 6%;
- left: 17%;
- width: 82%;
-}
-#content {
- clear: both;
- top: -1px;
-}
-#packagePosition {
- position: absolute;
- right: 5px;
- top: 0px;
- width: 35%;
- height: 100%;
-}
-#packageTitle {
- position: absolute;
- right: 0px;
-}
-#packageTitle2 {
- position: absolute;
- right: -3px;
- top: -2px;
-}
-#elementPath {
- position: absolute;
- right: 0px;
- bottom: 0px;
-}
-#navLinks {
- position: absolute;
- top: 0px;
- left: 10px;
- height: 100%;
-
-}
-.leftCol {
- width: auto;
- float: left;
-}
-.middleCol {
- width: auto;
- float: left;
-}
-.rightCol {
- width: auto;
- float: left;
-}
-#credit {
- margin-top: 20px;
- margin-bottom: 50px;
-}
-
-/** Fixed layout for nav on mozilla */
-head:first-child+body div#header {
- position: fixed;
-}
-head:first-child+body div#nav {
- position: fixed;
- height: 94%
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/print.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/print.css
deleted file mode 100755
index 3fcc2baa..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/print.css
+++ /dev/null
@@ -1,25 +0,0 @@
-BODY {
- margin: 1em;
-}
-#header {
-}
-#nav {
- display: none;
-}
-#packagePosition {
- text-align: right;
-}
-#packageTitle {
- display: inline;
- margin: 5px;
-}
-#packageTitle2 {
- display: none;
-}
-#elementPath {
- display: inline;
- margin: 5px;
-}
-#navLinks {
- display: none;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/style.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/style.css
deleted file mode 100755
index 041c489a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/media/style.css
+++ /dev/null
@@ -1,236 +0,0 @@
-BODY {
- background: #FFFFFF;
- font-family: Arial;
- margin: 0px;
- padding: 0px;
-}
-A {
- color: #CC4400;
- font-weight: bold;
-}
-A:Hover {
- color: white;
- background-color: #334B66;
- font-weight: bold;
- text-decoration: none;
-}
-
-#packageTitle {
- font-size: 160%;
- font-weight: bold;
- text-align: right;
- color: #CC6633;
-}
-#packageTitle2 {
- font-size: 160%;
- font-weight: bold;
- text-align: right;
- color: #334B66;
- background-color: #6699CC;
-}
-#packageLinks {
- background-color: #6699CC;
-}
-#header {
- background-color: #6699CC;
- border-bottom: solid #334B66 4px;
-}
-#nav {
- background-color: #6699CC;
- padding: 4px;
- border-right: solid #334B66 4px;
-}
-#index {
- padding: 18px;
-}
-hr {
- width: 80%;
- background-color: #6699CC;
- color: #6699CC;
- margin-top: 15px;
- margin-bottom: 15px;
- clear: both;
-}
-.links {
- text-align: left;
- width: 98%;
- margin: auto;
-}
-UL {
- margin: 0px;
- padding: 0px;
- padding-left: 5px;
- list-style-type: none;
-}
-li {
- text-indent: -15px;
- padding-bottom: 2px;
- padding-left: 14px;
-}
-dd {
- margin-bottom: .5em;
-}
-.small {
- font-size: 80%;
-}
-h3 {
-}
-.middleCol {
- margin-left: -1px;
- border-right: dotted gray 1px;
- border-left: dotted gray 1px;
- padding: 5px;
-}
-.leftCol {
- border-right: dotted gray 1px;
- padding: 5px;
-}
-.rightCol {
- margin-left: -1px;
- border-left: dotted gray 1px;
- padding: 5px;
-}
-#elementPath {
- font-size: 14px;
- font-weight: bold;
- color: #334B66;
-}
-.constructor {
- /*border: dashed #334B66 1px;*/
- font-weight: bold;
-}
-#credit {
- text-align: center;
- color: #334B66;
- font-weight: bold;
-}
-div.contents {
- border: solid #334B66 1px;
- padding: 3px;
- margin-bottom: 5px;
- clear: all;
-}
-H1 {
- margin: 0px;
-}
-H2 {
- margin: 0px;
- margin-bottom: 2px;
-}
-H3 {
- margin: 0px;
-}
-H4 {
- margin: 0px;
-}
-#classTree {
- padding: 0px;
- margin: 0px;
-}
-div.indent {
- margin-left: 15px;
-}
-.warning {
- color: red;
- background-color: #334B66;
- font-weight: bold;
-}
-code {
- font-family: fixed;
- padding: 3px;
- color: #334B66;
- background-color: #dddddd;
-}
-.type {
- color: #334B66;
-}
-.value {
- color: #334B66;
- border: dotted #334B66 1px;
-}
-.top {
- color: #334B66;
- border-bottom: dotted #334B66 1px;
- padding-bottom: 4px;
-}
-.php-src, .php, .listing {
- font-family: fixed;
- padding: 3px;
- color: #334B66;
- background-color: #dddddd;
- font-family: 'Courier New', Courier, monospace; font-weight: normal;
-}
-DIV#nav DL {
- margin: 0px;
- padding: 0px;
- list-style-type: none;
-}
-div.classtree {
- font-size: 130%;
- font-weight: bold;
- background-color: #CC6633;
- border: dotted #334B66 2px;
-}
-span.linenumber,p.linenumber {
- font-weight: bold,italic;
-}
-span.smalllinenumber {
- font-weight: bold,italic;
- font-size: 9pt;
-}
-ul {
- margin-left: 0px;
- padding-left: 8px;
-}
-/* Syntax highlighting */
-
-.src-code { background-color: #f5f5f5; border: 1px solid #ccc9a4; padding: 0px; margin : 0px}
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-/*.src-code pre { }*/
-
-.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; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-.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 #CC6633; background-color: #6699CC }
-.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/Smarty/templates/default/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/method.tpl
deleted file mode 100755
index f9bcdd38..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/method.tpl
+++ /dev/null
@@ -1,123 +0,0 @@
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-{if $show == 'summary'}
- <p>static method {$methods[methods].function_call}, {$methods[methods].sdesc}</p>
-{else}
- <a name="{$methods[methods].method_dest}"></a>
- <p></p>
- <h3>static {$methods[methods].function_name}</h3>
- <div class="indent">
- <p>
- <code>static {$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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if})</code>
- </p>
-
- <p class="linenumber">[line {if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags}
-
-{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}
-{if $methods[methods].method_overrides}<p>Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})</p>{/if}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/if}
-
- <h4>Parameters:</h4>
- <ul>
- {section name=params loop=$methods[methods].params}
- <li>
- <span class="type">{$methods[methods].params[params].datatype}</span>
- <b>{$methods[methods].params[params].var}</b>
- -
- {$methods[methods].params[params].data}</li>
- {/section}
- </ul>
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/if}
-{/section}
-
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-{if $show == 'summary'}
- <p>{if $methods[methods].ifunction_call.constructor}constructor {elseif $methods[methods].ifunction_call.destructor}destructor {else}method {/if}{$methods[methods].function_call}, {$methods[methods].sdesc}</p>
-{else}
- <a name="{$methods[methods].method_dest}"></a>
- <p></p>
- <h3>{$methods[methods].function_name}</h3>
- <div class="indent">
- <p>
- <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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if})</code>
- </p>
-
- <p class="linenumber">[line {if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}]</p>
- {include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags}
-
-{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}
-{if $methods[methods].method_overrides}<p>Overrides {$methods[methods].method_overrides.link} ({$methods[methods].method_overrides.sdesc|default:"parent method not documented"})</p>{/if}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/if}
-
- <h4>Parameters:</h4>
- <ul>
- {section name=params loop=$methods[methods].params}
- <li>
- <span class="type">{$methods[methods].params[params].datatype}</span>
- <b>{$methods[methods].params[params].var}</b>
- -
- {$methods[methods].params[params].data}</li>
- {/section}
- </ul>
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/packages.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/packages.tpl
deleted file mode 100755
index 0967e6e7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/HTML/Smarty/templates/default/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/page.tpl
deleted file mode 100755
index c3cb9fd1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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>
-
-<div class="contents">
-{if $tutorial}
-<span class="maintutorial">Main Tutorial: {$tutorial}</span>
-{/if}
-<h2>Classes:</h2>
-<dl>
-{section name=classes loop=$classes}
-<dt>{$classes[classes].link}</dt>
- <dd>{$classes[classes].sdesc}</dd>
-{/section}
-</dl>
-</div>
-
-<h2>Page Details:</h2>
-{include file="docblock.tpl" type="page"}
-<hr>
-{include file="include.tpl"}
-<hr>
-{include file="global.tpl"}
-<hr>
-{include file="define.tpl"}
-<hr>
-{include file="function.tpl"}
-
-{include file="footer.tpl"}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/pkgelementindex.tpl
deleted file mode 100755
index 0dabfdb7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/HTML/Smarty/templates/default/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/ric.tpl
deleted file mode 100755
index eff734c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/Smarty/templates/default/templates/style.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/style.css
deleted file mode 100755
index 993997ae..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/style.css
+++ /dev/null
@@ -1,172 +0,0 @@
-BODY {
- font-family: Arial;
- margin: 0px;
- padding: 0px;
-}
-A {
- color: #CC4400;
- font-weight: bold;
-}
-A:Hover {
- color: white;
- background-color: #334B66;
- font-weight: bold;
- text-decoration: none;
-}
-
-#packageTitle {
- font-size: 160%;
- font-weight: bold;
- text-align: right;
- color: #CC6633;
-}
-#packageTitle2 {
- font-size: 160%;
- font-weight: bold;
- text-align: right;
- color: #334B66;
- background-color: #6699CC;
-}
-#packageLinks {
- background-color: #6699CC;
-}
-#header {
- background-color: #6699CC;
- border-bottom: solid #334B66 4px;
-}
-#nav {
- background-color: #6699CC;
- padding: 4px;
- border-right: solid #334B66 4px;
-}
-#index {
- padding: 18px;
-}
-hr {
- width: 80%;
- background-color: #6699CC;
- color: #6699CC;
- margin-top: 15px;
- margin-bottom: 15px;
- clear: both;
-}
-.links {
- text-align: left;
- width: 98%;
- margin: auto;
-}
-UL {
- margin: 0px;
- padding: 0px;
- padding-left: 5px;
- list-style-type: none;
-}
-li {
- text-indent: -15px;
- padding-bottom: 2px;
- padding-left: 14px;
-}
-dd {
- margin-bottom: .5em;
-}
-.small {
- font-size: 80%;
-}
-h3 {
-}
-.middleCol {
- margin-left: -1px;
- border-right: dotted gray 1px;
- border-left: dotted gray 1px;
- padding: 5px;
-}
-.leftCol {
- border-right: dotted gray 1px;
- padding: 5px;
-}
-.rightCol {
- margin-left: -1px;
- border-left: dotted gray 1px;
- padding: 5px;
-}
-#elementPath {
- font-size: 14px;
- font-weight: bold;
- color: #334B66;
-}
-.constructor {
- /*border: dashed #334B66 1px;*/
- font-weight: bold;
-}
-#credit {
- text-align: center;
- color: #334B66;
- font-weight: bold;
-}
-div.contents {
- border: solid #334B66 1px;
- padding: 3px;
- margin-bottom: 5px;
- clear: all;
-}
-H1 {
- margin: 0px;
-}
-H2 {
- margin: 0px;
- margin-bottom: 2px;
-}
-H3 {
- margin: 0px;
-}
-H4 {
- margin: 0px;
-}
-#classTree {
- padding: 0px;
- margin: 0px;
-}
-div.indent {
- margin-left: 15px;
-}
-.warning {
- color: red;
- background-color: #334B66;
- font-weight: bold;
-}
-code {
- font-family: fixed;
- padding: 3px;
- color: #334B66;
- background-color: #dddddd;
-}
-.type {
- color: #334B66;
-}
-.value {
- color: #334B66;
- border: dotted #334B66 1px;
-}
-.top {
- color: #334B66;
- border-bottom: dotted #334B66 1px;
- padding-bottom: 4px;
-}
-DIV#nav DL {
- margin: 0px;
- padding: 0px;
- list-style-type: none;
-}
-div.classtree {
- font-size: 130%;
- font-weight: bold;
- background-color: #CC6633;
- border: dotted #334B66 2px;
-}
-span.linenumber,p.linenumber {
- font-weight: bold,italic;
-}
-span.smalllinenumber {
- font-weight: bold,italic;
- font-size: 9pt;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/Smarty/templates/default/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial.tpl
deleted file mode 100755
index 71fbb4fe..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial_toc.tpl
deleted file mode 100755
index 3d22d403..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/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/HTML/Smarty/templates/default/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial_tree.tpl
deleted file mode 100755
index ccb0289e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<ul>
- <li><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/default/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/var.tpl
deleted file mode 100755
index 262f427a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/Smarty/templates/default/templates/var.tpl
+++ /dev/null
@@ -1,36 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-{if $show == 'summary'}
- static var {$vars[vars].var_name}, {$vars[vars].sdesc}<br>
-{else}
- <a name="{$vars[vars].var_dest}"></a>
- <p></p>
- <h4>static {$vars[vars].var_name}{if $vars[vars].has_default} = <span class="value">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</span>{/if}</h4>
- <div class="indent">
- <p class="linenumber">[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}
- <p><b>Type:</b> {$vars[vars].var_type}</p>
- <p><b>Overrides:</b> {$vars[vars].var_overrides}</p>
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-{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}{if $vars[vars].has_default} = <span class="value">{$vars[vars].var_default|replace:"\n":"<br>\n"|replace:" ":"&nbsp;"|replace:"\t":"&nbsp;&nbsp;&nbsp;"}</span>{/if}</h4>
- <div class="indent">
- <p class="linenumber">[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}
- <p><b>Type:</b> {$vars[vars].var_type}</p>
- <p><b>Overrides:</b> {$vars[vars].var_overrides}</p>
- </div>
- <p class="top">[ <a href="#top">Top</a> ]</p>
-{/if}
-{/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 100755
index 8bab7d99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc
+++ /dev/null
@@ -1,1914 +0,0 @@
-<?php
-/**
- * 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}.
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package Converters
- * @subpackage HTMLframes
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: HTMLframesConverter.inc 234145 2007-04-19 20:20:57Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since 1.2
- */
-/**
- * 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@php.net>
- * @since 1.2
- * @version $Id: HTMLframesConverter.inc 234145 2007-04-19 20:20:57Z ashnazg $
- */
-class HTMLframesConverter extends Converter
-{
- /**
- * This converter knows about the new root tree processing
- * In order to fix PEAR Bug #6389
- * @var boolean
- */
- var $processSpecialRoots = true;
- /**
- * 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('{$subdir}__filesource/' .
- $this->getFileSourceName($path).'.html','Source Code for this file');
- }
-
- /**
- * 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('{$subdir}__filesource/' .
- $this->getFileSourceName($sourcefile) . '.html#a' . $anchor, $text);
- } else {
- return '<a name="a'.$anchor.'"></a>';
- }
- }
-
- /**
- * 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><div class="src-line">' . $this->getSourceAnchor($path, $linenumber) .
- str_replace("\n",'',$line) . $extra .
- "</div></li>\n";
- } else
- {
- return '<li><div class="src-line">' . str_replace("\n",'',$line) .
- "$extra</div></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 '<div class="src-code"><ol>' . parent::ProgramExample($example, $tutorial, $inlinesourceparse, $class, $linenum, $filesourcepath)
- .'</ol></div>';
- }
-
- /**
- * @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'];
- }
-
- function getCurrentPageLink()
- {
- return $this->curname . '.html';
- }
-
- /**
- * Uses htmlspecialchars() on the input
- */
- function postProcess($text)
- {
- if ($this->highlightingSource) {
- return str_replace(array(' ',"\t"), array('&nbsp;', '&nbsp;&nbsp;&nbsp;'),
- htmlspecialchars($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);
- }
- }
- }
- $interfaces = $classes = false;
- 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);
- $isinterface = $isclass = false;
- if ($class->isInterface()) {
- $isinterface = true;
- $interfaces = true;
- } else {
- $isclass = true;
- $classes = true;
- }
- if ($class && isset($class->docblock) && $class->docblock->hasaccess) {
- $left[$package][$subpackage]['classes'][] =
- array("link" => $this->getId($links[$i]),
- "title" => $links[$i]->name,
- 'is_interface' => $isinterface,
- 'is_class' => $isclass,
- "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,
- 'is_interface' => $isinterface,
- 'is_class' => $isclass,
- "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 == '') {
- $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'];
- $my['hasclasses'] = $classes;
- $my['hasinterfaces'] = $interfaces;
- 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',$this->package);
- $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("interfaces",$this->generateFormattedInterfaceTrees($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['normal'][$package]) &&
- !isset($this->roots['special'][$package])) {
- return array();
- }
- $trees = array();
- if (isset($this->roots['normal'][$package])) {
- $roots = $this->roots['normal'][$package];
- for($i=0;$i<count($roots);$i++)
- {
- $root = $this->classes->getClassByPackage($roots[$i], $package);
- if ($root && $root->isInterface()) {
- continue;
- }
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- }
- if (isset($this->roots['special'][$package])) {
- $roots = $this->roots['special'][$package];
- foreach ($roots as $parent => $classes) {
- $thistree = '';
- foreach ($classes as $classinfo) {
- $root = $this->classes->getClassByPackage($classinfo, $package);
- if ($root && $root->isInterface()) {
- continue;
- }
- $thistree .=
- $this->getRootTree(
- $this->getSortedClassTreeFromClass(
- $classinfo,
- $package,
- ''),
- $package,
- true);
- }
- if (!$thistree) {
- continue;
- }
- $trees[] = array(
- 'class' => $parent,
- 'class_tree' => "<ul>\n" . $thistree . "</ul>\n"
- );
- }
- }
- return $trees;
- }
-
- /**
- * returns a template-enabled array of interface inheritance trees
- *
- * @param string $package package to generate a class tree for
- * @see $roots, HTMLConverter::getRootTree()
- */
- function generateFormattedInterfaceTrees($package)
- {
- if (!isset($this->roots['normal'][$package]) &&
- !isset($this->roots['special'][$package])) {
- return array();
- }
- $trees = array();
- if (isset($this->roots['normal'][$package])) {
- $roots = $this->roots['normal'][$package];
- for($i=0;$i<count($roots);$i++)
- {
- $root = $this->classes->getClassByPackage($roots[$i], $package);
- if ($root && !$root->isInterface()) {
- continue;
- }
- $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
- }
- }
- if (isset($this->roots['special'][$package])) {
- $roots = $this->roots['special'][$package];
- foreach ($roots as $parent => $classes) {
- $thistree = '';
- foreach ($classes as $classinfo) {
- $root = $this->classes->getClassByPackage($classinfo, $package);
- if ($root && !$root->isInterface()) {
- continue;
- }
- $thistree .=
- $this->getRootTree(
- $this->getSortedClassTreeFromClass(
- $classinfo,
- $package,
- ''),
- $package,
- true);
- }
- if (!$thistree) {
- continue;
- }
- $trees[] = array(
- 'class' => $parent,
- 'class_tree' => "<ul>\n" . $thistree . "</ul>\n"
- );
- }
- }
- return $trees;
- }
-
- /**
- * return formatted class tree for the Class Trees page
- *
- * @param array $tree output from {@link getSortedClassTreeFromClass()}
- * @param string $package package
- * @param boolean $nounknownparent if true, an object's parent will not be checked
- * @see Classes::$definitechild, generateFormattedClassTrees()
- * @return string
- */
- function getRootTree($tree, $package, $noparent = false)
- {
- if (!$tree) return '';
- $my_tree = '';
- $cur = '#root';
- $lastcur = array(false);
- $kids = array();
- $dopar = false;
- if (!$noparent && $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");
- $root = $this->classes->getClassByPackage($tree[$cur]['parent']->name,
- $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;
- $root = $this->classes->getClassByPackage(
- $tree[$cur]['link']->name,
- $tree[$cur]['link']->package);
- if ($implements = $root->getImplements()) {
- $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']) .
- ' (implements ';
- foreach ($implements as $i => $interface) {
- if ($i && $i != count($implements) - 1) $my_tree .= ', ';
- if ($link = $this->getLink('object ' . $interface)) {
- $my_tree .= $this->returnSee($link);
- } else {
- $my_tree .= $interface;
- }
- }
- $my_tree .= ')';
- } else {
- $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 = '')
- {
- $versionControlDirectories = array ('CVS', 'media/CVS', 'media\\CVS', '.svn', 'media/.svn', 'media\\.svn');
- if (!is_array($media)) {
- return;
- }
- foreach($media as $dir => $files)
- {
- if ($dir === '/')
- {
- $this->copyMediaRecursively($files,$targetdir);
- } else
- {
- if (!is_numeric($dir))
- {
- if (in_array($dir, $versionControlDirectories))
- {
- // skip it entirely
- }
- else
- {
- // create the subdir
- phpDocumentor_out("creating $targetdir" . PATH_DELIMITER . "$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" . PATH_DELIMITER . $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/DOM/default/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/options.ini
deleted file mode 100755
index 084809be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/DOM/default/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/basicindex.tpl
deleted file mode 100755
index 951ee264..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/class.tpl
deleted file mode 100755
index 9ab7c455..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/class.tpl
+++ /dev/null
@@ -1,429 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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/DOM/default/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/define.tpl
deleted file mode 100755
index 0da5d864..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/function.tpl
deleted file mode 100755
index b6880059..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/global.tpl
deleted file mode 100755
index eab7e0b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/header.tpl
deleted file mode 100755
index 0d626190..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/header.tpl
+++ /dev/null
@@ -1,95 +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" />
- {if $top2 || $top3}
- <script src="{$subdir}media/lib/classTree.js"></script>
- {/if}
- {if $top2}
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
- {/if}
- {if $top3 || $top2}
- <script language="javascript" type="text/javascript">
- var imgPlus = new Image();
- var imgMinus = new Image();
- imgPlus.src = "{$subdir}media/images/plus.png";
- imgMinus.src = "{$subdir}media/images/minus.png";
-
- function showNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgMinus.src;
- oTable.style.display = "block";
- {rdelim}
-
- function hideNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgPlus.src;
- oTable.style.display = "none";
- {rdelim}
-
- function nodeIsVisible(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- break;
- {rdelim}
- return (oTable && oTable.style.display == "block");
- {rdelim}
-
- function toggleNodeVisibility(Node){ldelim}
- if (nodeIsVisible(Node)){ldelim}
- hideNode(Node);
- {rdelim}else{ldelim}
- showNode(Node);
- {rdelim}
- {rdelim}
- </script>
- {/if}
- </head>
- <body>
- {if $top3}<div class="page-body">{/if}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/include.tpl
deleted file mode 100755
index c2419e5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/left_frame.tpl
deleted file mode 100755
index 35178d87..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/left_frame.tpl
+++ /dev/null
@@ -1,197 +0,0 @@
-{include file="header.tpl" top2=true}
-<h3 class="package-title">{$info.0.package}</h3>
-<div class="tree">
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=p loop=$info}
- {if $info[p].subpackage == ""}
- var tree = new WebFXTree('<span class="package">{$info.0.package|escape:"quotes"}</span>');
- tree.setBehavior('classic');
-
- {if $hastodos}
- var todos = new WebFXTreeItem('To-do List', '{$todolink}');
- tree.add(todos);
- {/if}
-
- var class_trees = new WebFXTreeItem('Class trees', '{$classtreepage}.html');
- tree.add(class_trees);
-
- var elements = new WebFXTreeItem('Index of elements', '{$elementindex}.html');
- tree.add(elements);
-
- var parent_node;
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
- {if $info[p].hasinterfaces}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Interface(s)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
- {if $info[p].hasclasses}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
-
- {if $info[p].functions}
- var tree_function = new WebFXTreeItem('Function(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link}');
- tree_function.add(fic);
- {/section}
-
- tree.add(tree_function);
- {/if}
-
- {if $info[p].files}
- var tree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- tree_file.add(file);
- {/section}
-
- tree.add(tree_file);
- {/if}
-
- {else}
- {if $info[p].subpackagetutorial}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackagetutorialtitle|strip_tags|escape:"quotes"}</span>', '{$info[p].subpackagetutorialnoa|escape:"quotes"}');
- {else}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackage|escape:"quotes"}</span>', '{$packagedoc|escape:"quotes"}');
- {/if}
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].classes}
- var subpackagetree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc|escape:"quotes"}');
-
- {section name=class loop=$info[p].classes}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- subpackagetree_classe.add(classe);
- {/section}
-
- subpackagetree.add(subpackagetree_classe);
- {/if}
-
- {if $info[p].functions}
- var subpackagetree_function = new WebFXTreeItem('Function(s)', '{$packagedoc}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- subpackagetree_function.add(fic);
- {/section}
-
- subpackagetree.add(subpackagetree_function);
- {/if}
-
- {if $info[p].files}
- var subpackagetree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- subpackagetree_file.add(file);
- {/section}
-
- subpackagetree.add(subpackagetree_file);
- {/if}
-
- tree.add(subpackagetree);
- {/if}
-{/section}
-
-document.write(tree);
-{rdelim}
-</script>
-</div>
-<p class="notes">
- Generated by
- <a href="{$phpdocwebsite}" target="_blank">phpDocumentor <span class="field">{$phpdocversion}</span></a>
-</p>
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/banner.css
deleted file mode 100755
index f2149ebb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/media/images/I.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/I.png
deleted file mode 100755
index e8512fb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/I.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/L.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/L.png
deleted file mode 100755
index eb334eda..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/L.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lminus.png
deleted file mode 100755
index f7c43c0a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lplus.png
deleted file mode 100755
index 848ec2fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Lplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/T.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/T.png
deleted file mode 100755
index 30173254..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/T.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tminus.png
deleted file mode 100755
index 2260e424..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tplus.png
deleted file mode 100755
index 2c8d8f4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/Tplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/blank.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/blank.png
deleted file mode 100755
index cee9cd37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/blank.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/empty.png
deleted file mode 100755
index d5683865..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/minus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/minus.gif
deleted file mode 100644
index f502662b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/minus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/plus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/plus.gif
deleted file mode 100644
index eeca02ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/images/plus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/lib/classTree.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/lib/classTree.js
deleted file mode 100755
index ebb3fb4a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/lib/classTree.js
+++ /dev/null
@@ -1,454 +0,0 @@
-/*----------------------------------------\
-| Cross Browser Tree Widget 1.1 |
-|-----------------------------------------|
-| Created by Emil A. Eklund (eae@eae.net) |
-| For WebFX (http://webfx.eae.net/) |
-|-----------------------------------------|
-| This script is provided as is without |
-| any warranty whatsoever. It may be used |
-| free of charge for non commerical sites |
-| For commerical use contact the author |
-| of this script for further details. |
-|-----------------------------------------|
-| Created 2000-12-11 | Updated 2001-09-06 |
-\----------------------------------------*/
-
-var webFXTreeConfig = {
- rootIcon : 'media/images/empty.png',
- openRootIcon : 'media/images/empty.png',
- folderIcon : 'media/images/empty.png',
- openFolderIcon : 'media/images/empty.png',
- fileIcon : 'media/images/empty.png',
- iIcon : 'media/images/I.png',
- lIcon : 'media/images/L.png',
- lMinusIcon : 'media/images/Lminus.png',
- lPlusIcon : 'media/images/Lplus.png',
- tIcon : 'media/images/T.png',
- tMinusIcon : 'media/images/Tminus.png',
- tPlusIcon : 'media/images/Tplus.png',
- blankIcon : 'media/images/blank.png',
- defaultText : 'Tree Item',
- defaultAction : 'javascript:void(0);',
- defaultTarget : 'right',
- defaultBehavior : 'classic'
-};
-
-var webFXTreeHandler = {
- idCounter : 0,
- idPrefix : "webfx-tree-object-",
- all : {},
- behavior : null,
- selected : null,
- getId : function() { return this.idPrefix + this.idCounter++; },
- toggle : function (oItem) { this.all[oItem.id.replace('-plus','')].toggle(); },
- select : function (oItem) { this.all[oItem.id.replace('-icon','')].select(); },
- focus : function (oItem) { this.all[oItem.id.replace('-anchor','')].focus(); },
- blur : function (oItem) { this.all[oItem.id.replace('-anchor','')].blur(); },
- keydown : function (oItem) { return this.all[oItem.id].keydown(window.event.keyCode); },
- cookies : new WebFXCookie()
-};
-
-/*
- * WebFXCookie class
- */
-
-function WebFXCookie() {
- if (document.cookie.length) { this.cookies = ' ' + document.cookie; }
-}
-
-WebFXCookie.prototype.setCookie = function (key, value) {
- document.cookie = key + "=" + escape(value);
-}
-
-WebFXCookie.prototype.getCookie = function (key) {
- if (this.cookies) {
- var start = this.cookies.indexOf(' ' + key + '=');
- if (start == -1) { return null; }
- var end = this.cookies.indexOf(";", start);
- if (end == -1) { end = this.cookies.length; }
- end -= start;
- var cookie = this.cookies.substr(start,end);
- return unescape(cookie.substr(cookie.indexOf('=') + 1, cookie.length - cookie.indexOf('=') + 1));
- }
- else { return null; }
-}
-
-/*
- * WebFXTreeAbstractNode class
- */
-
-function WebFXTreeAbstractNode(sText, sAction, sTarget) {
- this.childNodes = [];
- this.id = webFXTreeHandler.getId();
- this.text = sText || webFXTreeConfig.defaultText;
- this.action = sAction || webFXTreeConfig.defaultAction;
- this.targetWindow = sTarget || webFXTreeConfig.defaultTarget;
- this._last = false;
- webFXTreeHandler.all[this.id] = this;
-}
-
-WebFXTreeAbstractNode.prototype.add = function (node) {
- node.parentNode = this;
- this.childNodes[this.childNodes.length] = node;
- var root = this;
- if (this.childNodes.length >=2) {
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- while (root.parentNode) { root = root.parentNode; }
- if (root.rendered) {
- if (this.childNodes.length >= 2) {
- document.getElementById(this.childNodes[this.childNodes.length -2].id + '-plus').src = ((this.childNodes[this.childNodes.length -2].folder)?webFXTreeConfig.tMinusIcon:webFXTreeConfig.tIcon);
- if (this.childNodes[this.childNodes.length -2].folder) {
- this.childNodes[this.childNodes.length -2].plusIcon = webFXTreeConfig.tPlusIcon;
- this.childNodes[this.childNodes.length -2].minusIcon = webFXTreeConfig.tMinusIcon;
- }
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- this._last = true;
- var foo = this;
- while (foo.parentNode) {
- for (var i = 0; i < foo.parentNode.childNodes.length; i++) {
- if (foo.id == foo.parentNode.childNodes[i].id) { break; }
- }
- if (++i == foo.parentNode.childNodes.length) { foo.parentNode._last = true; }
- else { foo.parentNode._last = false; }
- foo = foo.parentNode;
- }
- document.getElementById(this.id + '-cont').insertAdjacentHTML("beforeEnd", node.toString());
- if ((!this.folder) && (!this.openIcon)) {
- this.icon = webFXTreeConfig.folderIcon;
- this.openIcon = webFXTreeConfig.openFolderIcon;
- }
- this.folder = true;
- this.indent();
- this.expand();
- }
- return node;
-}
-
-WebFXTreeAbstractNode.prototype.toggle = function() {
- if (this.folder) {
- if (this.open) { this.collapse(); }
- else { this.expand(); }
- }
-}
-
-WebFXTreeAbstractNode.prototype.select = function() {
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.focus = function() {
- webFXTreeHandler.selected = this;
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.openIcon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'highlight';
- document.getElementById(this.id + '-anchor').style.color = 'highlighttext';
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.blur = function() {
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.icon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'transparent';
- document.getElementById(this.id + '-anchor').style.color = 'menutext';
-}
-
-WebFXTreeAbstractNode.prototype.doExpand = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.openIcon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'block'; }
- this.open = true;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '1');
-}
-
-WebFXTreeAbstractNode.prototype.doCollapse = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.icon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'none'; }
- this.open = false;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '0');
-}
-
-WebFXTreeAbstractNode.prototype.expandAll = function() {
- this.expandChildren();
- if ((this.folder) && (!this.open)) { this.expand(); }
-}
-
-WebFXTreeAbstractNode.prototype.expandChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].expandAll();
-} }
-
-WebFXTreeAbstractNode.prototype.collapseAll = function() {
- if ((this.folder) && (this.open)) { this.collapse(); }
- this.collapseChildren();
-}
-
-WebFXTreeAbstractNode.prototype.collapseChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].collapseAll();
-} }
-
-WebFXTreeAbstractNode.prototype.indent = function(lvl, del, last, level) {
- /*
- * Since we only want to modify items one level below ourself,
- * and since the rightmost indentation position is occupied by
- * the plus icon we set this to -2
- */
- if (lvl == null) { lvl = -2; }
- var state = 0;
- for (var i = this.childNodes.length - 1; i >= 0 ; i--) {
- state = this.childNodes[i].indent(lvl + 1, del, last, level);
- if (state) { return; }
- }
- if (del) {
- if (level >= this._level) {
- if (this.folder) {
- document.getElementById(this.id + '-plus').src = (this.open)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.lPlusIcon;
- this.plusIcon = webFXTreeConfig.lPlusIcon;
- this.minusIcon = webFXTreeConfig.lMinusIcon;
- }
- else { document.getElementById(this.id + '-plus').src = webFXTreeConfig.lIcon; }
- return 1;
- }
- }
- var foo = document.getElementById(this.id + '-indent-' + lvl);
- if (foo) {
- if ((del) && (last)) { foo._last = true; }
- if (foo._last) { foo.src = webFXTreeConfig.blankIcon; }
- else { foo.src = webFXTreeConfig.iIcon; }
- }
- return 0;
-}
-
-/*
- * WebFXTree class
- */
-
-function WebFXTree(sText, sAction, sBehavior, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- this.icon = sIcon || webFXTreeConfig.rootIcon;
- this.openIcon = sOpenIcon || webFXTreeConfig.openRootIcon;
- /* Defaults to open */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '0')?false:true;
- this.folder = true;
- this.rendered = false;
- if (!webFXTreeHandler.behavior) { webFXTreeHandler.behavior = sBehavior || webFXTreeConfig.defaultBehavior; }
- this.targetWindow = 'right';
-}
-
-WebFXTree.prototype = new WebFXTreeAbstractNode;
-
-WebFXTree.prototype.setBehavior = function (sBehavior) {
- webFXTreeHandler.behavior = sBehavior;
-};
-
-WebFXTree.prototype.getBehavior = function (sBehavior) {
- return webFXTreeHandler.behavior;
-};
-
-WebFXTree.prototype.getSelected = function() {
- if (webFXTreeHandler.selected) { return webFXTreeHandler.selected; }
- else { return null; }
-}
-
-WebFXTree.prototype.remove = function() { }
-
-WebFXTree.prototype.expand = function() {
- this.doExpand();
-}
-
-WebFXTree.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
-}
-
-WebFXTree.prototype.getFirst = function() {
- return null;
-}
-
-WebFXTree.prototype.getLast = function() {
- return null;
-}
-
-WebFXTree.prototype.getNextSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.getPreviousSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.keydown = function(key) {
- if (key == 39) { this.expand(); return false; }
- if (key == 37) { this.collapse(); return false; }
- if ((key == 40) && (this.open)) { this.childNodes[0].select(); return false; }
- return true;
-}
-
-WebFXTree.prototype.toString = function() {
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + this.text + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i, this.childNodes.length);
- }
- str += "</div>";
- this.rendered = true;
- return str;
-};
-
-/*
- * WebFXTreeItem class
- */
-
-function WebFXTreeItem(sText, sAction, eParent, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- /* Defaults to close */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '1')?true:false;
- if (eParent) { eParent.add(this); }
- if (sIcon) { this.icon = sIcon; }
- if (sOpenIcon) { this.openIcon = sOpenIcon; }
-}
-
-WebFXTreeItem.prototype = new WebFXTreeAbstractNode;
-
-WebFXTreeItem.prototype.remove = function() {
- var parentNode = this.parentNode;
- var prevSibling = this.getPreviousSibling(true);
- var nextSibling = this.getNextSibling(true);
- var folder = this.parentNode.folder;
- var last = ((nextSibling) && (nextSibling.parentNode) && (nextSibling.parentNode.id == parentNode.id))?false:true;
- this.getPreviousSibling().focus();
- this._remove();
- if (parentNode.childNodes.length == 0) {
- parentNode.folder = false;
- parentNode.open = false;
- }
- if (last) {
- if (parentNode.id == prevSibling.id) {
- document.getElementById(parentNode.id + '-icon').src = webFXTreeConfig.fileIcon;
- }
- else { }
- }
- if ((!prevSibling.parentNode) || (prevSibling.parentNode != parentNode)) {
- parentNode.indent(null, true, last, this._level);
- }
- if (document.getElementById(prevSibling.id + '-plus')) {
- if (nextSibling) {
- if ((parentNode == prevSibling) && (parentNode.getNextSibling)) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.tIcon; }
- else if (nextSibling.parentNode != prevSibling) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
- else { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
-}
-
-WebFXTreeItem.prototype._remove = function() {
- for (var i = this.childNodes.length - 1; i >= 0; i--) {
- this.childNodes[i]._remove();
- }
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this.id == this.parentNode.childNodes[i].id) {
- for (var j = i; j < this.parentNode.childNodes.length; j++) {
- this.parentNode.childNodes[i] = this.parentNode.childNodes[i+1]
- }
- this.parentNode.childNodes.length = this.parentNode.childNodes.length - 1;
- if (i + 1 == this.parentNode.childNodes.length) { this.parentNode._last = true; }
- }
- }
- webFXTreeHandler.all[this.id] = null;
- if (document.getElementById(this.id)) {
- document.getElementById(this.id).innerHTML = "";
- document.getElementById(this.id).removeNode();
- }
-}
-
-WebFXTreeItem.prototype.expand = function() {
- this.doExpand();
- document.getElementById(this.id + '-plus').src = this.minusIcon;
-}
-
-WebFXTreeItem.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
- document.getElementById(this.id + '-plus').src = this.plusIcon;
-}
-
-WebFXTreeItem.prototype.getFirst = function() {
- return this.childNodes[0];
-}
-
-WebFXTreeItem.prototype.getLast = function() {
- if (this.childNodes[this.childNodes.length - 1].open) { return this.childNodes[this.childNodes.length - 1].getLast(); }
- else { return this.childNodes[this.childNodes.length - 1]; }
-}
-
-WebFXTreeItem.prototype.getNextSibling = function() {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (++i == this.parentNode.childNodes.length) { return this.parentNode.getNextSibling(); }
- else { return this.parentNode.childNodes[i]; }
-}
-
-WebFXTreeItem.prototype.getPreviousSibling = function(b) {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (i == 0) { return this.parentNode; }
- else {
- if ((this.parentNode.childNodes[--i].open) || (b && this.parentNode.childNodes[i].folder)) { return this.parentNode.childNodes[i].getLast(); }
- else { return this.parentNode.childNodes[i]; }
-} }
-
-WebFXTreeItem.prototype.keydown = function(key) {
- if ((key == 39) && (this.folder)) {
- if (!this.open) { this.expand(); return false; }
- else { this.getFirst().select(); return false; }
- }
- else if (key == 37) {
- if (this.open) { this.collapse(); return false; }
- else { this.parentNode.select(); return false; }
- }
- else if (key == 40) {
- if (this.open) { this.getFirst().select(); return false; }
- else {
- var sib = this.getNextSibling();
- if (sib) { sib.select(); return false; }
- } }
- else if (key == 38) { this.getPreviousSibling().select(); return false; }
- return true;
-}
-
-WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
- var foo = this.parentNode;
- var indent = '';
- if (nItem + 1 == nItemCount) { this.parentNode._last = true; }
- var i = 0;
- while (foo.parentNode) {
- foo = foo.parentNode;
- indent = "<img id=\"" + this.id + "-indent-" + i + "\" src=\"" + ((foo._last)?webFXTreeConfig.blankIcon:webFXTreeConfig.iIcon) + "\">" + indent;
- i++;
- }
- this._level = i;
- if (this.childNodes.length) { this.folder = 1; }
- else { this.open = false; }
- if ((this.folder) || (webFXTreeHandler.behavior != 'classic')) {
- if (!this.icon) { this.icon = webFXTreeConfig.folderIcon; }
- if (!this.openIcon) { this.openIcon = webFXTreeConfig.openFolderIcon; }
- }
- else if (!this.icon) { this.icon = webFXTreeConfig.fileIcon; }
- var label = this.text;
- label = label.replace('<', '<');
- label = label.replace('>', '>');
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += indent;
- str += "<img id=\"" + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" onclick=\"webFXTreeHandler.toggle(this);\">"
- str += "<img id=\"" + this.id + "-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + label + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i,this.childNodes.length);
- }
- str += "</div>";
- this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
- this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
- return str;
-} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/stylesheet.css
deleted file mode 100755
index 72d3141d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/media/stylesheet.css
+++ /dev/null
@@ -1,184 +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 { }
-
-/* 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; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.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; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-.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 }
-
-/*------------------------------------------------------------------------------
- webfx-tree
-------------------------------------------------------------------------------*/
-
-.webfx-tree-container {
- margin: 0px;
- padding: 0px;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item {
- padding: 0px;
- margin: 0px;
- color: black;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item a {
- margin-left: 3px;
- padding: 1px 2px 1px 2px;
- color: black;
- text-decoration: none;
-}
-
-.webfx-tree-item a:hover, .webfx-tree-item a:active, .webfx-tree-item a:focus {
- color: black;
- background: #CCCCFF;
- text-decoration: none
-}
-
-.webfx-tree-item img {
- vertical-align: middle;
- border: 0px;
-}
-
-.webfx-tree-icon {
- width: 16px;
- height: 16px;
-}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/method.tpl
deleted file mode 100755
index 06d57a12..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/method.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/page.tpl
deleted file mode 100755
index b5980236..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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 $functions}
- <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/DOM/default/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/ric.tpl
deleted file mode 100755
index ad792475..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<div align="center"><h1>{$name}</h1></div>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_nav.tpl
deleted file mode 100755
index 89952301..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/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/DOM/default/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/DOM/default/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_tree.tpl
deleted file mode 100755
index 40d9a4ff..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
- var a{$name|replace:"-":"_"}node = new WebFXTreeItem('{$main.title|strip_tags|escape:"quotes"}','{$main.link}', parent_node);
-
-{if $haskids}
- var a{$name|replace:"-":"_"}_old_parent_node = parent_node;
- parent_node = a{$name|replace:"-":"_"}node;
- {$kids}
- parent_node = a{$name|replace:"-":"_"}_old_parent_node;
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/var.tpl
deleted file mode 100755
index 1b3ca2ff..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/default/templates/var.tpl
+++ /dev/null
@@ -1,90 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/options.ini
deleted file mode 100755
index 084809be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/DOM/earthli/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/basicindex.tpl
deleted file mode 100755
index f90100b4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/basicindex.tpl
+++ /dev/null
@@ -1,57 +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")}
- <img src="{$subdir}media/images/{if $index[index].index[contents].access == 'private'}Private{/if}{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="var-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Global")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="var-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Method")}
- <img src="{$subdir}media/images/{if $index[index].index[contents].constructor}Constructor{elseif $index[index].index[contents].destructor}Destructor{else}{if $index[index].index[contents].abstract}Abstract{/if}{if $index[index].index[contents].access == 'private'}Private{/if}{$index[index].index[contents].title}{/if}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="method-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Function")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="method-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Constant")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="const-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Page") || ($index[index].index[contents].title == "Include")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="include-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Class")}
- <img src="{$subdir}media/images/{if $index[index].index[contents].abstract}Abstract{/if}{if $index[index].index[contents].access == 'private'}Private{/if}{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- {$index[index].index[contents].name}
- {else}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- {$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/DOM/earthli/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/class.tpl
deleted file mode 100755
index 1999d25d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/class.tpl
+++ /dev/null
@@ -1,444 +0,0 @@
-{include file="header.tpl" top3=true}
-
-<h2 class="class-name"><img src="{$subdir}media/images/{if $abstract}{if $access == 'private'}AbstractPrivate{else}Abstract{/if}{else}{if $access == 'private'}Private{/if}{/if}Class_logo.png"
- alt="{if $abstract}{if $access == 'private'}AbstractPrivate{else}Abstract{/if}{else}{if $access == 'private'}Private{/if}{/if} Class"
- title="{if $abstract}{if $access == 'private'}AbstractPrivate{else}Abstract{/if}{else}{if $access == 'private'}Private{/if}{/if} Class"
- style="vertical-align: middle">{if $is_interface}Interface{/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 || $consts || $iconsts}|{/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; white-space: nowrap">
- <img src="{$subdir}media/images/{if $children[kids].abstract}Abstract{/if}{if $children[kids].access == 'private'}Private{/if}Class.png"
- alt="{if $children[kids].abstract}Abstract{/if}{if $children[kids].access == 'private'}Private{/if} class"
- title="{if $children[kids].abstract}Abstract{/if}{if $children[kids].access == 'private'}Private{/if} class"
- style="vertical-align: center"/>
- {$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">Descendants</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}
- {if $vars[vars].static}
- <div class="var-title">
- <img src="{$subdir}media/images/StaticVariable.png" alt=" " />
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <div class="var-title">
- <img src="{$subdir}media/images/{if $vars[vars].access == 'private'}PrivateVariable{else}Variable{/if}.png" alt=" " />
- <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>
- {/if}
- {/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">Descendants</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}
- {if $methods[methods].static}
- <div class="method-definition">
- <img src="{$subdir}media/images/StaticMethod.png" alt=" "/>
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <div class="method-definition">
- <img src="{$subdir}media/images/{if $methods[methods].ifunction_call.constructor}Constructor{elseif $methods[methods].ifunction_call.destructor}Destructor{elseif $methods[methods].access == 'private'}{if $methods[methods].abstract}Abstract{/if}PrivateMethod{else}{if $methods[methods].abstract}Abstract{/if}Method{/if}.png" alt=" "/>
- {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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}
- <img src="{$subdir}media/images/{if $ivars[ivars].ivars[ivars2].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
- <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}
- <img src="{$subdir}media/images/{if $imethods[imethods].imethods[im2].constructor}Constructor{elseif $imethods[imethods].imethods[im2].destructor}Destructor{elseif $imethods[imethods].imethods[im2].access == 'private'}{if $imethods[imethods].imethods[im2].abstract}Abstract{/if}PrivateMethod{else}{if $imethods[imethods].imethods[im2].abstract}Abstract{/if}Method{/if}.png" alt=" "/>
- <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/DOM/earthli/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/define.tpl
deleted file mode 100755
index 94078960..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/define.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-{section name=def loop=$defines}
-<a name="{$defines[def].define_link}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <img src="{$subdir}media/images/Constant.png" />
- <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/DOM/earthli/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/function.tpl
deleted file mode 100755
index e62a98ae..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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>
- <img src="{$subdir}media/images/Function.png" />
- <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/DOM/earthli/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/global.tpl
deleted file mode 100755
index d37bda37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/global.tpl
+++ /dev/null
@@ -1,27 +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>
- <img src="{$subdir}media/images/Global.png" />
- <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/DOM/earthli/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/header.tpl
deleted file mode 100755
index 0d626190..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/header.tpl
+++ /dev/null
@@ -1,95 +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" />
- {if $top2 || $top3}
- <script src="{$subdir}media/lib/classTree.js"></script>
- {/if}
- {if $top2}
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
- {/if}
- {if $top3 || $top2}
- <script language="javascript" type="text/javascript">
- var imgPlus = new Image();
- var imgMinus = new Image();
- imgPlus.src = "{$subdir}media/images/plus.png";
- imgMinus.src = "{$subdir}media/images/minus.png";
-
- function showNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgMinus.src;
- oTable.style.display = "block";
- {rdelim}
-
- function hideNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgPlus.src;
- oTable.style.display = "none";
- {rdelim}
-
- function nodeIsVisible(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- break;
- {rdelim}
- return (oTable && oTable.style.display == "block");
- {rdelim}
-
- function toggleNodeVisibility(Node){ldelim}
- if (nodeIsVisible(Node)){ldelim}
- hideNode(Node);
- {rdelim}else{ldelim}
- showNode(Node);
- {rdelim}
- {rdelim}
- </script>
- {/if}
- </head>
- <body>
- {if $top3}<div class="page-body">{/if}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/include.tpl
deleted file mode 100755
index f264afd3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/include.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{section name=includes loop=$includes}
-<a name="{$includes[includes].include_file}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <img src="{$subdir}media/images/Page.png" alt=" " />
- <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/DOM/earthli/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/left_frame.tpl
deleted file mode 100755
index a38cb29f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/left_frame.tpl
+++ /dev/null
@@ -1,250 +0,0 @@
-{include file="header.tpl" top2=true}
-<h3 class="package-title">{$info.0.package}</h3>
-<div class="tree">
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=p loop=$info}
- {if $info[p].subpackage == ""}
- var tree = new WebFXTree('<span class="package">{$info.0.package}</span>');
- tree.setBehavior('classic');
- tree.openIcon = 'media/images/package.png';
- tree.icon = 'media/images/package.png';
-
- {if $hastodos}
- var todos = new WebFXTreeItem('To-do List', '{$todolink}');
- todos.openIcon = 'media/images/Index.png';
- todos.icon = 'media/images/Index.png';
- tree.add(todos);
- {/if}
-
- var class_trees = new WebFXTreeItem('Class trees', '{$classtreepage}.html');
- class_trees.openIcon = 'media/images/Index.png';
- class_trees.icon = 'media/images/Index.png';
- tree.add(class_trees);
-
- var elements = new WebFXTreeItem('Index of elements', '{$elementindex}.html');
- elements.openIcon = 'media/images/Index.png';
- elements.icon = 'media/images/Index.png';
- tree.add(elements);
-
- var parent_node;
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree_tutorial.openIcon = 'media/images/tutorial_folder.png';
- tree_tutorial.icon = 'media/images/tutorial_folder.png';
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_inner_tutorial.openIcon = 'media/images/package_folder.png';
- tree_inner_tutorial.icon = 'media/images/package_folder.png';
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_inner_tutorial.openIcon = 'media/images/class_folder.png';
- tree_inner_tutorial.icon = 'media/images/class_folder.png';
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_inner_tutorial.openIcon = 'media/images/function_folder.png';
- tree_inner_tutorial.icon = 'media/images/function_folder.png';
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].hasinterfaces}
- var tree_classe = new WebFXTreeItem('Interface(s)', '{$packagedoc|escape:"quotes"}');
- tree_classe.openIcon = 'media/images/class_folder.png';
- tree_classe.icon = 'media/images/class_folder.png';
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- classe.openIcon = 'media/images/Interface.png';
- classe.icon = 'media/images/Interface.png';
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
-
- {if $info[p].hasclasses}
- var tree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc|escape:"quotes"}');
- tree_classe.openIcon = 'media/images/class_folder.png';
- tree_classe.icon = 'media/images/class_folder.png';
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- classe.openIcon = 'media/images/{if $info[p].classes[class].abstract}Abstract{/if}{if $info[p].classes[class].access == 'private'}Private{/if}Class.png';
- classe.icon = 'media/images/{if $info[p].classes[class].abstract}Abstract{/if}{if $info[p].classes[class].access == 'private'}Private{/if}Class.png';
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
-
- {if $info[p].functions}
- var tree_function = new WebFXTreeItem('Function(s)', '{$packagedoc|escape:"quotes"}');
- tree_function.openIcon = 'media/images/function_folder.png';
- tree_function.icon = 'media/images/function_folder.png';
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- fic.openIcon = 'media/images/Function.png';
- fic.icon = 'media/images/Function.png';
- tree_function.add(fic);
- {/section}
-
- tree.add(tree_function);
- {/if}
-
- {if $info[p].files}
- var tree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
- tree_file.openIcon = 'media/images/folder.png';
- tree_file.icon = 'media/images/folder.png';
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- file.openIcon = 'media/images/Page.png';
- file.icon = 'media/images/Page.png';
- tree_file.add(file);
- {/section}
-
- tree.add(tree_file);
- {/if}
-
- {else}
- {if $info[p].subpackagetutorial}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackagetutorialtitle|strip_tags|escape:"quotes"}</span>', '{$info[p].subpackagetutorialnoa}');
- {else}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackage}</span>', '{$packagedoc|escape:"quotes"}');
- {/if}
-
- subpackagetree.openIcon = 'media/images/package.png';
- subpackagetree.icon = 'media/images/package.png';
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree_tutorial.openIcon = 'media/images/tutorial_folder.png';
- tree_tutorial.icon = 'media/images/tutorial_folder.png';
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_inner_tutorial.openIcon = 'media/images/package_folder.png';
- tree_inner_tutorial.icon = 'media/images/package_folder.png';
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_inner_tutorial.openIcon = 'media/images/class_folder.png';
- tree_inner_tutorial.icon = 'media/images/class_folder.png';
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_inner_tutorial.openIcon = 'media/images/function_folder.png';
- tree_inner_tutorial.icon = 'media/images/function_folder.png';
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].classes}
- var subpackagetree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc|escape:"quotes"}');
- subpackagetree_classe.openIcon = 'media/images/class_folder.png';
- subpackagetree_classe.icon = 'media/images/class_folder.png';
-
- {section name=class loop=$info[p].classes}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- classe.openIcon = 'media/images/{if $info[p].classes[class].abstract}Abstract{/if}{if $info[p].classes[class].access == 'private'}Private{/if}Class.png';
- classe.icon = 'media/images/{if $info[p].classes[class].abstract}Abstract{/if}{if $info[p].classes[class].access == 'private'}Private{/if}Class.png';
- subpackagetree_classe.add(classe);
- {/section}
-
- subpackagetree.add(subpackagetree_classe);
- {/if}
-
- {if $info[p].functions}
- var subpackagetree_function = new WebFXTreeItem('Function(s)', '{$packagedoc|escape:"quotes"}');
- subpackagetree_function.openIcon = 'media/images/function_folder.png';
- subpackagetree_function.icon = 'media/images/function_folder.png';
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- fic.openIcon = 'media/images/Function.png';
- fic.icon = 'media/images/Function.png';
- subpackagetree_function.add(fic);
- {/section}
-
- subpackagetree.add(subpackagetree_function);
- {/if}
-
- {if $info[p].files}
- var subpackagetree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
- subpackagetree_file.openIcon = 'media/images/folder.png';
- subpackagetree_file.icon = 'media/images/folder.png';
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- file.openIcon = 'media/images/Page.png';
- file.icon = 'media/images/Page.png';
- subpackagetree_file.add(file);
- {/section}
-
- subpackagetree.add(subpackagetree_file);
- {/if}
-
- tree.add(subpackagetree);
- {/if}
-{/section}
-
-document.write(tree);
-{rdelim}
-</script>
-</div>
-<p class="notes">
- Generated by
- <a href="{$phpdocwebsite}" target="_blank">phpDocumentor <span class="field">{$phpdocversion}</span></a>
-</p>
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/banner.css
deleted file mode 100755
index 19a383c3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background-color: #EEEEEE;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #AAAAAA;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #DDDDDD;
- border: 1px solid #AAAAAA;
- color: #000090;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass.png
deleted file mode 100644
index afa9d1d9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass_logo.png
deleted file mode 100644
index 8f65c390..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractClass_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractMethod.png
deleted file mode 100644
index 605ccbe5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass.png
deleted file mode 100644
index 53d76c63..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass_logo.png
deleted file mode 100644
index 4e68f570..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateClass_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateMethod.png
deleted file mode 100644
index 41cc9f02..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/AbstractPrivateMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class.png
deleted file mode 100755
index cf548d27..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class_logo.png
deleted file mode 100644
index 6f223c47..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Class_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constant.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constant.png
deleted file mode 100755
index a9c6f28b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constant.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constructor.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constructor.png
deleted file mode 100755
index 3f16222b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Constructor.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Destructor.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Destructor.png
deleted file mode 100755
index f28528f0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Destructor.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Function.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Function.png
deleted file mode 100755
index 902fe258..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Function.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Global.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Global.png
deleted file mode 100755
index 7281bd2a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Global.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/I.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/I.png
deleted file mode 100755
index e8512fb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/I.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Index.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Index.png
deleted file mode 100755
index 6558ec39..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Index.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface.png
deleted file mode 100644
index e6cd51ed..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface_logo.png
deleted file mode 100644
index 6f223c47..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Interface_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/L.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/L.png
deleted file mode 100755
index eb334eda..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/L.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lminus.png
deleted file mode 100755
index f7c43c0a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lplus.png
deleted file mode 100755
index 848ec2fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Lplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Method.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Method.png
deleted file mode 100755
index 9b215784..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Method.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page.png
deleted file mode 100755
index ffe7986e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page_logo.png
deleted file mode 100644
index 44ce0b3c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Page_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass.png
deleted file mode 100755
index 470e6d56..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass_logo.png
deleted file mode 100644
index 590e0064..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateClass_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateMethod.png
deleted file mode 100755
index d01f2b31..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateVariable.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateVariable.png
deleted file mode 100755
index d76b21d4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/PrivateVariable.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticMethod.png
deleted file mode 100755
index 9b215784..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticVariable.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticVariable.png
deleted file mode 100755
index 8e820193..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/StaticVariable.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/T.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/T.png
deleted file mode 100755
index 30173254..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/T.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tminus.png
deleted file mode 100755
index 2260e424..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tplus.png
deleted file mode 100755
index 2c8d8f4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Tplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Variable.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Variable.png
deleted file mode 100755
index 8e820193..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/Variable.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/blank.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/blank.png
deleted file mode 100755
index cee9cd37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/blank.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/class_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/class_folder.png
deleted file mode 100755
index 84e9587a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/class_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/empty.png
deleted file mode 100755
index d5683865..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/file.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/file.png
deleted file mode 100755
index 0bb2427f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/file.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/folder.png
deleted file mode 100755
index a2d79f8d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/function_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/function_folder.png
deleted file mode 100755
index 8b3d6e3b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/function_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/minus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/minus.gif
deleted file mode 100644
index f502662b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/minus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button.png
deleted file mode 100755
index cdbc615d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button_disabled.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button_disabled.png
deleted file mode 100755
index 4a11780f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/next_button_disabled.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package.png
deleted file mode 100755
index b04cf566..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package_folder.png
deleted file mode 100755
index 6162bafd..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/package_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/plus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/plus.gif
deleted file mode 100644
index eeca02ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/plus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button.png
deleted file mode 100755
index 327fdbc2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button_disabled.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button_disabled.png
deleted file mode 100755
index c02ff64b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/previous_button_disabled.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/private_class_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/private_class_logo.png
deleted file mode 100644
index 590e0064..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/private_class_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial.png
deleted file mode 100755
index bc197375..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial_folder.png
deleted file mode 100755
index 2a468b2a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/tutorial_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/up_button.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/up_button.png
deleted file mode 100755
index ff36c593..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/images/up_button.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/lib/classTree.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/lib/classTree.js
deleted file mode 100755
index ebb3fb4a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/lib/classTree.js
+++ /dev/null
@@ -1,454 +0,0 @@
-/*----------------------------------------\
-| Cross Browser Tree Widget 1.1 |
-|-----------------------------------------|
-| Created by Emil A. Eklund (eae@eae.net) |
-| For WebFX (http://webfx.eae.net/) |
-|-----------------------------------------|
-| This script is provided as is without |
-| any warranty whatsoever. It may be used |
-| free of charge for non commerical sites |
-| For commerical use contact the author |
-| of this script for further details. |
-|-----------------------------------------|
-| Created 2000-12-11 | Updated 2001-09-06 |
-\----------------------------------------*/
-
-var webFXTreeConfig = {
- rootIcon : 'media/images/empty.png',
- openRootIcon : 'media/images/empty.png',
- folderIcon : 'media/images/empty.png',
- openFolderIcon : 'media/images/empty.png',
- fileIcon : 'media/images/empty.png',
- iIcon : 'media/images/I.png',
- lIcon : 'media/images/L.png',
- lMinusIcon : 'media/images/Lminus.png',
- lPlusIcon : 'media/images/Lplus.png',
- tIcon : 'media/images/T.png',
- tMinusIcon : 'media/images/Tminus.png',
- tPlusIcon : 'media/images/Tplus.png',
- blankIcon : 'media/images/blank.png',
- defaultText : 'Tree Item',
- defaultAction : 'javascript:void(0);',
- defaultTarget : 'right',
- defaultBehavior : 'classic'
-};
-
-var webFXTreeHandler = {
- idCounter : 0,
- idPrefix : "webfx-tree-object-",
- all : {},
- behavior : null,
- selected : null,
- getId : function() { return this.idPrefix + this.idCounter++; },
- toggle : function (oItem) { this.all[oItem.id.replace('-plus','')].toggle(); },
- select : function (oItem) { this.all[oItem.id.replace('-icon','')].select(); },
- focus : function (oItem) { this.all[oItem.id.replace('-anchor','')].focus(); },
- blur : function (oItem) { this.all[oItem.id.replace('-anchor','')].blur(); },
- keydown : function (oItem) { return this.all[oItem.id].keydown(window.event.keyCode); },
- cookies : new WebFXCookie()
-};
-
-/*
- * WebFXCookie class
- */
-
-function WebFXCookie() {
- if (document.cookie.length) { this.cookies = ' ' + document.cookie; }
-}
-
-WebFXCookie.prototype.setCookie = function (key, value) {
- document.cookie = key + "=" + escape(value);
-}
-
-WebFXCookie.prototype.getCookie = function (key) {
- if (this.cookies) {
- var start = this.cookies.indexOf(' ' + key + '=');
- if (start == -1) { return null; }
- var end = this.cookies.indexOf(";", start);
- if (end == -1) { end = this.cookies.length; }
- end -= start;
- var cookie = this.cookies.substr(start,end);
- return unescape(cookie.substr(cookie.indexOf('=') + 1, cookie.length - cookie.indexOf('=') + 1));
- }
- else { return null; }
-}
-
-/*
- * WebFXTreeAbstractNode class
- */
-
-function WebFXTreeAbstractNode(sText, sAction, sTarget) {
- this.childNodes = [];
- this.id = webFXTreeHandler.getId();
- this.text = sText || webFXTreeConfig.defaultText;
- this.action = sAction || webFXTreeConfig.defaultAction;
- this.targetWindow = sTarget || webFXTreeConfig.defaultTarget;
- this._last = false;
- webFXTreeHandler.all[this.id] = this;
-}
-
-WebFXTreeAbstractNode.prototype.add = function (node) {
- node.parentNode = this;
- this.childNodes[this.childNodes.length] = node;
- var root = this;
- if (this.childNodes.length >=2) {
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- while (root.parentNode) { root = root.parentNode; }
- if (root.rendered) {
- if (this.childNodes.length >= 2) {
- document.getElementById(this.childNodes[this.childNodes.length -2].id + '-plus').src = ((this.childNodes[this.childNodes.length -2].folder)?webFXTreeConfig.tMinusIcon:webFXTreeConfig.tIcon);
- if (this.childNodes[this.childNodes.length -2].folder) {
- this.childNodes[this.childNodes.length -2].plusIcon = webFXTreeConfig.tPlusIcon;
- this.childNodes[this.childNodes.length -2].minusIcon = webFXTreeConfig.tMinusIcon;
- }
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- this._last = true;
- var foo = this;
- while (foo.parentNode) {
- for (var i = 0; i < foo.parentNode.childNodes.length; i++) {
- if (foo.id == foo.parentNode.childNodes[i].id) { break; }
- }
- if (++i == foo.parentNode.childNodes.length) { foo.parentNode._last = true; }
- else { foo.parentNode._last = false; }
- foo = foo.parentNode;
- }
- document.getElementById(this.id + '-cont').insertAdjacentHTML("beforeEnd", node.toString());
- if ((!this.folder) && (!this.openIcon)) {
- this.icon = webFXTreeConfig.folderIcon;
- this.openIcon = webFXTreeConfig.openFolderIcon;
- }
- this.folder = true;
- this.indent();
- this.expand();
- }
- return node;
-}
-
-WebFXTreeAbstractNode.prototype.toggle = function() {
- if (this.folder) {
- if (this.open) { this.collapse(); }
- else { this.expand(); }
- }
-}
-
-WebFXTreeAbstractNode.prototype.select = function() {
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.focus = function() {
- webFXTreeHandler.selected = this;
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.openIcon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'highlight';
- document.getElementById(this.id + '-anchor').style.color = 'highlighttext';
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.blur = function() {
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.icon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'transparent';
- document.getElementById(this.id + '-anchor').style.color = 'menutext';
-}
-
-WebFXTreeAbstractNode.prototype.doExpand = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.openIcon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'block'; }
- this.open = true;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '1');
-}
-
-WebFXTreeAbstractNode.prototype.doCollapse = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.icon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'none'; }
- this.open = false;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '0');
-}
-
-WebFXTreeAbstractNode.prototype.expandAll = function() {
- this.expandChildren();
- if ((this.folder) && (!this.open)) { this.expand(); }
-}
-
-WebFXTreeAbstractNode.prototype.expandChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].expandAll();
-} }
-
-WebFXTreeAbstractNode.prototype.collapseAll = function() {
- if ((this.folder) && (this.open)) { this.collapse(); }
- this.collapseChildren();
-}
-
-WebFXTreeAbstractNode.prototype.collapseChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].collapseAll();
-} }
-
-WebFXTreeAbstractNode.prototype.indent = function(lvl, del, last, level) {
- /*
- * Since we only want to modify items one level below ourself,
- * and since the rightmost indentation position is occupied by
- * the plus icon we set this to -2
- */
- if (lvl == null) { lvl = -2; }
- var state = 0;
- for (var i = this.childNodes.length - 1; i >= 0 ; i--) {
- state = this.childNodes[i].indent(lvl + 1, del, last, level);
- if (state) { return; }
- }
- if (del) {
- if (level >= this._level) {
- if (this.folder) {
- document.getElementById(this.id + '-plus').src = (this.open)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.lPlusIcon;
- this.plusIcon = webFXTreeConfig.lPlusIcon;
- this.minusIcon = webFXTreeConfig.lMinusIcon;
- }
- else { document.getElementById(this.id + '-plus').src = webFXTreeConfig.lIcon; }
- return 1;
- }
- }
- var foo = document.getElementById(this.id + '-indent-' + lvl);
- if (foo) {
- if ((del) && (last)) { foo._last = true; }
- if (foo._last) { foo.src = webFXTreeConfig.blankIcon; }
- else { foo.src = webFXTreeConfig.iIcon; }
- }
- return 0;
-}
-
-/*
- * WebFXTree class
- */
-
-function WebFXTree(sText, sAction, sBehavior, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- this.icon = sIcon || webFXTreeConfig.rootIcon;
- this.openIcon = sOpenIcon || webFXTreeConfig.openRootIcon;
- /* Defaults to open */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '0')?false:true;
- this.folder = true;
- this.rendered = false;
- if (!webFXTreeHandler.behavior) { webFXTreeHandler.behavior = sBehavior || webFXTreeConfig.defaultBehavior; }
- this.targetWindow = 'right';
-}
-
-WebFXTree.prototype = new WebFXTreeAbstractNode;
-
-WebFXTree.prototype.setBehavior = function (sBehavior) {
- webFXTreeHandler.behavior = sBehavior;
-};
-
-WebFXTree.prototype.getBehavior = function (sBehavior) {
- return webFXTreeHandler.behavior;
-};
-
-WebFXTree.prototype.getSelected = function() {
- if (webFXTreeHandler.selected) { return webFXTreeHandler.selected; }
- else { return null; }
-}
-
-WebFXTree.prototype.remove = function() { }
-
-WebFXTree.prototype.expand = function() {
- this.doExpand();
-}
-
-WebFXTree.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
-}
-
-WebFXTree.prototype.getFirst = function() {
- return null;
-}
-
-WebFXTree.prototype.getLast = function() {
- return null;
-}
-
-WebFXTree.prototype.getNextSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.getPreviousSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.keydown = function(key) {
- if (key == 39) { this.expand(); return false; }
- if (key == 37) { this.collapse(); return false; }
- if ((key == 40) && (this.open)) { this.childNodes[0].select(); return false; }
- return true;
-}
-
-WebFXTree.prototype.toString = function() {
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + this.text + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i, this.childNodes.length);
- }
- str += "</div>";
- this.rendered = true;
- return str;
-};
-
-/*
- * WebFXTreeItem class
- */
-
-function WebFXTreeItem(sText, sAction, eParent, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- /* Defaults to close */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '1')?true:false;
- if (eParent) { eParent.add(this); }
- if (sIcon) { this.icon = sIcon; }
- if (sOpenIcon) { this.openIcon = sOpenIcon; }
-}
-
-WebFXTreeItem.prototype = new WebFXTreeAbstractNode;
-
-WebFXTreeItem.prototype.remove = function() {
- var parentNode = this.parentNode;
- var prevSibling = this.getPreviousSibling(true);
- var nextSibling = this.getNextSibling(true);
- var folder = this.parentNode.folder;
- var last = ((nextSibling) && (nextSibling.parentNode) && (nextSibling.parentNode.id == parentNode.id))?false:true;
- this.getPreviousSibling().focus();
- this._remove();
- if (parentNode.childNodes.length == 0) {
- parentNode.folder = false;
- parentNode.open = false;
- }
- if (last) {
- if (parentNode.id == prevSibling.id) {
- document.getElementById(parentNode.id + '-icon').src = webFXTreeConfig.fileIcon;
- }
- else { }
- }
- if ((!prevSibling.parentNode) || (prevSibling.parentNode != parentNode)) {
- parentNode.indent(null, true, last, this._level);
- }
- if (document.getElementById(prevSibling.id + '-plus')) {
- if (nextSibling) {
- if ((parentNode == prevSibling) && (parentNode.getNextSibling)) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.tIcon; }
- else if (nextSibling.parentNode != prevSibling) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
- else { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
-}
-
-WebFXTreeItem.prototype._remove = function() {
- for (var i = this.childNodes.length - 1; i >= 0; i--) {
- this.childNodes[i]._remove();
- }
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this.id == this.parentNode.childNodes[i].id) {
- for (var j = i; j < this.parentNode.childNodes.length; j++) {
- this.parentNode.childNodes[i] = this.parentNode.childNodes[i+1]
- }
- this.parentNode.childNodes.length = this.parentNode.childNodes.length - 1;
- if (i + 1 == this.parentNode.childNodes.length) { this.parentNode._last = true; }
- }
- }
- webFXTreeHandler.all[this.id] = null;
- if (document.getElementById(this.id)) {
- document.getElementById(this.id).innerHTML = "";
- document.getElementById(this.id).removeNode();
- }
-}
-
-WebFXTreeItem.prototype.expand = function() {
- this.doExpand();
- document.getElementById(this.id + '-plus').src = this.minusIcon;
-}
-
-WebFXTreeItem.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
- document.getElementById(this.id + '-plus').src = this.plusIcon;
-}
-
-WebFXTreeItem.prototype.getFirst = function() {
- return this.childNodes[0];
-}
-
-WebFXTreeItem.prototype.getLast = function() {
- if (this.childNodes[this.childNodes.length - 1].open) { return this.childNodes[this.childNodes.length - 1].getLast(); }
- else { return this.childNodes[this.childNodes.length - 1]; }
-}
-
-WebFXTreeItem.prototype.getNextSibling = function() {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (++i == this.parentNode.childNodes.length) { return this.parentNode.getNextSibling(); }
- else { return this.parentNode.childNodes[i]; }
-}
-
-WebFXTreeItem.prototype.getPreviousSibling = function(b) {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (i == 0) { return this.parentNode; }
- else {
- if ((this.parentNode.childNodes[--i].open) || (b && this.parentNode.childNodes[i].folder)) { return this.parentNode.childNodes[i].getLast(); }
- else { return this.parentNode.childNodes[i]; }
-} }
-
-WebFXTreeItem.prototype.keydown = function(key) {
- if ((key == 39) && (this.folder)) {
- if (!this.open) { this.expand(); return false; }
- else { this.getFirst().select(); return false; }
- }
- else if (key == 37) {
- if (this.open) { this.collapse(); return false; }
- else { this.parentNode.select(); return false; }
- }
- else if (key == 40) {
- if (this.open) { this.getFirst().select(); return false; }
- else {
- var sib = this.getNextSibling();
- if (sib) { sib.select(); return false; }
- } }
- else if (key == 38) { this.getPreviousSibling().select(); return false; }
- return true;
-}
-
-WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
- var foo = this.parentNode;
- var indent = '';
- if (nItem + 1 == nItemCount) { this.parentNode._last = true; }
- var i = 0;
- while (foo.parentNode) {
- foo = foo.parentNode;
- indent = "<img id=\"" + this.id + "-indent-" + i + "\" src=\"" + ((foo._last)?webFXTreeConfig.blankIcon:webFXTreeConfig.iIcon) + "\">" + indent;
- i++;
- }
- this._level = i;
- if (this.childNodes.length) { this.folder = 1; }
- else { this.open = false; }
- if ((this.folder) || (webFXTreeHandler.behavior != 'classic')) {
- if (!this.icon) { this.icon = webFXTreeConfig.folderIcon; }
- if (!this.openIcon) { this.openIcon = webFXTreeConfig.openFolderIcon; }
- }
- else if (!this.icon) { this.icon = webFXTreeConfig.fileIcon; }
- var label = this.text;
- label = label.replace('<', '<');
- label = label.replace('>', '>');
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += indent;
- str += "<img id=\"" + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" onclick=\"webFXTreeHandler.toggle(this);\">"
- str += "<img id=\"" + this.id + "-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + label + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i,this.childNodes.length);
- }
- str += "</div>";
- this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
- this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
- return str;
-} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/stylesheet.css
deleted file mode 100755
index 5b025a93..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/media/stylesheet.css
+++ /dev/null
@@ -1,181 +0,0 @@
-a { color: #000090; text-decoration: none; }
-a:hover, a:active, a:focus { color: highlighttext; background-color: highlight; text-decoration: none; }
-
-body { background : #FFFFFF; }
-body, table { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; }
-
-a img { border: 0px; }
-
-/* Page layout/boxes */
-
-.info-box { }
-.info-box-title { margin: 1em 0em 0em 0em; font-weight: normal; font-size: 14pt; color: #999999; border-bottom: 2px solid #999999; }
-.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 { }
-
-/* 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; color: #014fbe; list-style-type: square; }
-.redefinitions { font-size: 8pt; padding-left: 0em; margin-left: 2em; }
-.package { font-weight: bold; }
-.package-title { font-weight: bold; font-size: 14pt; border-bottom: 1px solid black }
-.sub-package { font-weight: bold; }
-.tutorial { border-width: thin; border-color: #0066ff; }
-.tutorial-nav-box { width: 100%; border: 1px solid #999999; background-color: #F8F8F8; }
-
-/* 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: #0000AA; font-weight: bold; }
-
-.method-summary { color: #009000; padding-left: 1em; font-size: 8pt; }
-.method-header { }
-.method-definition { margin-bottom: .2em }
-.method-title { color: #009000; 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 { color: #014fbe; margin-bottom: .3em }
-.var-type { font-style: italic; }
-.var-name { font-weight: bold; }
-.var-default {}
-.var-description { font-weight: normal; color: #000000; }
-
-.include-title { color: #014fbe;}
-.include-type { font-style: italic; }
-.include-name { font-weight: bold; }
-
-.const-title { color: #FF6600; }
-.const-name { font-weight: bold; }
-
-/* Syntax highlighting */
-
-.src-code { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.src-code a:link { padding: 1px; text-decoration: underline; color: #0000DD; }
-.src-code a:visited { text-decoration: underline; color: #0000DD; }
-.src-code a:active { background-color: #FFFF66; color: #008000; }
-.src-code a:hover { background-color: #FFFF66; text-decoration: overline underline; color: #008000; }
-
-.src-comm { color: #666666; }
-.src-id { color: #FF6600; font-style: italic; }
-.src-inc { color: #0000AA; font-weight: bold; }
-.src-key { color: #0000AA; font-weight: bold; }
-.src-num { color: #CC0000; }
-.src-str { color: #CC0000; }
-.src-sym { }
-.src-var { }
-
-.src-php { font-weight: bold; }
-
-.src-doc { color: #666666; }
-.src-doc-close-template { color: #666666 }
-.src-doc-coretag { color: #008000; }
-.src-doc-inlinetag {}
-.src-doc-internal {}
-.src-doc-tag { color: #0080CC; }
-.src-doc-template { color: #666666 }
-.src-doc-type { font-style: italic; color: #444444 }
-.src-doc-var { color: #444444 }
-
-.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; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-.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; border-bottom: 1px solid #999999; color: #999999; }
-.cmd-synopsis { margin: 1em 0em }
-.cmd-title { font-weight: bold }
-.toc { margin-left: 2em; padding-left: 0em }
-
-/*------------------------------------------------------------------------------
- webfx-tree
-------------------------------------------------------------------------------*/
-
-.webfx-tree-container {
- margin: 0px;
- padding: 0px;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item {
- padding: 0px;
- margin: 0px;
- color: black;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item a {
- margin-left: 3px;
- padding: 1px 2px 1px 2px;
- color: black;
- text-decoration: none;
-}
-
-.webfx-tree-item a:hover, .webfx-tree-item a:active {
- color: highlighttext;
- background: highlight;
- text-decoration: none
-}
-
-.webfx-tree-item img {
- vertical-align: middle;
- border: 0px;
-}
-
-.webfx-tree-icon {
- width: 16px;
- height: 16px;
-}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/method.tpl
deleted file mode 100755
index 547e261d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/method.tpl
+++ /dev/null
@@ -1,151 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<a name="method{$methods[methods].function_name}" id="{$methods[methods].function_name}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="method-header">
- <img src="{$subdir}media/images/StaticMethod.png" />
- <span class="method-title">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<a name="method{$methods[methods].function_name}" id="{$methods[methods].function_name}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="method-header">
- <img src="{$subdir}media/images/{if $methods[methods].ifunction_call.constructor}Constructor{elseif $methods[methods].ifunction_call.destructor}Destructor{else}{if $methods[methods].abstract}Abstract{/if}{if $methods[methods].access == 'private'}Private{/if}Method{/if}.png" />
- <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/page.tpl
deleted file mode 100755
index 2cffc22d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/page.tpl
+++ /dev/null
@@ -1,214 +0,0 @@
-{include file="header.tpl" top3=true}
-
-<h2 class="file-name"><img src="{$subdir}media/images/Page_logo.png" alt="File" style="vertical-align: middle">{$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; white-space: nowrap">
- <img src="{$subdir}media/images/{if $classes[classes].abstract}Abstract{/if}{if $classes[classes].access == 'private'}Private{/if}Class.png"
- alt="{if $classes[classes].abstract}Abstract{/if}{if $classes[classes].access == 'private'}Private{/if} class"
- title="{if $classes[classes].abstract}Abstract{/if}{if $classes[classes].access == 'private'}Private{/if} class"/>
- {$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 $functions}
- <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/DOM/earthli/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/ric.tpl
deleted file mode 100755
index ad792475..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<div align="center"><h1>{$name}</h1></div>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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/DOM/earthli/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_nav.tpl
deleted file mode 100755
index 3cd7893d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/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}"><img src="{$subdir}media/images/previous_button.png" alt="Previous"></a>
- {else}
- <span class="disabled"><img src="{$subdir}media/images/previous_button_disabled.png" alt="Previous"></span>
- {/if}
- </td>
- <td style="text-align: center">
- {if $up}
- <a href="{$up}"><img src="{$subdir}media/images/up_button.png" alt="Up"></a>
- {/if}
- </td>
- <td style="text-align: right; width: 30%">
- {if $next}
- <a href="{$next}"><img src="{$subdir}media/images/next_button.png" alt="Next"></a>
- {else}
- <span class="disabled"><img src="{$subdir}media/images/next_button_disabled.png" alt="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/DOM/earthli/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/DOM/earthli/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_tree.tpl
deleted file mode 100755
index 8b10e9db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
- var a{$name|replace:"-":"_"}node = new WebFXTreeItem('{$main.title|strip_tags|escape:"quotes"}','{$main.link}', parent_node,
- 'media/images/tutorial.png', 'media/images/tutorial.png');
-
-{if $haskids}
- var a{$name|replace:"-":"_"}_old_parent_node = parent_node;
- parent_node = a{$name|replace:"-":"_"}node;
- {$kids}
- parent_node = a{$name|replace:"-":"_"}_old_parent_node;
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/var.tpl
deleted file mode 100755
index a82d1bfa..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/earthli/templates/var.tpl
+++ /dev/null
@@ -1,94 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<a name="var{$vars[vars].var_name}" id="{$vars[vars].var_name}"><!-- --></A>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="var-header">
- <img src="{$subdir}media/images/StaticVariable.png" />
- <span class="var-title">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<a name="var{$vars[vars].var_name}" id="{$vars[vars].var_name}"><!-- --></A>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="var-header">
- <img src="{$subdir}media/images/{if $vars[vars].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
- <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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/options.ini
deleted file mode 100755
index 084809be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/DOM/l0l33t/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/basicindex.tpl
deleted file mode 100755
index 951ee264..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/class.tpl
deleted file mode 100755
index 9ab7c455..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/class.tpl
+++ /dev/null
@@ -1,429 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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/DOM/l0l33t/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/define.tpl
deleted file mode 100755
index 0da5d864..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/function.tpl
deleted file mode 100755
index b6880059..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/global.tpl
deleted file mode 100755
index eab7e0b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/header.tpl
deleted file mode 100755
index cd34cf9f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/header.tpl
+++ /dev/null
@@ -1,99 +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" />
- {if $top2 || $top3}
- <script src="{$subdir}media/lib/classTree.js"></script>
- {/if}
- {if $top2}
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
- <link rel="stylesheet" href="{$subdir}media/banner.css" />
- <style>
- body {ldelim} padding: 1em {rdelim}
- </style>
- {/if}
- {if $top3 || $top2}
- <script language="javascript" type="text/javascript">
- var imgPlus = new Image();
- var imgMinus = new Image();
- imgPlus.src = "{$subdir}media/images/plus.png";
- imgMinus.src = "{$subdir}media/images/minus.png";
-
- function showNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgMinus.src;
- oTable.style.display = "block";
- {rdelim}
-
- function hideNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgPlus.src;
- oTable.style.display = "none";
- {rdelim}
-
- function nodeIsVisible(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- break;
- {rdelim}
- return (oTable && oTable.style.display == "block");
- {rdelim}
-
- function toggleNodeVisibility(Node){ldelim}
- if (nodeIsVisible(Node)){ldelim}
- hideNode(Node);
- {rdelim}else{ldelim}
- showNode(Node);
- {rdelim}
- {rdelim}
- </script>
- {/if}
- </head>
- <body>
- {if $top3}<div class="page-body">{/if}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/include.tpl
deleted file mode 100755
index c2419e5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/left_frame.tpl
deleted file mode 100755
index 2072566d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/left_frame.tpl
+++ /dev/null
@@ -1,198 +0,0 @@
-{include file="header.tpl" top2=true}
-<h3 class="package-title">{$info.0.package}</h3>
-<div class="tree">
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=p loop=$info}
- {if $info[p].subpackage == ""}
- var tree = new WebFXTree('<span class="package">{$info.0.package}</span>');
- tree.setBehavior('classic');
-
- {if $hastodos}
- var todos = new WebFXTreeItem('To-do List', '{$todolink}');
- tree.add(todos);
- {/if}
-
- var class_trees = new WebFXTreeItem('Class trees', '{$classtreepage}.html');
- tree.add(class_trees);
-
- var elements = new WebFXTreeItem('Index of elements', '{$elementindex}.html');
- tree.add(elements);
-
- var parent_node;
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].hasinterfaces}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Interface(s)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
- {if $info[p].hasclasses}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
-
- {if $info[p].functions}
- var tree_function = new WebFXTreeItem('Function(s)', '{$packagedoc}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- tree_function.add(fic);
- {/section}
-
- tree.add(tree_function);
- {/if}
-
- {if $info[p].files}
- var tree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- tree_file.add(file);
- {/section}
-
- tree.add(tree_file);
- {/if}
-
- {else}
- {if $info[p].subpackagetutorial}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackagetutorialtitle|strip_tags|escape:"quotes"}</span>', '{$info[p].subpackagetutorialnoa}');
- {else}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackage}</span>', '{$packagedoc|escape:"quotes"}');
- {/if}
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].classes}
- var subpackagetree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc|escape:"quotes"}');
-
- {section name=class loop=$info[p].classes}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- subpackagetree_classe.add(classe);
- {/section}
-
- subpackagetree.add(subpackagetree_classe);
- {/if}
-
- {if $info[p].functions}
- var subpackagetree_function = new WebFXTreeItem('Function(s)', '{$packagedoc}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- subpackagetree_function.add(fic);
- {/section}
-
- subpackagetree.add(subpackagetree_function);
- {/if}
-
- {if $info[p].files}
- var subpackagetree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- subpackagetree_file.add(file);
- {/section}
-
- subpackagetree.add(subpackagetree_file);
- {/if}
-
- tree.add(subpackagetree);
- {/if}
-{/section}
-
-document.write(tree);
-{rdelim}
-</script>
-</div>
-<p class="notes">
- Generated by
- <a href="{$phpdocwebsite}" target="_blank">phpDocumentor <span class="field">{$phpdocversion}</span></a>
-</p>
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/banner.css
deleted file mode 100755
index 4f7db5da..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background: #EEEEEE url(bg_left.png) repeat;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #999999;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #EEEEEE;
- border: 1px solid black;
- color: #0000C0;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/bg_left.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/bg_left.png
deleted file mode 100755
index 1c331f09..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/bg_left.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/I.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/I.png
deleted file mode 100755
index e8512fb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/I.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/L.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/L.png
deleted file mode 100755
index eb334eda..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/L.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lminus.png
deleted file mode 100755
index f7c43c0a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lplus.png
deleted file mode 100755
index 848ec2fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Lplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/T.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/T.png
deleted file mode 100755
index 30173254..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/T.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tminus.png
deleted file mode 100755
index 2260e424..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tplus.png
deleted file mode 100755
index 2c8d8f4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/Tplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/blank.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/blank.png
deleted file mode 100755
index cee9cd37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/blank.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/empty.png
deleted file mode 100755
index d5683865..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/images/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/lib/classTree.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/lib/classTree.js
deleted file mode 100755
index ebb3fb4a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/lib/classTree.js
+++ /dev/null
@@ -1,454 +0,0 @@
-/*----------------------------------------\
-| Cross Browser Tree Widget 1.1 |
-|-----------------------------------------|
-| Created by Emil A. Eklund (eae@eae.net) |
-| For WebFX (http://webfx.eae.net/) |
-|-----------------------------------------|
-| This script is provided as is without |
-| any warranty whatsoever. It may be used |
-| free of charge for non commerical sites |
-| For commerical use contact the author |
-| of this script for further details. |
-|-----------------------------------------|
-| Created 2000-12-11 | Updated 2001-09-06 |
-\----------------------------------------*/
-
-var webFXTreeConfig = {
- rootIcon : 'media/images/empty.png',
- openRootIcon : 'media/images/empty.png',
- folderIcon : 'media/images/empty.png',
- openFolderIcon : 'media/images/empty.png',
- fileIcon : 'media/images/empty.png',
- iIcon : 'media/images/I.png',
- lIcon : 'media/images/L.png',
- lMinusIcon : 'media/images/Lminus.png',
- lPlusIcon : 'media/images/Lplus.png',
- tIcon : 'media/images/T.png',
- tMinusIcon : 'media/images/Tminus.png',
- tPlusIcon : 'media/images/Tplus.png',
- blankIcon : 'media/images/blank.png',
- defaultText : 'Tree Item',
- defaultAction : 'javascript:void(0);',
- defaultTarget : 'right',
- defaultBehavior : 'classic'
-};
-
-var webFXTreeHandler = {
- idCounter : 0,
- idPrefix : "webfx-tree-object-",
- all : {},
- behavior : null,
- selected : null,
- getId : function() { return this.idPrefix + this.idCounter++; },
- toggle : function (oItem) { this.all[oItem.id.replace('-plus','')].toggle(); },
- select : function (oItem) { this.all[oItem.id.replace('-icon','')].select(); },
- focus : function (oItem) { this.all[oItem.id.replace('-anchor','')].focus(); },
- blur : function (oItem) { this.all[oItem.id.replace('-anchor','')].blur(); },
- keydown : function (oItem) { return this.all[oItem.id].keydown(window.event.keyCode); },
- cookies : new WebFXCookie()
-};
-
-/*
- * WebFXCookie class
- */
-
-function WebFXCookie() {
- if (document.cookie.length) { this.cookies = ' ' + document.cookie; }
-}
-
-WebFXCookie.prototype.setCookie = function (key, value) {
- document.cookie = key + "=" + escape(value);
-}
-
-WebFXCookie.prototype.getCookie = function (key) {
- if (this.cookies) {
- var start = this.cookies.indexOf(' ' + key + '=');
- if (start == -1) { return null; }
- var end = this.cookies.indexOf(";", start);
- if (end == -1) { end = this.cookies.length; }
- end -= start;
- var cookie = this.cookies.substr(start,end);
- return unescape(cookie.substr(cookie.indexOf('=') + 1, cookie.length - cookie.indexOf('=') + 1));
- }
- else { return null; }
-}
-
-/*
- * WebFXTreeAbstractNode class
- */
-
-function WebFXTreeAbstractNode(sText, sAction, sTarget) {
- this.childNodes = [];
- this.id = webFXTreeHandler.getId();
- this.text = sText || webFXTreeConfig.defaultText;
- this.action = sAction || webFXTreeConfig.defaultAction;
- this.targetWindow = sTarget || webFXTreeConfig.defaultTarget;
- this._last = false;
- webFXTreeHandler.all[this.id] = this;
-}
-
-WebFXTreeAbstractNode.prototype.add = function (node) {
- node.parentNode = this;
- this.childNodes[this.childNodes.length] = node;
- var root = this;
- if (this.childNodes.length >=2) {
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- while (root.parentNode) { root = root.parentNode; }
- if (root.rendered) {
- if (this.childNodes.length >= 2) {
- document.getElementById(this.childNodes[this.childNodes.length -2].id + '-plus').src = ((this.childNodes[this.childNodes.length -2].folder)?webFXTreeConfig.tMinusIcon:webFXTreeConfig.tIcon);
- if (this.childNodes[this.childNodes.length -2].folder) {
- this.childNodes[this.childNodes.length -2].plusIcon = webFXTreeConfig.tPlusIcon;
- this.childNodes[this.childNodes.length -2].minusIcon = webFXTreeConfig.tMinusIcon;
- }
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- this._last = true;
- var foo = this;
- while (foo.parentNode) {
- for (var i = 0; i < foo.parentNode.childNodes.length; i++) {
- if (foo.id == foo.parentNode.childNodes[i].id) { break; }
- }
- if (++i == foo.parentNode.childNodes.length) { foo.parentNode._last = true; }
- else { foo.parentNode._last = false; }
- foo = foo.parentNode;
- }
- document.getElementById(this.id + '-cont').insertAdjacentHTML("beforeEnd", node.toString());
- if ((!this.folder) && (!this.openIcon)) {
- this.icon = webFXTreeConfig.folderIcon;
- this.openIcon = webFXTreeConfig.openFolderIcon;
- }
- this.folder = true;
- this.indent();
- this.expand();
- }
- return node;
-}
-
-WebFXTreeAbstractNode.prototype.toggle = function() {
- if (this.folder) {
- if (this.open) { this.collapse(); }
- else { this.expand(); }
- }
-}
-
-WebFXTreeAbstractNode.prototype.select = function() {
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.focus = function() {
- webFXTreeHandler.selected = this;
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.openIcon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'highlight';
- document.getElementById(this.id + '-anchor').style.color = 'highlighttext';
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.blur = function() {
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.icon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'transparent';
- document.getElementById(this.id + '-anchor').style.color = 'menutext';
-}
-
-WebFXTreeAbstractNode.prototype.doExpand = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.openIcon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'block'; }
- this.open = true;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '1');
-}
-
-WebFXTreeAbstractNode.prototype.doCollapse = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.icon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'none'; }
- this.open = false;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '0');
-}
-
-WebFXTreeAbstractNode.prototype.expandAll = function() {
- this.expandChildren();
- if ((this.folder) && (!this.open)) { this.expand(); }
-}
-
-WebFXTreeAbstractNode.prototype.expandChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].expandAll();
-} }
-
-WebFXTreeAbstractNode.prototype.collapseAll = function() {
- if ((this.folder) && (this.open)) { this.collapse(); }
- this.collapseChildren();
-}
-
-WebFXTreeAbstractNode.prototype.collapseChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].collapseAll();
-} }
-
-WebFXTreeAbstractNode.prototype.indent = function(lvl, del, last, level) {
- /*
- * Since we only want to modify items one level below ourself,
- * and since the rightmost indentation position is occupied by
- * the plus icon we set this to -2
- */
- if (lvl == null) { lvl = -2; }
- var state = 0;
- for (var i = this.childNodes.length - 1; i >= 0 ; i--) {
- state = this.childNodes[i].indent(lvl + 1, del, last, level);
- if (state) { return; }
- }
- if (del) {
- if (level >= this._level) {
- if (this.folder) {
- document.getElementById(this.id + '-plus').src = (this.open)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.lPlusIcon;
- this.plusIcon = webFXTreeConfig.lPlusIcon;
- this.minusIcon = webFXTreeConfig.lMinusIcon;
- }
- else { document.getElementById(this.id + '-plus').src = webFXTreeConfig.lIcon; }
- return 1;
- }
- }
- var foo = document.getElementById(this.id + '-indent-' + lvl);
- if (foo) {
- if ((del) && (last)) { foo._last = true; }
- if (foo._last) { foo.src = webFXTreeConfig.blankIcon; }
- else { foo.src = webFXTreeConfig.iIcon; }
- }
- return 0;
-}
-
-/*
- * WebFXTree class
- */
-
-function WebFXTree(sText, sAction, sBehavior, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- this.icon = sIcon || webFXTreeConfig.rootIcon;
- this.openIcon = sOpenIcon || webFXTreeConfig.openRootIcon;
- /* Defaults to open */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '0')?false:true;
- this.folder = true;
- this.rendered = false;
- if (!webFXTreeHandler.behavior) { webFXTreeHandler.behavior = sBehavior || webFXTreeConfig.defaultBehavior; }
- this.targetWindow = 'right';
-}
-
-WebFXTree.prototype = new WebFXTreeAbstractNode;
-
-WebFXTree.prototype.setBehavior = function (sBehavior) {
- webFXTreeHandler.behavior = sBehavior;
-};
-
-WebFXTree.prototype.getBehavior = function (sBehavior) {
- return webFXTreeHandler.behavior;
-};
-
-WebFXTree.prototype.getSelected = function() {
- if (webFXTreeHandler.selected) { return webFXTreeHandler.selected; }
- else { return null; }
-}
-
-WebFXTree.prototype.remove = function() { }
-
-WebFXTree.prototype.expand = function() {
- this.doExpand();
-}
-
-WebFXTree.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
-}
-
-WebFXTree.prototype.getFirst = function() {
- return null;
-}
-
-WebFXTree.prototype.getLast = function() {
- return null;
-}
-
-WebFXTree.prototype.getNextSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.getPreviousSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.keydown = function(key) {
- if (key == 39) { this.expand(); return false; }
- if (key == 37) { this.collapse(); return false; }
- if ((key == 40) && (this.open)) { this.childNodes[0].select(); return false; }
- return true;
-}
-
-WebFXTree.prototype.toString = function() {
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + this.text + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i, this.childNodes.length);
- }
- str += "</div>";
- this.rendered = true;
- return str;
-};
-
-/*
- * WebFXTreeItem class
- */
-
-function WebFXTreeItem(sText, sAction, eParent, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- /* Defaults to close */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '1')?true:false;
- if (eParent) { eParent.add(this); }
- if (sIcon) { this.icon = sIcon; }
- if (sOpenIcon) { this.openIcon = sOpenIcon; }
-}
-
-WebFXTreeItem.prototype = new WebFXTreeAbstractNode;
-
-WebFXTreeItem.prototype.remove = function() {
- var parentNode = this.parentNode;
- var prevSibling = this.getPreviousSibling(true);
- var nextSibling = this.getNextSibling(true);
- var folder = this.parentNode.folder;
- var last = ((nextSibling) && (nextSibling.parentNode) && (nextSibling.parentNode.id == parentNode.id))?false:true;
- this.getPreviousSibling().focus();
- this._remove();
- if (parentNode.childNodes.length == 0) {
- parentNode.folder = false;
- parentNode.open = false;
- }
- if (last) {
- if (parentNode.id == prevSibling.id) {
- document.getElementById(parentNode.id + '-icon').src = webFXTreeConfig.fileIcon;
- }
- else { }
- }
- if ((!prevSibling.parentNode) || (prevSibling.parentNode != parentNode)) {
- parentNode.indent(null, true, last, this._level);
- }
- if (document.getElementById(prevSibling.id + '-plus')) {
- if (nextSibling) {
- if ((parentNode == prevSibling) && (parentNode.getNextSibling)) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.tIcon; }
- else if (nextSibling.parentNode != prevSibling) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
- else { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
-}
-
-WebFXTreeItem.prototype._remove = function() {
- for (var i = this.childNodes.length - 1; i >= 0; i--) {
- this.childNodes[i]._remove();
- }
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this.id == this.parentNode.childNodes[i].id) {
- for (var j = i; j < this.parentNode.childNodes.length; j++) {
- this.parentNode.childNodes[i] = this.parentNode.childNodes[i+1]
- }
- this.parentNode.childNodes.length = this.parentNode.childNodes.length - 1;
- if (i + 1 == this.parentNode.childNodes.length) { this.parentNode._last = true; }
- }
- }
- webFXTreeHandler.all[this.id] = null;
- if (document.getElementById(this.id)) {
- document.getElementById(this.id).innerHTML = "";
- document.getElementById(this.id).removeNode();
- }
-}
-
-WebFXTreeItem.prototype.expand = function() {
- this.doExpand();
- document.getElementById(this.id + '-plus').src = this.minusIcon;
-}
-
-WebFXTreeItem.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
- document.getElementById(this.id + '-plus').src = this.plusIcon;
-}
-
-WebFXTreeItem.prototype.getFirst = function() {
- return this.childNodes[0];
-}
-
-WebFXTreeItem.prototype.getLast = function() {
- if (this.childNodes[this.childNodes.length - 1].open) { return this.childNodes[this.childNodes.length - 1].getLast(); }
- else { return this.childNodes[this.childNodes.length - 1]; }
-}
-
-WebFXTreeItem.prototype.getNextSibling = function() {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (++i == this.parentNode.childNodes.length) { return this.parentNode.getNextSibling(); }
- else { return this.parentNode.childNodes[i]; }
-}
-
-WebFXTreeItem.prototype.getPreviousSibling = function(b) {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (i == 0) { return this.parentNode; }
- else {
- if ((this.parentNode.childNodes[--i].open) || (b && this.parentNode.childNodes[i].folder)) { return this.parentNode.childNodes[i].getLast(); }
- else { return this.parentNode.childNodes[i]; }
-} }
-
-WebFXTreeItem.prototype.keydown = function(key) {
- if ((key == 39) && (this.folder)) {
- if (!this.open) { this.expand(); return false; }
- else { this.getFirst().select(); return false; }
- }
- else if (key == 37) {
- if (this.open) { this.collapse(); return false; }
- else { this.parentNode.select(); return false; }
- }
- else if (key == 40) {
- if (this.open) { this.getFirst().select(); return false; }
- else {
- var sib = this.getNextSibling();
- if (sib) { sib.select(); return false; }
- } }
- else if (key == 38) { this.getPreviousSibling().select(); return false; }
- return true;
-}
-
-WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
- var foo = this.parentNode;
- var indent = '';
- if (nItem + 1 == nItemCount) { this.parentNode._last = true; }
- var i = 0;
- while (foo.parentNode) {
- foo = foo.parentNode;
- indent = "<img id=\"" + this.id + "-indent-" + i + "\" src=\"" + ((foo._last)?webFXTreeConfig.blankIcon:webFXTreeConfig.iIcon) + "\">" + indent;
- i++;
- }
- this._level = i;
- if (this.childNodes.length) { this.folder = 1; }
- else { this.open = false; }
- if ((this.folder) || (webFXTreeHandler.behavior != 'classic')) {
- if (!this.icon) { this.icon = webFXTreeConfig.folderIcon; }
- if (!this.openIcon) { this.openIcon = webFXTreeConfig.openFolderIcon; }
- }
- else if (!this.icon) { this.icon = webFXTreeConfig.fileIcon; }
- var label = this.text;
- label = label.replace('<', '<');
- label = label.replace('>', '>');
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += indent;
- str += "<img id=\"" + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" onclick=\"webFXTreeHandler.toggle(this);\">"
- str += "<img id=\"" + this.id + "-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + label + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i,this.childNodes.length);
- }
- str += "</div>";
- this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
- this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
- return str;
-} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/minus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/minus.gif
deleted file mode 100755
index f502662b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/minus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/plus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/plus.gif
deleted file mode 100755
index eeca02ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/plus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/stylesheet.css
deleted file mode 100755
index 3552b78f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/media/stylesheet.css
+++ /dev/null
@@ -1,196 +0,0 @@
-a
-{
- color: #336699;
- text-decoration: underline;
-}
-
-a:hover, a:active, a:focus
-{
- text-decoration: underline;
- color: #6699CC
-}
-
-body { background : #FFFFFF; font-family: "Courier New", Courier, fixed; font-size: 10pt }
-table { 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: 1px solid #336699; background-color: #EEEEEE }
-.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: #F4F4F4; 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; }
-.menu-body { background: #EEEEEE url(bg_left.css) repeat }
-.tree dl { margin: 0px }
-.tree a { text-decoration: none }
-.tree a:hover, .tree a:active, .tree a:focus { text-decoration: underline }
-
-/* 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 #AAAAAA; background: #EEEEEE url(bg_left.png) repeat; }
-.nav-button-disabled { color: #AAAAAA; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover { background-color: #CCCCCC; 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: #CC0000; }
-.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; background-color: DDDDFF }
-.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; border: 1px dashed #336699 }
-.var-name { font-weight: bold; }
-.var-default { border: 1px dashed #336699 }
-.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;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.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 solid #336699; background-color: #F4F4F4; padding: .5em; }
-.listing { border: 1px solid #336699; background-color: #F4F4F4; padding: .5em; white-space: nowrap; }
-.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; border-bottom: 1px solid #336699; padding: 2px }
-.cmd-synopsis { margin: 1em 0em }
-.cmd-title { font-weight: bold }
-.toc { margin-left: 2em; padding-left: 0em }
-
-/*------------------------------------------------------------------------------
- webfx-tree
-------------------------------------------------------------------------------*/
-
-.webfx-tree-container {
- margin: 0px;
- padding: 0px;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item {
- padding: 0px;
- margin: 0px;
- color: black;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item a {
- margin-left: 3px;
- padding: 1px 2px 1px 2px;
- color: black;
- text-decoration: none;
-}
-
-.webfx-tree-item a:hover, .webfx-tree-item a:active, .webfx-tree-item a:focus {
- color: white;
- background: #6699CC;
- text-decoration: none
-}
-
-.webfx-tree-item img {
- vertical-align: middle;
- border: 0px;
-}
-
-.webfx-tree-icon {
- width: 16px;
- height: 16px;
-}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/method.tpl
deleted file mode 100755
index 06d57a12..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/method.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/page.tpl
deleted file mode 100755
index b5980236..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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 $functions}
- <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/DOM/l0l33t/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/ric.tpl
deleted file mode 100755
index ad792475..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<div align="center"><h1>{$name}</h1></div>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_nav.tpl
deleted file mode 100755
index 89952301..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/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/DOM/l0l33t/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/DOM/l0l33t/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_tree.tpl
deleted file mode 100755
index 40d9a4ff..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
- var a{$name|replace:"-":"_"}node = new WebFXTreeItem('{$main.title|strip_tags|escape:"quotes"}','{$main.link}', parent_node);
-
-{if $haskids}
- var a{$name|replace:"-":"_"}_old_parent_node = parent_node;
- parent_node = a{$name|replace:"-":"_"}node;
- {$kids}
- parent_node = a{$name|replace:"-":"_"}_old_parent_node;
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/var.tpl
deleted file mode 100755
index fccf6892..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/l0l33t/templates/var.tpl
+++ /dev/null
@@ -1,92 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/options.ini
deleted file mode 100755
index 084809be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/DOM/phpdoc.de/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/basicindex.tpl
deleted file mode 100755
index 951ee264..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/class.tpl
deleted file mode 100755
index 9ab7c455..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/class.tpl
+++ /dev/null
@@ -1,429 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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/DOM/phpdoc.de/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/define.tpl
deleted file mode 100755
index 0da5d864..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/function.tpl
deleted file mode 100755
index b6880059..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/global.tpl
deleted file mode 100755
index eab7e0b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/header.tpl
deleted file mode 100755
index 0d626190..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/header.tpl
+++ /dev/null
@@ -1,95 +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" />
- {if $top2 || $top3}
- <script src="{$subdir}media/lib/classTree.js"></script>
- {/if}
- {if $top2}
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
- {/if}
- {if $top3 || $top2}
- <script language="javascript" type="text/javascript">
- var imgPlus = new Image();
- var imgMinus = new Image();
- imgPlus.src = "{$subdir}media/images/plus.png";
- imgMinus.src = "{$subdir}media/images/minus.png";
-
- function showNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgMinus.src;
- oTable.style.display = "block";
- {rdelim}
-
- function hideNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgPlus.src;
- oTable.style.display = "none";
- {rdelim}
-
- function nodeIsVisible(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- break;
- {rdelim}
- return (oTable && oTable.style.display == "block");
- {rdelim}
-
- function toggleNodeVisibility(Node){ldelim}
- if (nodeIsVisible(Node)){ldelim}
- hideNode(Node);
- {rdelim}else{ldelim}
- showNode(Node);
- {rdelim}
- {rdelim}
- </script>
- {/if}
- </head>
- <body>
- {if $top3}<div class="page-body">{/if}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/include.tpl
deleted file mode 100755
index c2419e5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/left_frame.tpl
deleted file mode 100755
index 98fc3135..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/left_frame.tpl
+++ /dev/null
@@ -1,217 +0,0 @@
-{include file="header.tpl" top2=true}
-<h3 class="package-title">{$info.0.package}</h3>
-<div class="tree">
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=p loop=$info}
- {if $info[p].subpackage == ""}
- var tree = new WebFXTree('<span class="package">{$info.0.package}</span>');
- tree.setBehavior('classic');
-
- {if $hastodos}
- var todos = new WebFXTreeItem('To-do List', '{$todolink}');
- tree.add(todos);
- {/if}
-
- var class_trees = new WebFXTreeItem('Class trees', '{$classtreepage}.html');
- tree.add(class_trees);
-
- var elements = new WebFXTreeItem('Index of elements', '{$elementindex}.html');
- tree.add(elements);
-
- var parent_node;
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].hasinterfaces}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Interface(s)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
- {if $info[p].hasclasses}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
-
- {if $info[p].functions}
- var tree_function = new WebFXTreeItem('Function(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- tree_function.add(fic);
- {/section}
-
- tree.add(tree_function);
- {/if}
-
- {if $info[p].files}
- var tree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- tree_file.add(file);
- {/section}
-
- tree.add(tree_file);
- {/if}
-
- {else}
- {if $info[p].subpackagetutorial}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackagetutorialtitle|strip_tags|escape:"quotes"}</span>', '{$info[p].subpackagetutorialnoa}');
- {else}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackage}</span>', '{$packagedoc}');
- {/if}
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].hasinterfaces}
- {if $info[p].classes}
- var subpackagetree_classe = new WebFXTreeItem('Interface(s)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- subpackagetree_classe.add(classe);
- {/if}
- {/section}
-
- subpackagetree.add(subpackagetree_classe);
- {/if}
- {/if}
-
- {if $info[p].hasclasses}
- {if $info[p].classes}
- var subpackagetree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- subpackagetree_classe.add(classe);
- {/if}
- {/section}
-
- subpackagetree.add(subpackagetree_classe);
- {/if}
- {/if}
-
- {if $info[p].functions}
- var subpackagetree_function = new WebFXTreeItem('Function(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- subpackagetree_function.add(fic);
- {/section}
-
- subpackagetree.add(subpackagetree_function);
- {/if}
-
- {if $info[p].files}
- var subpackagetree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- subpackagetree_file.add(file);
- {/section}
-
- subpackagetree.add(subpackagetree_file);
- {/if}
-
- tree.add(subpackagetree);
- {/if}
-{/section}
-
-document.write(tree);
-{rdelim}
-</script>
-</div>
-<p class="notes">
- Generated by
- <a href="{$phpdocwebsite}" target="_blank">phpDocumentor <span class="field">{$phpdocversion}</span></a>
-</p>
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/banner.css
deleted file mode 100755
index 065e76bc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background-color: #FFFFFF;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #999999;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #EEEEEE;
- border: 1px solid black;
- color: #0000C0;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/I.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/I.png
deleted file mode 100755
index e8512fb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/I.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/L.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/L.png
deleted file mode 100755
index eb334eda..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/L.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lminus.png
deleted file mode 100755
index f7c43c0a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lplus.png
deleted file mode 100755
index 848ec2fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Lplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/T.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/T.png
deleted file mode 100755
index 30173254..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/T.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tminus.png
deleted file mode 100755
index 2260e424..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tplus.png
deleted file mode 100755
index 2c8d8f4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/Tplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/blank.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/blank.png
deleted file mode 100755
index cee9cd37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/blank.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/empty.png
deleted file mode 100755
index d5683865..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/minus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/minus.gif
deleted file mode 100644
index f502662b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/minus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/plus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/plus.gif
deleted file mode 100644
index eeca02ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/images/plus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/lib/classTree.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/lib/classTree.js
deleted file mode 100755
index ebb3fb4a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/lib/classTree.js
+++ /dev/null
@@ -1,454 +0,0 @@
-/*----------------------------------------\
-| Cross Browser Tree Widget 1.1 |
-|-----------------------------------------|
-| Created by Emil A. Eklund (eae@eae.net) |
-| For WebFX (http://webfx.eae.net/) |
-|-----------------------------------------|
-| This script is provided as is without |
-| any warranty whatsoever. It may be used |
-| free of charge for non commerical sites |
-| For commerical use contact the author |
-| of this script for further details. |
-|-----------------------------------------|
-| Created 2000-12-11 | Updated 2001-09-06 |
-\----------------------------------------*/
-
-var webFXTreeConfig = {
- rootIcon : 'media/images/empty.png',
- openRootIcon : 'media/images/empty.png',
- folderIcon : 'media/images/empty.png',
- openFolderIcon : 'media/images/empty.png',
- fileIcon : 'media/images/empty.png',
- iIcon : 'media/images/I.png',
- lIcon : 'media/images/L.png',
- lMinusIcon : 'media/images/Lminus.png',
- lPlusIcon : 'media/images/Lplus.png',
- tIcon : 'media/images/T.png',
- tMinusIcon : 'media/images/Tminus.png',
- tPlusIcon : 'media/images/Tplus.png',
- blankIcon : 'media/images/blank.png',
- defaultText : 'Tree Item',
- defaultAction : 'javascript:void(0);',
- defaultTarget : 'right',
- defaultBehavior : 'classic'
-};
-
-var webFXTreeHandler = {
- idCounter : 0,
- idPrefix : "webfx-tree-object-",
- all : {},
- behavior : null,
- selected : null,
- getId : function() { return this.idPrefix + this.idCounter++; },
- toggle : function (oItem) { this.all[oItem.id.replace('-plus','')].toggle(); },
- select : function (oItem) { this.all[oItem.id.replace('-icon','')].select(); },
- focus : function (oItem) { this.all[oItem.id.replace('-anchor','')].focus(); },
- blur : function (oItem) { this.all[oItem.id.replace('-anchor','')].blur(); },
- keydown : function (oItem) { return this.all[oItem.id].keydown(window.event.keyCode); },
- cookies : new WebFXCookie()
-};
-
-/*
- * WebFXCookie class
- */
-
-function WebFXCookie() {
- if (document.cookie.length) { this.cookies = ' ' + document.cookie; }
-}
-
-WebFXCookie.prototype.setCookie = function (key, value) {
- document.cookie = key + "=" + escape(value);
-}
-
-WebFXCookie.prototype.getCookie = function (key) {
- if (this.cookies) {
- var start = this.cookies.indexOf(' ' + key + '=');
- if (start == -1) { return null; }
- var end = this.cookies.indexOf(";", start);
- if (end == -1) { end = this.cookies.length; }
- end -= start;
- var cookie = this.cookies.substr(start,end);
- return unescape(cookie.substr(cookie.indexOf('=') + 1, cookie.length - cookie.indexOf('=') + 1));
- }
- else { return null; }
-}
-
-/*
- * WebFXTreeAbstractNode class
- */
-
-function WebFXTreeAbstractNode(sText, sAction, sTarget) {
- this.childNodes = [];
- this.id = webFXTreeHandler.getId();
- this.text = sText || webFXTreeConfig.defaultText;
- this.action = sAction || webFXTreeConfig.defaultAction;
- this.targetWindow = sTarget || webFXTreeConfig.defaultTarget;
- this._last = false;
- webFXTreeHandler.all[this.id] = this;
-}
-
-WebFXTreeAbstractNode.prototype.add = function (node) {
- node.parentNode = this;
- this.childNodes[this.childNodes.length] = node;
- var root = this;
- if (this.childNodes.length >=2) {
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- while (root.parentNode) { root = root.parentNode; }
- if (root.rendered) {
- if (this.childNodes.length >= 2) {
- document.getElementById(this.childNodes[this.childNodes.length -2].id + '-plus').src = ((this.childNodes[this.childNodes.length -2].folder)?webFXTreeConfig.tMinusIcon:webFXTreeConfig.tIcon);
- if (this.childNodes[this.childNodes.length -2].folder) {
- this.childNodes[this.childNodes.length -2].plusIcon = webFXTreeConfig.tPlusIcon;
- this.childNodes[this.childNodes.length -2].minusIcon = webFXTreeConfig.tMinusIcon;
- }
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- this._last = true;
- var foo = this;
- while (foo.parentNode) {
- for (var i = 0; i < foo.parentNode.childNodes.length; i++) {
- if (foo.id == foo.parentNode.childNodes[i].id) { break; }
- }
- if (++i == foo.parentNode.childNodes.length) { foo.parentNode._last = true; }
- else { foo.parentNode._last = false; }
- foo = foo.parentNode;
- }
- document.getElementById(this.id + '-cont').insertAdjacentHTML("beforeEnd", node.toString());
- if ((!this.folder) && (!this.openIcon)) {
- this.icon = webFXTreeConfig.folderIcon;
- this.openIcon = webFXTreeConfig.openFolderIcon;
- }
- this.folder = true;
- this.indent();
- this.expand();
- }
- return node;
-}
-
-WebFXTreeAbstractNode.prototype.toggle = function() {
- if (this.folder) {
- if (this.open) { this.collapse(); }
- else { this.expand(); }
- }
-}
-
-WebFXTreeAbstractNode.prototype.select = function() {
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.focus = function() {
- webFXTreeHandler.selected = this;
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.openIcon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'highlight';
- document.getElementById(this.id + '-anchor').style.color = 'highlighttext';
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.blur = function() {
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.icon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'transparent';
- document.getElementById(this.id + '-anchor').style.color = 'menutext';
-}
-
-WebFXTreeAbstractNode.prototype.doExpand = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.openIcon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'block'; }
- this.open = true;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '1');
-}
-
-WebFXTreeAbstractNode.prototype.doCollapse = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.icon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'none'; }
- this.open = false;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '0');
-}
-
-WebFXTreeAbstractNode.prototype.expandAll = function() {
- this.expandChildren();
- if ((this.folder) && (!this.open)) { this.expand(); }
-}
-
-WebFXTreeAbstractNode.prototype.expandChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].expandAll();
-} }
-
-WebFXTreeAbstractNode.prototype.collapseAll = function() {
- if ((this.folder) && (this.open)) { this.collapse(); }
- this.collapseChildren();
-}
-
-WebFXTreeAbstractNode.prototype.collapseChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].collapseAll();
-} }
-
-WebFXTreeAbstractNode.prototype.indent = function(lvl, del, last, level) {
- /*
- * Since we only want to modify items one level below ourself,
- * and since the rightmost indentation position is occupied by
- * the plus icon we set this to -2
- */
- if (lvl == null) { lvl = -2; }
- var state = 0;
- for (var i = this.childNodes.length - 1; i >= 0 ; i--) {
- state = this.childNodes[i].indent(lvl + 1, del, last, level);
- if (state) { return; }
- }
- if (del) {
- if (level >= this._level) {
- if (this.folder) {
- document.getElementById(this.id + '-plus').src = (this.open)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.lPlusIcon;
- this.plusIcon = webFXTreeConfig.lPlusIcon;
- this.minusIcon = webFXTreeConfig.lMinusIcon;
- }
- else { document.getElementById(this.id + '-plus').src = webFXTreeConfig.lIcon; }
- return 1;
- }
- }
- var foo = document.getElementById(this.id + '-indent-' + lvl);
- if (foo) {
- if ((del) && (last)) { foo._last = true; }
- if (foo._last) { foo.src = webFXTreeConfig.blankIcon; }
- else { foo.src = webFXTreeConfig.iIcon; }
- }
- return 0;
-}
-
-/*
- * WebFXTree class
- */
-
-function WebFXTree(sText, sAction, sBehavior, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- this.icon = sIcon || webFXTreeConfig.rootIcon;
- this.openIcon = sOpenIcon || webFXTreeConfig.openRootIcon;
- /* Defaults to open */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '0')?false:true;
- this.folder = true;
- this.rendered = false;
- if (!webFXTreeHandler.behavior) { webFXTreeHandler.behavior = sBehavior || webFXTreeConfig.defaultBehavior; }
- this.targetWindow = 'right';
-}
-
-WebFXTree.prototype = new WebFXTreeAbstractNode;
-
-WebFXTree.prototype.setBehavior = function (sBehavior) {
- webFXTreeHandler.behavior = sBehavior;
-};
-
-WebFXTree.prototype.getBehavior = function (sBehavior) {
- return webFXTreeHandler.behavior;
-};
-
-WebFXTree.prototype.getSelected = function() {
- if (webFXTreeHandler.selected) { return webFXTreeHandler.selected; }
- else { return null; }
-}
-
-WebFXTree.prototype.remove = function() { }
-
-WebFXTree.prototype.expand = function() {
- this.doExpand();
-}
-
-WebFXTree.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
-}
-
-WebFXTree.prototype.getFirst = function() {
- return null;
-}
-
-WebFXTree.prototype.getLast = function() {
- return null;
-}
-
-WebFXTree.prototype.getNextSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.getPreviousSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.keydown = function(key) {
- if (key == 39) { this.expand(); return false; }
- if (key == 37) { this.collapse(); return false; }
- if ((key == 40) && (this.open)) { this.childNodes[0].select(); return false; }
- return true;
-}
-
-WebFXTree.prototype.toString = function() {
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + this.text + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i, this.childNodes.length);
- }
- str += "</div>";
- this.rendered = true;
- return str;
-};
-
-/*
- * WebFXTreeItem class
- */
-
-function WebFXTreeItem(sText, sAction, eParent, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- /* Defaults to close */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '1')?true:false;
- if (eParent) { eParent.add(this); }
- if (sIcon) { this.icon = sIcon; }
- if (sOpenIcon) { this.openIcon = sOpenIcon; }
-}
-
-WebFXTreeItem.prototype = new WebFXTreeAbstractNode;
-
-WebFXTreeItem.prototype.remove = function() {
- var parentNode = this.parentNode;
- var prevSibling = this.getPreviousSibling(true);
- var nextSibling = this.getNextSibling(true);
- var folder = this.parentNode.folder;
- var last = ((nextSibling) && (nextSibling.parentNode) && (nextSibling.parentNode.id == parentNode.id))?false:true;
- this.getPreviousSibling().focus();
- this._remove();
- if (parentNode.childNodes.length == 0) {
- parentNode.folder = false;
- parentNode.open = false;
- }
- if (last) {
- if (parentNode.id == prevSibling.id) {
- document.getElementById(parentNode.id + '-icon').src = webFXTreeConfig.fileIcon;
- }
- else { }
- }
- if ((!prevSibling.parentNode) || (prevSibling.parentNode != parentNode)) {
- parentNode.indent(null, true, last, this._level);
- }
- if (document.getElementById(prevSibling.id + '-plus')) {
- if (nextSibling) {
- if ((parentNode == prevSibling) && (parentNode.getNextSibling)) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.tIcon; }
- else if (nextSibling.parentNode != prevSibling) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
- else { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
-}
-
-WebFXTreeItem.prototype._remove = function() {
- for (var i = this.childNodes.length - 1; i >= 0; i--) {
- this.childNodes[i]._remove();
- }
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this.id == this.parentNode.childNodes[i].id) {
- for (var j = i; j < this.parentNode.childNodes.length; j++) {
- this.parentNode.childNodes[i] = this.parentNode.childNodes[i+1]
- }
- this.parentNode.childNodes.length = this.parentNode.childNodes.length - 1;
- if (i + 1 == this.parentNode.childNodes.length) { this.parentNode._last = true; }
- }
- }
- webFXTreeHandler.all[this.id] = null;
- if (document.getElementById(this.id)) {
- document.getElementById(this.id).innerHTML = "";
- document.getElementById(this.id).removeNode();
- }
-}
-
-WebFXTreeItem.prototype.expand = function() {
- this.doExpand();
- document.getElementById(this.id + '-plus').src = this.minusIcon;
-}
-
-WebFXTreeItem.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
- document.getElementById(this.id + '-plus').src = this.plusIcon;
-}
-
-WebFXTreeItem.prototype.getFirst = function() {
- return this.childNodes[0];
-}
-
-WebFXTreeItem.prototype.getLast = function() {
- if (this.childNodes[this.childNodes.length - 1].open) { return this.childNodes[this.childNodes.length - 1].getLast(); }
- else { return this.childNodes[this.childNodes.length - 1]; }
-}
-
-WebFXTreeItem.prototype.getNextSibling = function() {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (++i == this.parentNode.childNodes.length) { return this.parentNode.getNextSibling(); }
- else { return this.parentNode.childNodes[i]; }
-}
-
-WebFXTreeItem.prototype.getPreviousSibling = function(b) {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (i == 0) { return this.parentNode; }
- else {
- if ((this.parentNode.childNodes[--i].open) || (b && this.parentNode.childNodes[i].folder)) { return this.parentNode.childNodes[i].getLast(); }
- else { return this.parentNode.childNodes[i]; }
-} }
-
-WebFXTreeItem.prototype.keydown = function(key) {
- if ((key == 39) && (this.folder)) {
- if (!this.open) { this.expand(); return false; }
- else { this.getFirst().select(); return false; }
- }
- else if (key == 37) {
- if (this.open) { this.collapse(); return false; }
- else { this.parentNode.select(); return false; }
- }
- else if (key == 40) {
- if (this.open) { this.getFirst().select(); return false; }
- else {
- var sib = this.getNextSibling();
- if (sib) { sib.select(); return false; }
- } }
- else if (key == 38) { this.getPreviousSibling().select(); return false; }
- return true;
-}
-
-WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
- var foo = this.parentNode;
- var indent = '';
- if (nItem + 1 == nItemCount) { this.parentNode._last = true; }
- var i = 0;
- while (foo.parentNode) {
- foo = foo.parentNode;
- indent = "<img id=\"" + this.id + "-indent-" + i + "\" src=\"" + ((foo._last)?webFXTreeConfig.blankIcon:webFXTreeConfig.iIcon) + "\">" + indent;
- i++;
- }
- this._level = i;
- if (this.childNodes.length) { this.folder = 1; }
- else { this.open = false; }
- if ((this.folder) || (webFXTreeHandler.behavior != 'classic')) {
- if (!this.icon) { this.icon = webFXTreeConfig.folderIcon; }
- if (!this.openIcon) { this.openIcon = webFXTreeConfig.openFolderIcon; }
- }
- else if (!this.icon) { this.icon = webFXTreeConfig.fileIcon; }
- var label = this.text;
- label = label.replace('<', '<');
- label = label.replace('>', '>');
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += indent;
- str += "<img id=\"" + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" onclick=\"webFXTreeHandler.toggle(this);\">"
- str += "<img id=\"" + this.id + "-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + label + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i,this.childNodes.length);
- }
- str += "</div>";
- this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
- this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
- return str;
-} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/stylesheet.css
deleted file mode 100755
index ccedc6a4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/media/stylesheet.css
+++ /dev/null
@@ -1,184 +0,0 @@
-a { color: #0000C0; text-decoration: underline; }
-a:hover { text-decoration: underline; background-color: #FFFFFF }
-a:active { text-decoration: underline; background-color: #FFFFFF }
-
-body, table { background-color: #EEEEEE; font-family: Verdana, Arial, sans-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: #FFFFFF }
-.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 { }
-
-/* 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 #AAAAAA; background-color: #DDDDFF; }
-.nav-button-disabled { color: #AAAAAA; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover { background-color: #CCCCCC; 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; background-color: DDDDFF }
-.class-name { color: #000000; font-weight: bold; }
-
-.method-summary { padding-left: 1em; font-size: 8pt }
-.method-header { background-color: #DDDDFF; padding: 1px; }
-.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 { background-color: #DDDDFF; padding: 1px; }
-.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 #999999; padding: 1em;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.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; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-.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; border: 2px solid #999999; background-color: #FFFFFF; padding: 2px }
-.cmd-synopsis { margin: 1em 0em }
-.cmd-title { font-weight: bold }
-.toc { margin-left: 2em; padding-left: 0em }
-
-/*------------------------------------------------------------------------------
- webfx-tree
-------------------------------------------------------------------------------*/
-
-.webfx-tree-container {
- margin: 0px;
- padding: 0px;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item {
- padding: 0px;
- margin: 0px;
- color: black;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item a {
- margin-left: 3px;
- padding: 1px 2px 1px 2px;
- color: black;
- text-decoration: none;
-}
-
-.webfx-tree-item a:hover, .webfx-tree-item a:active {
- color: #666666;
- background: white;
- text-decoration: none
-}
-
-.webfx-tree-item img {
- vertical-align: middle;
- border: 0px;
-}
-
-.webfx-tree-icon {
- width: 16px;
- height: 16px;
-}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/method.tpl
deleted file mode 100755
index 06d57a12..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/method.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/page.tpl
deleted file mode 100755
index b5980236..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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 $functions}
- <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/DOM/phpdoc.de/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/ric.tpl
deleted file mode 100755
index ad792475..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<div align="center"><h1>{$name}</h1></div>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_nav.tpl
deleted file mode 100755
index 89952301..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/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/DOM/phpdoc.de/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/DOM/phpdoc.de/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_tree.tpl
deleted file mode 100755
index 40d9a4ff..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
- var a{$name|replace:"-":"_"}node = new WebFXTreeItem('{$main.title|strip_tags|escape:"quotes"}','{$main.link}', parent_node);
-
-{if $haskids}
- var a{$name|replace:"-":"_"}_old_parent_node = parent_node;
- parent_node = a{$name|replace:"-":"_"}node;
- {$kids}
- parent_node = a{$name|replace:"-":"_"}_old_parent_node;
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/var.tpl
deleted file mode 100755
index fccf6892..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phpdoc.de/templates/var.tpl
+++ /dev/null
@@ -1,92 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/options.ini
deleted file mode 100755
index 084809be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/DOM/phphtmllib/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/basicindex.tpl
deleted file mode 100755
index 951ee264..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/class.tpl
deleted file mode 100755
index 9ab7c455..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/class.tpl
+++ /dev/null
@@ -1,429 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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/DOM/phphtmllib/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/define.tpl
deleted file mode 100755
index 0da5d864..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/function.tpl
deleted file mode 100755
index b6880059..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/global.tpl
deleted file mode 100755
index eab7e0b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/header.tpl
deleted file mode 100755
index 0d626190..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/header.tpl
+++ /dev/null
@@ -1,95 +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" />
- {if $top2 || $top3}
- <script src="{$subdir}media/lib/classTree.js"></script>
- {/if}
- {if $top2}
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
- {/if}
- {if $top3 || $top2}
- <script language="javascript" type="text/javascript">
- var imgPlus = new Image();
- var imgMinus = new Image();
- imgPlus.src = "{$subdir}media/images/plus.png";
- imgMinus.src = "{$subdir}media/images/minus.png";
-
- function showNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgMinus.src;
- oTable.style.display = "block";
- {rdelim}
-
- function hideNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgPlus.src;
- oTable.style.display = "none";
- {rdelim}
-
- function nodeIsVisible(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- break;
- {rdelim}
- return (oTable && oTable.style.display == "block");
- {rdelim}
-
- function toggleNodeVisibility(Node){ldelim}
- if (nodeIsVisible(Node)){ldelim}
- hideNode(Node);
- {rdelim}else{ldelim}
- showNode(Node);
- {rdelim}
- {rdelim}
- </script>
- {/if}
- </head>
- <body>
- {if $top3}<div class="page-body">{/if}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/include.tpl
deleted file mode 100755
index c2419e5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/left_frame.tpl
deleted file mode 100755
index a30f167d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/left_frame.tpl
+++ /dev/null
@@ -1,216 +0,0 @@
-{include file="header.tpl" top2=true}
-<h3 class="package-title">{$info.0.package}</h3>
-<div class="tree">
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=p loop=$info}
- {if $info[p].subpackage == ""}
- var tree = new WebFXTree('<span class="package">{$info.0.package}</span>');
- tree.setBehavior('classic');
-
- {if $hastodos}
- var todos = new WebFXTreeItem('To-do List', '{$todolink}');
- tree.add(todos);
- {/if}
-
- var class_trees = new WebFXTreeItem('Class trees', '{$classtreepage}.html');
- tree.add(class_trees);
-
- var elements = new WebFXTreeItem('Index of elements', '{$elementindex}.html');
- tree.add(elements);
-
- var parent_node;
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].hasinterfaces}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Interface(s)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
- {if $info[p].hasclasses}
- {if $info[p].classes}
- var tree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- tree_classe.add(classe);
- {/if}
- {/section}
-
- tree.add(tree_classe);
- {/if}
- {/if}
-
- {if $info[p].functions}
- var tree_function = new WebFXTreeItem('Function(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- tree_function.add(fic);
- {/section}
-
- tree.add(tree_function);
- {/if}
-
- {if $info[p].files}
- var tree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- tree_file.add(file);
- {/section}
-
- tree.add(tree_file);
- {/if}
-
- {else}
- {if $info[p].subpackagetutorial}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackagetutorialtitle|strip_tags}</span>', '{$info[p].subpackagetutorialnoa}');
- {else}
- var subpackagetree = new WebFXTreeItem('<span class="sub-package">{$info[p].subpackage}</span>', '{$packagedoc|escape:"quotes"}');
- {/if}
-
- {if $info[p].tutorials}
- var tree_tutorial = new WebFXTreeItem('Tutorial(s)/Manual(s)', '');
- tree.add(tree_tutorial);
-
- {if $info[p].tutorials.pkg}
- var tree_inner_tutorial = new WebFXTreeItem('Package-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.pkg}
- {$info[p].tutorials.pkg[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.cls}
- var tree_inner_tutorial = new WebFXTreeItem('Class-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.cls}
- {$info[p].tutorials.cls[ext]}
- {/section}
- {/if}
-
- {if $info[p].tutorials.proc}
- var tree_inner_tutorial = new WebFXTreeItem('Function-level', '');
- tree_tutorial.add(tree_inner_tutorial);
-
- parent_node = tree_inner_tutorial;
- {section name=ext loop=$info[p].tutorials.proc}
- {$info[p].tutorials.proc[ext]}
- {/section}
- {/if}
- {/if}
-
- {if $info[p].hasinterfaces}
- {if $info[p].classes}
- var subpackagetree_classe = new WebFXTreeItem('Interface(s)', '{$packagedoc}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- subpackagetree_classe.add(classe);
- {/if}
- {/section}
-
- subpackagetree.add(subpackagetree_classe);
- {/if}
- {/if}
- {if $info[p].hasclasses}
- {if $info[p].classes}
- var subpackagetree_classe = new WebFXTreeItem('Class(es)', '{$packagedoc|escape:"quotes"}');
-
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title|escape:"quotes"}', '{$info[p].classes[class].link|escape:"quotes"}');
- subpackagetree_classe.add(classe);
- {/if}
- {/section}
-
- subpackagetree.add(subpackagetree_classe);
- {/if}
- {/if}
-
- {if $info[p].functions}
- var subpackagetree_function = new WebFXTreeItem('Function(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title|escape:"quotes"}', '{$info[p].functions[nonclass].link|escape:"quotes"}');
- subpackagetree_function.add(fic);
- {/section}
-
- subpackagetree.add(subpackagetree_function);
- {/if}
-
- {if $info[p].files}
- var subpackagetree_file = new WebFXTreeItem('File(s)', '{$packagedoc|escape:"quotes"}');
-
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title|escape:"quotes"}', '{$info[p].files[nonclass].link|escape:"quotes"}');
- subpackagetree_file.add(file);
- {/section}
-
- subpackagetree.add(subpackagetree_file);
- {/if}
-
- tree.add(subpackagetree);
- {/if}
-{/section}
-
-document.write(tree);
-{rdelim}
-</script>
-</div>
-<p class="notes">
- Generated by
- <a href="{$phpdocwebsite}" target="_blank">phpDocumentor <span class="field">{$phpdocversion}</span></a>
-</p>
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/banner.css
deleted file mode 100755
index ba1a7ba5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background-color: #DDDDDD;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #999999;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #CCCCCC;
- border: 1px solid black;
- color: blue;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/I.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/I.png
deleted file mode 100755
index e8512fb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/I.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/L.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/L.png
deleted file mode 100755
index eb334eda..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/L.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lminus.png
deleted file mode 100755
index f7c43c0a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lplus.png
deleted file mode 100755
index 848ec2fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Lplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/T.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/T.png
deleted file mode 100755
index 30173254..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/T.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tminus.png
deleted file mode 100755
index 2260e424..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tplus.png
deleted file mode 100755
index 2c8d8f4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/Tplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/blank.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/blank.png
deleted file mode 100755
index cee9cd37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/blank.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/empty.png
deleted file mode 100755
index d5683865..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/minus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/minus.gif
deleted file mode 100644
index f502662b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/minus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/plus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/plus.gif
deleted file mode 100644
index eeca02ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/images/plus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/lib/classTree.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/lib/classTree.js
deleted file mode 100755
index ebb3fb4a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/lib/classTree.js
+++ /dev/null
@@ -1,454 +0,0 @@
-/*----------------------------------------\
-| Cross Browser Tree Widget 1.1 |
-|-----------------------------------------|
-| Created by Emil A. Eklund (eae@eae.net) |
-| For WebFX (http://webfx.eae.net/) |
-|-----------------------------------------|
-| This script is provided as is without |
-| any warranty whatsoever. It may be used |
-| free of charge for non commerical sites |
-| For commerical use contact the author |
-| of this script for further details. |
-|-----------------------------------------|
-| Created 2000-12-11 | Updated 2001-09-06 |
-\----------------------------------------*/
-
-var webFXTreeConfig = {
- rootIcon : 'media/images/empty.png',
- openRootIcon : 'media/images/empty.png',
- folderIcon : 'media/images/empty.png',
- openFolderIcon : 'media/images/empty.png',
- fileIcon : 'media/images/empty.png',
- iIcon : 'media/images/I.png',
- lIcon : 'media/images/L.png',
- lMinusIcon : 'media/images/Lminus.png',
- lPlusIcon : 'media/images/Lplus.png',
- tIcon : 'media/images/T.png',
- tMinusIcon : 'media/images/Tminus.png',
- tPlusIcon : 'media/images/Tplus.png',
- blankIcon : 'media/images/blank.png',
- defaultText : 'Tree Item',
- defaultAction : 'javascript:void(0);',
- defaultTarget : 'right',
- defaultBehavior : 'classic'
-};
-
-var webFXTreeHandler = {
- idCounter : 0,
- idPrefix : "webfx-tree-object-",
- all : {},
- behavior : null,
- selected : null,
- getId : function() { return this.idPrefix + this.idCounter++; },
- toggle : function (oItem) { this.all[oItem.id.replace('-plus','')].toggle(); },
- select : function (oItem) { this.all[oItem.id.replace('-icon','')].select(); },
- focus : function (oItem) { this.all[oItem.id.replace('-anchor','')].focus(); },
- blur : function (oItem) { this.all[oItem.id.replace('-anchor','')].blur(); },
- keydown : function (oItem) { return this.all[oItem.id].keydown(window.event.keyCode); },
- cookies : new WebFXCookie()
-};
-
-/*
- * WebFXCookie class
- */
-
-function WebFXCookie() {
- if (document.cookie.length) { this.cookies = ' ' + document.cookie; }
-}
-
-WebFXCookie.prototype.setCookie = function (key, value) {
- document.cookie = key + "=" + escape(value);
-}
-
-WebFXCookie.prototype.getCookie = function (key) {
- if (this.cookies) {
- var start = this.cookies.indexOf(' ' + key + '=');
- if (start == -1) { return null; }
- var end = this.cookies.indexOf(";", start);
- if (end == -1) { end = this.cookies.length; }
- end -= start;
- var cookie = this.cookies.substr(start,end);
- return unescape(cookie.substr(cookie.indexOf('=') + 1, cookie.length - cookie.indexOf('=') + 1));
- }
- else { return null; }
-}
-
-/*
- * WebFXTreeAbstractNode class
- */
-
-function WebFXTreeAbstractNode(sText, sAction, sTarget) {
- this.childNodes = [];
- this.id = webFXTreeHandler.getId();
- this.text = sText || webFXTreeConfig.defaultText;
- this.action = sAction || webFXTreeConfig.defaultAction;
- this.targetWindow = sTarget || webFXTreeConfig.defaultTarget;
- this._last = false;
- webFXTreeHandler.all[this.id] = this;
-}
-
-WebFXTreeAbstractNode.prototype.add = function (node) {
- node.parentNode = this;
- this.childNodes[this.childNodes.length] = node;
- var root = this;
- if (this.childNodes.length >=2) {
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- while (root.parentNode) { root = root.parentNode; }
- if (root.rendered) {
- if (this.childNodes.length >= 2) {
- document.getElementById(this.childNodes[this.childNodes.length -2].id + '-plus').src = ((this.childNodes[this.childNodes.length -2].folder)?webFXTreeConfig.tMinusIcon:webFXTreeConfig.tIcon);
- if (this.childNodes[this.childNodes.length -2].folder) {
- this.childNodes[this.childNodes.length -2].plusIcon = webFXTreeConfig.tPlusIcon;
- this.childNodes[this.childNodes.length -2].minusIcon = webFXTreeConfig.tMinusIcon;
- }
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- this._last = true;
- var foo = this;
- while (foo.parentNode) {
- for (var i = 0; i < foo.parentNode.childNodes.length; i++) {
- if (foo.id == foo.parentNode.childNodes[i].id) { break; }
- }
- if (++i == foo.parentNode.childNodes.length) { foo.parentNode._last = true; }
- else { foo.parentNode._last = false; }
- foo = foo.parentNode;
- }
- document.getElementById(this.id + '-cont').insertAdjacentHTML("beforeEnd", node.toString());
- if ((!this.folder) && (!this.openIcon)) {
- this.icon = webFXTreeConfig.folderIcon;
- this.openIcon = webFXTreeConfig.openFolderIcon;
- }
- this.folder = true;
- this.indent();
- this.expand();
- }
- return node;
-}
-
-WebFXTreeAbstractNode.prototype.toggle = function() {
- if (this.folder) {
- if (this.open) { this.collapse(); }
- else { this.expand(); }
- }
-}
-
-WebFXTreeAbstractNode.prototype.select = function() {
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.focus = function() {
- webFXTreeHandler.selected = this;
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.openIcon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'highlight';
- document.getElementById(this.id + '-anchor').style.color = 'highlighttext';
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.blur = function() {
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.icon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'transparent';
- document.getElementById(this.id + '-anchor').style.color = 'menutext';
-}
-
-WebFXTreeAbstractNode.prototype.doExpand = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.openIcon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'block'; }
- this.open = true;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '1');
-}
-
-WebFXTreeAbstractNode.prototype.doCollapse = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.icon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'none'; }
- this.open = false;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '0');
-}
-
-WebFXTreeAbstractNode.prototype.expandAll = function() {
- this.expandChildren();
- if ((this.folder) && (!this.open)) { this.expand(); }
-}
-
-WebFXTreeAbstractNode.prototype.expandChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].expandAll();
-} }
-
-WebFXTreeAbstractNode.prototype.collapseAll = function() {
- if ((this.folder) && (this.open)) { this.collapse(); }
- this.collapseChildren();
-}
-
-WebFXTreeAbstractNode.prototype.collapseChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].collapseAll();
-} }
-
-WebFXTreeAbstractNode.prototype.indent = function(lvl, del, last, level) {
- /*
- * Since we only want to modify items one level below ourself,
- * and since the rightmost indentation position is occupied by
- * the plus icon we set this to -2
- */
- if (lvl == null) { lvl = -2; }
- var state = 0;
- for (var i = this.childNodes.length - 1; i >= 0 ; i--) {
- state = this.childNodes[i].indent(lvl + 1, del, last, level);
- if (state) { return; }
- }
- if (del) {
- if (level >= this._level) {
- if (this.folder) {
- document.getElementById(this.id + '-plus').src = (this.open)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.lPlusIcon;
- this.plusIcon = webFXTreeConfig.lPlusIcon;
- this.minusIcon = webFXTreeConfig.lMinusIcon;
- }
- else { document.getElementById(this.id + '-plus').src = webFXTreeConfig.lIcon; }
- return 1;
- }
- }
- var foo = document.getElementById(this.id + '-indent-' + lvl);
- if (foo) {
- if ((del) && (last)) { foo._last = true; }
- if (foo._last) { foo.src = webFXTreeConfig.blankIcon; }
- else { foo.src = webFXTreeConfig.iIcon; }
- }
- return 0;
-}
-
-/*
- * WebFXTree class
- */
-
-function WebFXTree(sText, sAction, sBehavior, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- this.icon = sIcon || webFXTreeConfig.rootIcon;
- this.openIcon = sOpenIcon || webFXTreeConfig.openRootIcon;
- /* Defaults to open */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '0')?false:true;
- this.folder = true;
- this.rendered = false;
- if (!webFXTreeHandler.behavior) { webFXTreeHandler.behavior = sBehavior || webFXTreeConfig.defaultBehavior; }
- this.targetWindow = 'right';
-}
-
-WebFXTree.prototype = new WebFXTreeAbstractNode;
-
-WebFXTree.prototype.setBehavior = function (sBehavior) {
- webFXTreeHandler.behavior = sBehavior;
-};
-
-WebFXTree.prototype.getBehavior = function (sBehavior) {
- return webFXTreeHandler.behavior;
-};
-
-WebFXTree.prototype.getSelected = function() {
- if (webFXTreeHandler.selected) { return webFXTreeHandler.selected; }
- else { return null; }
-}
-
-WebFXTree.prototype.remove = function() { }
-
-WebFXTree.prototype.expand = function() {
- this.doExpand();
-}
-
-WebFXTree.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
-}
-
-WebFXTree.prototype.getFirst = function() {
- return null;
-}
-
-WebFXTree.prototype.getLast = function() {
- return null;
-}
-
-WebFXTree.prototype.getNextSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.getPreviousSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.keydown = function(key) {
- if (key == 39) { this.expand(); return false; }
- if (key == 37) { this.collapse(); return false; }
- if ((key == 40) && (this.open)) { this.childNodes[0].select(); return false; }
- return true;
-}
-
-WebFXTree.prototype.toString = function() {
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + this.text + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i, this.childNodes.length);
- }
- str += "</div>";
- this.rendered = true;
- return str;
-};
-
-/*
- * WebFXTreeItem class
- */
-
-function WebFXTreeItem(sText, sAction, eParent, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- /* Defaults to close */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '1')?true:false;
- if (eParent) { eParent.add(this); }
- if (sIcon) { this.icon = sIcon; }
- if (sOpenIcon) { this.openIcon = sOpenIcon; }
-}
-
-WebFXTreeItem.prototype = new WebFXTreeAbstractNode;
-
-WebFXTreeItem.prototype.remove = function() {
- var parentNode = this.parentNode;
- var prevSibling = this.getPreviousSibling(true);
- var nextSibling = this.getNextSibling(true);
- var folder = this.parentNode.folder;
- var last = ((nextSibling) && (nextSibling.parentNode) && (nextSibling.parentNode.id == parentNode.id))?false:true;
- this.getPreviousSibling().focus();
- this._remove();
- if (parentNode.childNodes.length == 0) {
- parentNode.folder = false;
- parentNode.open = false;
- }
- if (last) {
- if (parentNode.id == prevSibling.id) {
- document.getElementById(parentNode.id + '-icon').src = webFXTreeConfig.fileIcon;
- }
- else { }
- }
- if ((!prevSibling.parentNode) || (prevSibling.parentNode != parentNode)) {
- parentNode.indent(null, true, last, this._level);
- }
- if (document.getElementById(prevSibling.id + '-plus')) {
- if (nextSibling) {
- if ((parentNode == prevSibling) && (parentNode.getNextSibling)) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.tIcon; }
- else if (nextSibling.parentNode != prevSibling) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
- else { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
-}
-
-WebFXTreeItem.prototype._remove = function() {
- for (var i = this.childNodes.length - 1; i >= 0; i--) {
- this.childNodes[i]._remove();
- }
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this.id == this.parentNode.childNodes[i].id) {
- for (var j = i; j < this.parentNode.childNodes.length; j++) {
- this.parentNode.childNodes[i] = this.parentNode.childNodes[i+1]
- }
- this.parentNode.childNodes.length = this.parentNode.childNodes.length - 1;
- if (i + 1 == this.parentNode.childNodes.length) { this.parentNode._last = true; }
- }
- }
- webFXTreeHandler.all[this.id] = null;
- if (document.getElementById(this.id)) {
- document.getElementById(this.id).innerHTML = "";
- document.getElementById(this.id).removeNode();
- }
-}
-
-WebFXTreeItem.prototype.expand = function() {
- this.doExpand();
- document.getElementById(this.id + '-plus').src = this.minusIcon;
-}
-
-WebFXTreeItem.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
- document.getElementById(this.id + '-plus').src = this.plusIcon;
-}
-
-WebFXTreeItem.prototype.getFirst = function() {
- return this.childNodes[0];
-}
-
-WebFXTreeItem.prototype.getLast = function() {
- if (this.childNodes[this.childNodes.length - 1].open) { return this.childNodes[this.childNodes.length - 1].getLast(); }
- else { return this.childNodes[this.childNodes.length - 1]; }
-}
-
-WebFXTreeItem.prototype.getNextSibling = function() {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (++i == this.parentNode.childNodes.length) { return this.parentNode.getNextSibling(); }
- else { return this.parentNode.childNodes[i]; }
-}
-
-WebFXTreeItem.prototype.getPreviousSibling = function(b) {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (i == 0) { return this.parentNode; }
- else {
- if ((this.parentNode.childNodes[--i].open) || (b && this.parentNode.childNodes[i].folder)) { return this.parentNode.childNodes[i].getLast(); }
- else { return this.parentNode.childNodes[i]; }
-} }
-
-WebFXTreeItem.prototype.keydown = function(key) {
- if ((key == 39) && (this.folder)) {
- if (!this.open) { this.expand(); return false; }
- else { this.getFirst().select(); return false; }
- }
- else if (key == 37) {
- if (this.open) { this.collapse(); return false; }
- else { this.parentNode.select(); return false; }
- }
- else if (key == 40) {
- if (this.open) { this.getFirst().select(); return false; }
- else {
- var sib = this.getNextSibling();
- if (sib) { sib.select(); return false; }
- } }
- else if (key == 38) { this.getPreviousSibling().select(); return false; }
- return true;
-}
-
-WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
- var foo = this.parentNode;
- var indent = '';
- if (nItem + 1 == nItemCount) { this.parentNode._last = true; }
- var i = 0;
- while (foo.parentNode) {
- foo = foo.parentNode;
- indent = "<img id=\"" + this.id + "-indent-" + i + "\" src=\"" + ((foo._last)?webFXTreeConfig.blankIcon:webFXTreeConfig.iIcon) + "\">" + indent;
- i++;
- }
- this._level = i;
- if (this.childNodes.length) { this.folder = 1; }
- else { this.open = false; }
- if ((this.folder) || (webFXTreeHandler.behavior != 'classic')) {
- if (!this.icon) { this.icon = webFXTreeConfig.folderIcon; }
- if (!this.openIcon) { this.openIcon = webFXTreeConfig.openFolderIcon; }
- }
- else if (!this.icon) { this.icon = webFXTreeConfig.fileIcon; }
- var label = this.text;
- label = label.replace('<', '<');
- label = label.replace('>', '>');
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += indent;
- str += "<img id=\"" + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" onclick=\"webFXTreeHandler.toggle(this);\">"
- str += "<img id=\"" + this.id + "-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + label + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i,this.childNodes.length);
- }
- str += "</div>";
- this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
- this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
- return str;
-} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/stylesheet.css
deleted file mode 100755
index 3f546dc5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/media/stylesheet.css
+++ /dev/null
@@ -1,184 +0,0 @@
-a { color: #0000FF; text-decoration: none; }
-a:hover { color: #FF0000; text-decoration: underline; }
-a:active { color: #FF0000; text-decoration: underline; }
-
-body { background-color: #EEEEEE; font-family: Verdana, Arial, sans-serif }
-body, table { font-size: 10pt }
-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: #DDDDDD }
-.info-box-body { border: 1px solid #999999; padding: .5em; background-color: #F8F8F8; }
-.nav-bar { font-size: 8pt; white-space: nowrap; text-align: right; padding: .2em; margin: 0em 0em 1em 0em; }
-
-.oddrow { background-color: #DDDDDD; border: 1px solid #999999; padding: .5em; margin-bottom: 1em}
-.evenrow { background-color: #DDDDDD; border: 1px solid #999999; padding: .5em; margin-bottom: 1em}
-
-.page-body { max-width: 800px; margin: auto; }
-.tree { }
-
-/* 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: 2px solid #999999; background-color: #DDDDDD }
-.nav-button-disabled { color: #999999; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover { background-color: #AAAAAA; outline: 1px solid #666666; 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: #0066BB; 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 { color: red; font-weight: bold }
-.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;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.src-comm { color: #666666; }
-.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 { background-color: #DDDDDD; border: 1px solid #999999; padding: .5em; }
-.listing { background-color: #DDDDDD; border: 1px solid #999999; padding: .5em; white-space: nowrap; }
-.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; border-bottom: 1px solid #888888; color: #888888; }
-.cmd-synopsis { margin: 1em 0em }
-.cmd-title { font-weight: bold }
-.toc { margin-left: 2em; padding-left: 0em }
-
-/*------------------------------------------------------------------------------
- webfx-tree
-------------------------------------------------------------------------------*/
-
-.webfx-tree-container {
- margin: 0px;
- padding: 0px;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item {
- padding: 0px;
- margin: 0px;
- color: black;
- white-space: nowrap;
- font: icon;
-}
-
-.webfx-tree-item a {
- margin-left: 3px;
- padding: 1px 2px 1px 2px;
- color: black;
- text-decoration: none;
-}
-
-.webfx-tree-item a:hover, .webfx-tree-item a:active {
- color: white;
- background: red;
- text-decoration: none
-}
-
-.webfx-tree-item img {
- vertical-align: middle;
- border: 0px;
-}
-
-.webfx-tree-icon {
- width: 16px;
- height: 16px;
-}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/method.tpl
deleted file mode 100755
index 06d57a12..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/method.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/page.tpl
deleted file mode 100755
index b5980236..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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 $functions}
- <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/DOM/phphtmllib/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/ric.tpl
deleted file mode 100755
index ad792475..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<div align="center"><h1>{$name}</h1></div>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_nav.tpl
deleted file mode 100755
index 89952301..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/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/DOM/phphtmllib/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/DOM/phphtmllib/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_tree.tpl
deleted file mode 100755
index 40d9a4ff..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
- var a{$name|replace:"-":"_"}node = new WebFXTreeItem('{$main.title|strip_tags|escape:"quotes"}','{$main.link}', parent_node);
-
-{if $haskids}
- var a{$name|replace:"-":"_"}_old_parent_node = parent_node;
- parent_node = a{$name|replace:"-":"_"}node;
- {$kids}
- parent_node = a{$name|replace:"-":"_"}_old_parent_node;
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/var.tpl
deleted file mode 100755
index fccf6892..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/DOM/phphtmllib/templates/var.tpl
+++ /dev/null
@@ -1,92 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
-
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 100755
index 084809be..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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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 100755
index 951ee264..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 100755
index 6a05f27e..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 100755
index bb5378f6..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl
+++ /dev/null
@@ -1,430 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
-
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{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 c26ff92d..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 100755
index 0da5d864..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 100755
index 783d5271..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 100755
index d5964f99..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 100755
index 0f526584..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 100755
index 8abf74ce..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 100755
index 239f7b41..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 100755
index 8d0f79db..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 100755
index b6880059..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 100755
index eab7e0b0..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 100755
index c22ba37d..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 100755
index c2419e5f..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 100755
index 7cd61094..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 100755
index eb3f670d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl
+++ /dev/null
@@ -1,159 +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].hasinterfaces}
- <dt class="folder-title">Interfaces</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/section}
- {/if}
- {if $info[p].hasclasses}
- <dt class="folder-title">Classes</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/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 100755
index f2149ebb..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 100755
index 1fc91c19..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; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.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 100755
index 3ef9ee53..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl
+++ /dev/null
@@ -1,151 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static method {$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">
- static
- <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/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 100755
index b5980236..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 $functions}
- <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 100755
index dc283ad0..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 100755
index eff734c1..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 100755
index f929ccdb..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 100755
index fbe7eda3..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">{$package}</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 100755
index 3b9109d1..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 100755
index 89952301..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 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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 100755
index 617b5654..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 100755
index 607d7681..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl
+++ /dev/null
@@ -1,91 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/options.ini
deleted file mode 100755
index 64638d09..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/options.ini
+++ /dev/null
@@ -1,576 +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 =
-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 = <div class="src-code">
-/example = </div>
-example! = 0
-
-formalpara = p
-
-graphic = img
-graphic->fileref = src
-graphic/ =
-
-function =
-/function = ()
-
-important = strong
-
-informalequation = blockquote
-
-informalexample = div
-
-inlineequation = em
-
-itemizedlist = ul
-
-listitem = li
-
-literal = code
-
-literallayout = span
-
-option = " "
-/option =
-
-orderedlist = ol
-
-para = p
-
-programlisting = <div class="src-code">
-/programlisting = </div>
-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/earthli/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/basicindex.tpl
deleted file mode 100755
index f90100b4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/basicindex.tpl
+++ /dev/null
@@ -1,57 +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")}
- <img src="{$subdir}media/images/{if $index[index].index[contents].access == 'private'}Private{/if}{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="var-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Global")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="var-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Method")}
- <img src="{$subdir}media/images/{if $index[index].index[contents].constructor}Constructor{elseif $index[index].index[contents].destructor}Destructor{else}{if $index[index].index[contents].abstract}Abstract{/if}{if $index[index].index[contents].access == 'private'}Private{/if}{$index[index].index[contents].title}{/if}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="method-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Function")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="method-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Constant")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="const-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Page") || ($index[index].index[contents].title == "Include")}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- <span class="include-title">{$index[index].index[contents].name}</span>
- {elseif ($index[index].index[contents].title == "Class")}
- <img src="{$subdir}media/images/{if $index[index].index[contents].abstract}Abstract{/if}{if $index[index].index[contents].access == 'private'}Private{/if}{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- {$index[index].index[contents].name}
- {else}
- <img src="{$subdir}media/images/{$index[index].index[contents].title}.png" alt="{$index[index].index[contents].title}" title="{$index[index].index[contents].title}" />
- {$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/earthli/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/class.tpl
deleted file mode 100755
index 7a46002e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/class.tpl
+++ /dev/null
@@ -1,437 +0,0 @@
-{include file="header.tpl" top3=true}
-
-<h2 class="class-name"><img src="{$subdir}media/images/{if $abstract}{if $access == 'private'}AbstractPrivate{else}Abstract{/if}{else}{if $access == 'private'}Private{/if}{/if}{if $is_interface}Interface{else}Class{/if}_logo.png"
- alt="{if $abstract}{if $access == 'private'}AbstractPrivate{else}Abstract{/if}{else}{if $access == 'private'}Private{/if}{/if} Class"
- title="{if $abstract}{if $access == 'private'}AbstractPrivate{else}Abstract{/if}{else}{if $access == 'private'}Private{/if}{/if} Class"
- style="vertical-align: middle">{if $is_interface}Interface{/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 || $consts || $iconsts}|{/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; white-space: nowrap">
- <img src="{$subdir}media/images/{if $children[kids].abstract}Abstract{/if}{if $children[kids].access == 'private'}Private{/if}Class.png"
- alt="{if $children[kids].abstract}Abstract{/if}{if $children[kids].access == 'private'}Private{/if} class"
- title="{if $children[kids].abstract}Abstract{/if}{if $children[kids].access == 'private'}Private{/if} class"
- style="vertical-align: center"/>
- {$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">Descendants</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}
- {if $vars[vars].static}
- <div class="var-title">
- <img src="{$subdir}media/images/StaticVariable.png" alt=" " />
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <div class="var-title">
- <img src="{$subdir}media/images/{if $vars[vars].access == 'private'}PrivateVariable{else}Variable{/if}.png" alt=" " />
- <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>
- {/if}
- {/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">Descendants</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}
- {if $methods[methods].static}
- <div class="method-definition">
- <img src="{$subdir}media/images/StaticMethod.png" alt=" "/>
- {if $methods[methods].function_return}
- static <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <div class="method-definition">
- <img src="{$subdir}media/images/{if $methods[methods].ifunction_call.constructor}Constructor{elseif $methods[methods].ifunction_call.destructor}Destructor{elseif $methods[methods].access == 'private'}{if $methods[methods].abstract}Abstract{/if}PrivateMethod{else}{if $methods[methods].abstract}Abstract{/if}Method{/if}.png" alt=" "/>
- {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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}
- <img src="{$subdir}media/images/{if $ivars[ivars].ivars[ivars2].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
- <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 $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}
- <img src="{$subdir}media/images/{if $imethods[imethods].imethods[im2].constructor}Constructor{elseif $imethods[imethods].imethods[im2].destructor}Destructor{elseif $imethods[imethods].imethods[im2].access == 'private'}{if $imethods[imethods].imethods[im2].abstract}Abstract{/if}PrivateMethod{else}{if $imethods[imethods].imethods[im2].abstract}Abstract{/if}Method{/if}.png" alt=" "/>
- <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_consts'><!-- --></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/earthli/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/define.tpl
deleted file mode 100755
index 94078960..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/define.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-{section name=def loop=$defines}
-<a name="{$defines[def].define_link}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <img src="{$subdir}media/images/Constant.png" />
- <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/earthli/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/function.tpl
deleted file mode 100755
index e62a98ae..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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>
- <img src="{$subdir}media/images/Function.png" />
- <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/earthli/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/global.tpl
deleted file mode 100755
index d37bda37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/global.tpl
+++ /dev/null
@@ -1,27 +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>
- <img src="{$subdir}media/images/Global.png" />
- <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/earthli/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/header.tpl
deleted file mode 100755
index c22ba37d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/include.tpl
deleted file mode 100755
index f264afd3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/include.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{section name=includes loop=$includes}
-<a name="{$includes[includes].include_file}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div>
- <img src="{$subdir}media/images/Page.png" alt=" " />
- <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/earthli/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/left_frame.tpl
deleted file mode 100755
index fe79e521..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/left_frame.tpl
+++ /dev/null
@@ -1,159 +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"><img class="tree-icon" src="{$subdir}media/images/tutorial_folder.png" alt=" ">Tutorials/Manuals</dt>
- <dd>
- {if $info[p].tutorials.pkg}
- <dl class="tree">
- <dt class="folder-title"><img class="tree-icon" src="{$subdir}media/images/package_folder.png" alt=" ">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"><img class="tree-icon" src="{$subdir}media/images/class_folder.png" alt=" ">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"><img class="tree-icon" src="{$subdir}media/images/function_folder.png" alt=" ">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].hasinterfaces}
- <dt class="folder-title"><img class="tree-icon" src="{$subdir}media/images/class_folder.png" alt=" ">Interfaces</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- <dd><img class="tree-icon" src="{$subdir}media/images/Interface.png" alt="Interface"><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/section}
- {/if}
- {if $info[p].hasclasses}
- <dt class="folder-title"><img class="tree-icon" src="{$subdir}media/images/class_folder.png" alt=" ">Classes</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- <dd><img class="tree-icon" src="{$subdir}media/images/{if $info[p].classes[class].abstract}Abstract{/if}{if $info[p].classes[class].access == 'private'}Private{/if}Class.png" alt="Class"><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/section}
- {/if}
- {if $info[p].functions}
- <dt class="folder-title"><img class="tree-icon" src="{$subdir}media/images/function_folder.png" alt=" ">Functions</dt>
- {section name=f loop=$info[p].functions}
- <dd><img class="tree-icon" src="{$subdir}media/images/Function.png" alt="Function"><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"><img class="tree-icon" src="{$subdir}media/images/folder.png" alt=" ">Files</dt>
- {section name=nonclass loop=$info[p].files}
- <dd><img class="tree-icon" src="{$subdir}media/images/Page.png" alt="File"><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"><img class="tree-icon" src="{$subdir}media/images/tutorial_folder.png" alt=" ">Tutorials/Manuals</dt>
- <dd>
- {if $info[p].tutorials.pkg}
- <dl class="tree">
- <dt class="folder-title"><img class="tree-icon" src="{$subdir}media/images/package_folder.png" alt=" ">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"><img class="tree-icon" src="{$subdir}media/images/class_folder.png" alt=" ">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"><img class="tree-icon" src="{$subdir}media/images/function_folder.png" alt=" ">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"><img class="tree-icon" src="{$subdir}media/images/package.png" alt="Sub-package">{$info[p].subpackage}</dt>
- <dd>
- <dl class="tree">
- {if $info[p].subpackagetutorial}
- <div><img class="tree-icon" src="{$subdir}media/images/tutorial.png" alt="Tutorial"><a href="{$info.0.subpackagetutorialnoa}" target="right">{$info.0.subpackagetutorialtitle}</a></div>
- {/if}
- {if $info[p].classes}
- <dt class="folder-title"><img class="tree-icon" src="{$subdir}media/images/class_folder.png" alt=" ">Classes</dt>
- {section name=class loop=$info[p].classes}
- <dd><img class="tree-icon" src="{$subdir}media/images/{if $info[p].classes[class].abstract}Abstract{/if}{if $info[p].classes[class].access == 'private'}Private{/if}Class.png" alt="Class"><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"><img class="tree-icon" src="{$subdir}media/images/function_folder.png" alt=" ">Functions</dt>
- {section name=f loop=$info[p].functions}
- <dd><img class="tree-icon" src="{$subdir}media/images/Function.png" alt="Function"><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"><img class="tree-icon" src="{$subdir}media/images/folder.png" alt=" ">Files</dt>
- {section name=nonclass loop=$info[p].files}
- <dd><img class="tree-icon" src="{$subdir}media/images/Page.png" alt="File"><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/earthli/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/banner.css
deleted file mode 100755
index 032b037f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/banner.css
+++ /dev/null
@@ -1,33 +0,0 @@
-body
-{
- background-color: #EEEEEE;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- text-align: right;
- clear: both;
- padding: .5em;
- border-top: 2px solid #AAAAAA;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #DDDDDD;
- border: 1px solid #AAAAAA;
- color: #000090;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass.png
deleted file mode 100644
index afa9d1d9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass_logo.png
deleted file mode 100644
index 8f65c390..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractClass_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractMethod.png
deleted file mode 100644
index 605ccbe5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass.png
deleted file mode 100644
index 53d76c63..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass_logo.png
deleted file mode 100644
index 4e68f570..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateClass_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateMethod.png
deleted file mode 100644
index 41cc9f02..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/AbstractPrivateMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class.png
deleted file mode 100755
index cf548d27..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class_logo.png
deleted file mode 100644
index 6f223c47..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Class_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constant.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constant.png
deleted file mode 100755
index a9c6f28b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constant.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constructor.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constructor.png
deleted file mode 100755
index 3f16222b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Constructor.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Destructor.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Destructor.png
deleted file mode 100755
index f28528f0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Destructor.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Function.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Function.png
deleted file mode 100755
index 902fe258..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Function.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Global.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Global.png
deleted file mode 100755
index 7281bd2a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Global.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/I.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/I.png
deleted file mode 100755
index e8512fb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/I.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Index.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Index.png
deleted file mode 100755
index 6558ec39..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Index.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface.png
deleted file mode 100644
index e6cd51ed..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface_logo.png
deleted file mode 100644
index 6f223c47..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Interface_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/L.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/L.png
deleted file mode 100755
index eb334eda..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/L.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lminus.png
deleted file mode 100755
index f7c43c0a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lplus.png
deleted file mode 100755
index 848ec2fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Lplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Method.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Method.png
deleted file mode 100755
index 9b215784..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Method.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page.png
deleted file mode 100755
index ffe7986e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page_logo.png
deleted file mode 100644
index 44ce0b3c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Page_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass.png
deleted file mode 100755
index 470e6d56..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass_logo.png
deleted file mode 100644
index 590e0064..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateClass_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateMethod.png
deleted file mode 100755
index d01f2b31..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateVariable.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateVariable.png
deleted file mode 100755
index d76b21d4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/PrivateVariable.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticMethod.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticMethod.png
deleted file mode 100755
index 9b215784..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticMethod.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticVariable.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticVariable.png
deleted file mode 100755
index 8e820193..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/StaticVariable.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/T.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/T.png
deleted file mode 100755
index 30173254..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/T.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tminus.png
deleted file mode 100755
index 2260e424..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tplus.png
deleted file mode 100755
index 2c8d8f4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Tplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Variable.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Variable.png
deleted file mode 100755
index 8e820193..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/Variable.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/blank.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/blank.png
deleted file mode 100755
index cee9cd37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/blank.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/class_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/class_folder.png
deleted file mode 100755
index 84e9587a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/class_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/empty.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/empty.png
deleted file mode 100644
index d5683865..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/empty.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/file.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/file.png
deleted file mode 100755
index 0bb2427f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/file.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/folder.png
deleted file mode 100755
index a2d79f8d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/function_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/function_folder.png
deleted file mode 100755
index 8b3d6e3b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/function_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button.png
deleted file mode 100755
index cdbc615d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button_disabled.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button_disabled.png
deleted file mode 100755
index 4a11780f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/next_button_disabled.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package.png
deleted file mode 100755
index b04cf566..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package_folder.png
deleted file mode 100755
index 6162bafd..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/package_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button.png
deleted file mode 100755
index 327fdbc2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button_disabled.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button_disabled.png
deleted file mode 100755
index c02ff64b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/previous_button_disabled.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/private_class_logo.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/private_class_logo.png
deleted file mode 100644
index 590e0064..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/private_class_logo.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial.png
deleted file mode 100755
index bc197375..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial_folder.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial_folder.png
deleted file mode 100755
index 2a468b2a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/tutorial_folder.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/up_button.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/up_button.png
deleted file mode 100755
index ff36c593..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/images/up_button.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/stylesheet.css
deleted file mode 100755
index 96729b65..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/media/stylesheet.css
+++ /dev/null
@@ -1,146 +0,0 @@
-a { color: #000090; text-decoration: none; }
-a:hover, a:active, a:focus { color: highlighttext; background-color: highlight; text-decoration: none; }
-
-body { background: #FFFFFF; }
-body, table { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; }
-
-a img { border: 0px; }
-
-/* Page layout/boxes */
-
-.info-box { }
-.info-box-title { margin: 1em 0em 0em 0em; font-weight: normal; font-size: 14pt; color: #999999; border-bottom: 2px solid #999999; }
-.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 { white-space: nowrap; font: icon }
-.tree dd { margin-left: 19px }
-.tree dl { margin: 0px }
-.tree-icon { vertical-align: middle; border: 0px; margin-right: 3px }
-
-/* 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; color: #014fbe; list-style-type: square; }
-.redefinitions { font-size: 8pt; padding-left: 0em; margin-left: 2em; }
-.package { font-weight: bold; }
-.package-title { font-weight: bold; font-size: 14pt; border-bottom: 1px solid black }
-.package-details { font-size: 85%; }
-.sub-package { font-weight: bold; }
-.tutorial { border-width: thin; border-color: #0066ff; }
-.tutorial-nav-box { width: 100%; border: 1px solid #999999; background-color: #F8F8F8; }
-.folder-title { font-style: italic; font-family: Verdana, Arial, Helvetica, sans-serif }
-
-/* 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: #0000AA; font-weight: bold; }
-
-.method-summary { color: #009000; padding-left: 1em; font-size: 8pt; }
-.method-header { }
-.method-definition { margin-bottom: .2em }
-.method-title { color: #009000; 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 { color: #014fbe; margin-bottom: .3em }
-.var-type { font-style: italic; }
-.var-name { font-weight: bold; }
-.var-default {}
-.var-description { font-weight: normal; color: #000000; }
-
-.include-title { color: #014fbe;}
-.include-type { font-style: italic; }
-.include-name { font-weight: bold; }
-
-.const-title { color: #FF6600; }
-.const-name { font-weight: bold; }
-
-/* Syntax highlighting */
-
-.src-code { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.src-code a:link { padding: 1px; text-decoration: underline; color: #0000DD; }
-.src-code a:visited { text-decoration: underline; color: #0000DD; }
-.src-code a:active { background-color: #FFFF66; color: #008000; }
-.src-code a:hover { background-color: #FFFF66; text-decoration: overline underline; color: #008000; }
-
-.src-comm { color: #666666; }
-.src-id { color: #FF6600; font-style: italic; }
-.src-inc { color: #0000AA; font-weight: bold; }
-.src-key { color: #0000AA; font-weight: bold; }
-.src-num { color: #CC0000; }
-.src-str { color: #CC0000; }
-.src-sym { }
-.src-var { }
-
-.src-php { font-weight: bold; }
-
-.src-doc { color: #666666; }
-.src-doc-close-template { color: #666666 }
-.src-doc-coretag { color: #008000; }
-.src-doc-inlinetag {}
-.src-doc-internal {}
-.src-doc-tag { color: #0080CC; }
-.src-doc-template { color: #666666 }
-.src-doc-type { font-style: italic; color: #444444 }
-.src-doc-var { color: #444444 }
-
-.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 : 1.0em; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-*[class="listing"] { line-height : 1.0em; }
-.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; border-bottom: 1px solid #999999; color: #999999; }
-.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/earthli/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/method.tpl
deleted file mode 100755
index 413cc5ea..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/method.tpl
+++ /dev/null
@@ -1,151 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<a name="method{$methods[methods].function_name}" id="{$methods[methods].function_name}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="method-header">
- <img src="{$subdir}media/images/StaticMethod.png" />
- <span class="method-title">static {$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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<a name="method{$methods[methods].function_name}" id="{$methods[methods].function_name}"><!-- --></a>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="method-header">
- <img src="{$subdir}media/images/{if $methods[methods].ifunction_call.constructor}Constructor{elseif $methods[methods].ifunction_call.destructor}Destructor{else}{if $methods[methods].abstract}Abstract{/if}{if $methods[methods].access == 'private'}Private{/if}Method{/if}.png" />
- <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/page.tpl
deleted file mode 100755
index 2cffc22d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/page.tpl
+++ /dev/null
@@ -1,214 +0,0 @@
-{include file="header.tpl" top3=true}
-
-<h2 class="file-name"><img src="{$subdir}media/images/Page_logo.png" alt="File" style="vertical-align: middle">{$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; white-space: nowrap">
- <img src="{$subdir}media/images/{if $classes[classes].abstract}Abstract{/if}{if $classes[classes].access == 'private'}Private{/if}Class.png"
- alt="{if $classes[classes].abstract}Abstract{/if}{if $classes[classes].access == 'private'}Private{/if} class"
- title="{if $classes[classes].abstract}Abstract{/if}{if $classes[classes].access == 'private'}Private{/if} class"/>
- {$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 $functions}
- <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/earthli/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/ric.tpl
deleted file mode 100755
index ad792475..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<div align="center"><h1>{$name}</h1></div>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/top_frame.tpl
deleted file mode 100755
index 69beb10c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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/earthli/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_nav.tpl
deleted file mode 100755
index 3cd7893d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/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}"><img src="{$subdir}media/images/previous_button.png" alt="Previous"></a>
- {else}
- <span class="disabled"><img src="{$subdir}media/images/previous_button_disabled.png" alt="Previous"></span>
- {/if}
- </td>
- <td style="text-align: center">
- {if $up}
- <a href="{$up}"><img src="{$subdir}media/images/up_button.png" alt="Up"></a>
- {/if}
- </td>
- <td style="text-align: right; width: 30%">
- {if $next}
- <a href="{$next}"><img src="{$subdir}media/images/next_button.png" alt="Next"></a>
- {else}
- <span class="disabled"><img src="{$subdir}media/images/next_button_disabled.png" alt="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/earthli/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/earthli/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_tree.tpl
deleted file mode 100755
index 18c8b05a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<div><img class="tree-icon" src="{$subdir}media/images/tutorial.png" alt="Tutorial"><a href="{$main.link}" target="right">{$main.title|strip_tags}</a></div>
-{if $haskids}
-<div style="margin-left: 19px">
- {$kids}
-</div>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/var.tpl
deleted file mode 100755
index 1da110cc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/earthli/templates/var.tpl
+++ /dev/null
@@ -1,94 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<a name="var{$vars[vars].var_name}" id="{$vars[vars].var_name}"><!-- --></A>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="var-header">
- <img src="{$subdir}media/images/{if $vars[vars].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
- <span class="var-title">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<a name="var{$vars[vars].var_name}" id="{$vars[vars].var_name}"><!-- --></A>
-<div class="{cycle values="evenrow,oddrow"}">
-
- <div class="var-header">
- <img src="{$subdir}media/images/{if $vars[vars].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
- <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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/options.ini
deleted file mode 100755
index fc1211f8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/options.ini
+++ /dev/null
@@ -1,576 +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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/l0l33t/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/basicindex.tpl
deleted file mode 100755
index 951ee264..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/class.tpl
deleted file mode 100755
index 9ab7c455..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/class.tpl
+++ /dev/null
@@ -1,429 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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/l0l33t/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/define.tpl
deleted file mode 100755
index 0da5d864..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/function.tpl
deleted file mode 100755
index b6880059..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/global.tpl
deleted file mode 100755
index eab7e0b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/header.tpl
deleted file mode 100755
index 09fc9856..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/header.tpl
+++ /dev/null
@@ -1,18 +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" />
- {if $top2}
- <link rel="stylesheet" href="{$subdir}media/banner.css" />
- <style>
- body {ldelim} padding: 1em; {rdelim}
- </style>
- {/if}
- <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/l0l33t/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/include.tpl
deleted file mode 100755
index c2419e5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/left_frame.tpl
deleted file mode 100755
index eb3f670d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/left_frame.tpl
+++ /dev/null
@@ -1,159 +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].hasinterfaces}
- <dt class="folder-title">Interfaces</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/section}
- {/if}
- {if $info[p].hasclasses}
- <dt class="folder-title">Classes</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/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/l0l33t/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/banner.css
deleted file mode 100755
index 4f7db5da..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background: #EEEEEE url(bg_left.png) repeat;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #999999;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #EEEEEE;
- border: 1px solid black;
- color: #0000C0;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/bg_left.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/bg_left.png
deleted file mode 100755
index 1c331f09..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/bg_left.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/stylesheet.css
deleted file mode 100755
index 26a31801..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/media/stylesheet.css
+++ /dev/null
@@ -1,154 +0,0 @@
-a
-{
- color: #336699;
- text-decoration: underline;
-}
-
-a:hover, a:active, a:focus
-{
- text-decoration: underline;
- color: #6699CC
-}
-
-body { background: #FFFFFF; font-family: "Courier New", Courier, fixed; font-size: 10pt }
-table { 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: 1px solid #336699; background-color: #EEEEEE }
-.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: #F4F4F4; 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; }
-.menu-body { background: #EEEEEE url(bg_left.css) repeat }
-.tree dl { margin: 0px }
-.tree a { text-decoration: none }
-.tree a:hover, .tree a:active, .tree a:focus { text-decoration: underline }
-
-/* 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 #AAAAAA; background: #EEEEEE url(bg_left.png) repeat; }
-.nav-button-disabled { color: #AAAAAA; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover { background-color: #CCCCCC; 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: #CC0000; }
-.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; background-color: DDDDFF }
-.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; border: 1px dashed #336699 }
-.var-name { font-weight: bold; }
-.var-default { border: 1px dashed #336699 }
-.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;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.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 solid #336699; background-color: #F4F4F4; padding: .5em; }
-.listing { border: 1px solid #336699; background-color: #F4F4F4; padding: .5em; white-space: nowrap; }
-.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; border-bottom: 1px solid #336699; padding: 2px }
-.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/l0l33t/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/method.tpl
deleted file mode 100755
index 06d57a12..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/method.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/page.tpl
deleted file mode 100755
index b5980236..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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 $functions}
- <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/l0l33t/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/ric.tpl
deleted file mode 100755
index eff734c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial_nav.tpl
deleted file mode 100755
index 89952301..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/l0l33t/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/tutorial_tree.tpl
deleted file mode 100755
index 617b5654..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/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/l0l33t/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/var.tpl
deleted file mode 100755
index fccf6892..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/l0l33t/templates/var.tpl
+++ /dev/null
@@ -1,92 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/options.ini
deleted file mode 100755
index 084809be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/phpdoc.de/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/basicindex.tpl
deleted file mode 100755
index 951ee264..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/class.tpl
deleted file mode 100755
index 9ab7c455..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/class.tpl
+++ /dev/null
@@ -1,429 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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/phpdoc.de/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/define.tpl
deleted file mode 100755
index 0da5d864..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/function.tpl
deleted file mode 100755
index b6880059..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/global.tpl
deleted file mode 100755
index eab7e0b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/header.tpl
deleted file mode 100755
index c22ba37d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/include.tpl
deleted file mode 100755
index c2419e5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/left_frame.tpl
deleted file mode 100755
index eb3f670d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/left_frame.tpl
+++ /dev/null
@@ -1,159 +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].hasinterfaces}
- <dt class="folder-title">Interfaces</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/section}
- {/if}
- {if $info[p].hasclasses}
- <dt class="folder-title">Classes</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/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/phpdoc.de/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/media/banner.css
deleted file mode 100755
index 065e76bc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background-color: #FFFFFF;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #999999;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #EEEEEE;
- border: 1px solid black;
- color: #0000C0;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/media/stylesheet.css
deleted file mode 100755
index 43834a16..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/media/stylesheet.css
+++ /dev/null
@@ -1,141 +0,0 @@
-a { color: #0000C0; text-decoration: underline; }
-a:hover { text-decoration: underline; background-color: #FFFFFF }
-a:active { text-decoration: underline; background-color: #FFFFFF }
-
-body, table { background-color: #EEEEEE; font-family: Verdana, Arial, sans-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: #FFFFFF }
-.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 #AAAAAA; background-color: #DDDDFF; }
-.nav-button-disabled { color: #AAAAAA; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover { background-color: #CCCCCC; 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; background-color: DDDDFF }
-.class-name { color: #000000; font-weight: bold; }
-
-.method-summary { padding-left: 1em; font-size: 8pt }
-.method-header { background-color: #DDDDFF; padding: 1px; }
-.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 { background-color: #DDDDFF; padding: 1px; }
-.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 #999999; padding: 1em;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.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; }
-.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
-.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; border: 2px solid #999999; background-color: #FFFFFF; padding: 2px }
-.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/phpdoc.de/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/method.tpl
deleted file mode 100755
index 06d57a12..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/method.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/page.tpl
deleted file mode 100755
index b5980236..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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 $functions}
- <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/phpdoc.de/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/ric.tpl
deleted file mode 100755
index eff734c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial_nav.tpl
deleted file mode 100755
index 89952301..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/phpdoc.de/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/tutorial_tree.tpl
deleted file mode 100755
index 617b5654..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/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/phpdoc.de/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/var.tpl
deleted file mode 100755
index fccf6892..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpdoc.de/templates/var.tpl
+++ /dev/null
@@ -1,92 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/options.ini
deleted file mode 100755
index c785503d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/options.ini
+++ /dev/null
@@ -1,507 +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_ABSTRACT = <font color="blue">
-/T_ABSTRACT = </font>
-T_CLONE = <font color="blue">
-/T_CLONE = </font>
-T_HALT_COMPILER = <font color="red">
-/T_HALT_COMPILER = </font>
-T_PUBLIC = <font color="blue">
-/T_PUBLIC = </font>
-T_PRIVATE = <font color="blue">
-/T_PRIVATE = </font>
-T_PROTECTED = <font color="blue">
-/T_PROTECTED = </font>
-T_FINAL = <font color="blue">
-/T_FINAL = </font>
-T_IMPLEMENTS = <font color="blue">
-/T_IMPLEMENTS = </font>
-T_CLASS = <font color="blue">
-/T_CLASS = </font>
-T_INTERFACE = <font color="blue">
-/T_INTERFACE = </font>
-T_INCLUDE = <font color="blue">
-/T_INCLUDE = </font>
-T_INCLUDE_ONCE = <font color="blue">
-/T_INCLUDE_ONCE = </font>
-T_REQUIRE_ONCE = <font color="blue">
-/T_REQUIRE_ONCE = </font>
-T_FUNCTION = <font color="blue">
-/T_FUNCTION = </font>
-T_VARIABLE = <strong>
-/T_VARIABLE = </strong>
-T_CONSTANT_ENCAPSED_STRING = <font color="#66cccc">
-/T_CONSTANT_ENCAPSED_STRING = </font>
-T_COMMENT = <font color="green">
-/T_COMMENT = </font>
-T_OBJECT_OPERATOR = <strong>
-/T_OBJECT_OPERATOR = </strong>
-T_RETURN = <font color="blue">
-/T_RETURN = </font>
-T_STATIC = <font color="blue">
-/T_STATIC = </font>
-T_SWITCH = <font color="blue">
-/T_SWITCH = </font>
-T_IF = <font color="blue">
-/T_IF = </font>
-T_FOREACH = <font color="blue">
-/T_FOREACH = </font>
-T_FOR = <font color="blue">
-/T_FOR = </font>
-T_VAR = <font color="blue">
-/T_VAR = </font>
-T_EXTENDS = <font color="blue">
-/T_EXTENDS = </font>
-T_RETURN = <font color="blue">
-/T_RETURN = </font>
-T_GLOBAL = <font color="blue">
-/T_GLOBAL = </font>
-T_DOUBLE_COLON = <strong>
-/T_DOUBLE_COLON = </strong>
-T_OBJECT_OPERATOR = <strong>
-/T_OBJECT_OPERATOR = </strong>
-T_OPEN_TAG = <strong>
-/T_OPEN_TAG = </strong>
-T_CLOSE_TAG = <strong>
-/T_CLOSE_TAG = </strong>
-
-[highlightSource]
-;; this is for highlighting things that aren't tokens like "&"
-;; format:
-;; word = open
-;; /word = close
-@ = <strong>
-/@ = </strong>
-& = <strong>
-/& = </strong>
-[ = <strong>
-/[ = </strong>
-] = <strong>
-/] = </strong>
-! = <strong>
-/! = </strong>
-";" = <strong>
-/; = </strong>
-( = <strong>
-/( = </strong>
-) = <strong>
-/) = </strong>
-, = <strong>
-/, = </strong>
-{ = <strong>
-/{ = </strong>
-} = <strong>
-/} = </strong>
-""" = <font color="#66cccc">
-/" = </font>
-
-[highlightDocBlockSourceTokens]
-;; this is for docblock tokens, using by phpDocumentor_HighlightParser
-;; tagphptype is for "string" in @param string description, for example
-docblock = <font color="#009999">
-/docblock = </font>
-tagphptype = <em>
-/tagphptype = </em>
-tagvarname = <strong>
-/tagvarname = </strong>
-coretag = <strong><font color = "#0099FF">
-/coretag = </font></strong>
-tag = <strong><font color="#009999">
-/tag = </font></strong>
-inlinetag = <em><font color="#0099FF">
-/inlinetag = </font></em>
-internal = <em><font color = "#6699cc">
-/internal = </font></em>
-closetemplate = <strong><font color="blue">
-/closetemplate = </font></strong>
-docblocktemplate = <font color="blue">
-/docblocktemplate = </font color="blue">
-
-[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 =
-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
-;;
-;; 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 = <font size="-1"><strong>by <em>
-/author = </em></strong></font>
-author! = 0
-
-authorblurb = blockquote
-
-authorgroup = <strong>Authors:</strong><br />
-/authorgroup =
-authorgroup! = 0
-
-caution = <table border="1"><th align="center">Caution</th><tr><td>
-/caution = </td></tr></table>
-caution! = 0
-
-command = <b class="cmd">
-/command = </b>
-
-cmdsynopsis = <div id="cmdsynopsis">
-/cmdsynopsis = </div>
-
-copyright = <em>
-/copyright = </em><br />
-
-emphasis = strong
-
-example = <table class="src-code" width="100%" border="1"><tr><td>
-/example = </td></tr></table>
-example! = 0
-
-function =
-/function = ()
-
-formalpara = p
-
-graphic = img
-graphic->fileref = src
-graphic/ =
-
-important = u
-
-informalequation = blockquote
-
-informalexample = pre
-
-inlineequation = em
-
-itemizedlist = ul
-
-listitem = li
-
-literal = code
-
-literallayout = pre
-
-option = " "
-/option =
-
-orderedlist = ol
-
-para = p
-
-programlisting = <table border="0" bgcolor="#E0E0E0" cellpadding="5"><tr><td><div class="src-code">
-/programlisting = </div></td></tr></table>
-programlisting! = 0
-
-refentry = div
-
-refnamediv = <div class="refname">
-/refnamediv = </div>
-refnamediv! = 0
-
-refname = h1
-
-refpurpose = <h2 class="refpurpose"><em>
-/refpurpose = </em></h2>
-
-refsynopsisdiv = <div class="refsynopsis">
-/refsynopsisdiv = </div>
-refsynopsisdiv! = 0
-
-refsect1 = span
-
-refsect2 =
-/refsect2 = <hr />
-
-refsect3 =
-/refsect3 = <br />
-
-releaseinfo = (
-/releaseinfo = )<br />
-
-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 = <table border="1"><tr><td>
-/warning = </td></tr></table>
-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" align="center">
-close = </h1>
-
-[refsect1_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h2 class="title" align="center">
-close = </h1>
-
-[refsect2_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h2 class="title" align="center">
-close = </h2>
-
-[refsect3_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <h3 class="title" align="center">
-close = </h3>
-
-[para_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <strong class="title" align="center">
-close = </strong>
-
-[formalpara_title]
-;tag_attr = true
-;attr_name = title
-cdata_start = true
-;cdata_end = true
-open = <strong class="title" align="center">
-close = </strong>
-
-[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/phpedit/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/basicindex.tpl
deleted file mode 100755
index f6f906cc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/basicindex.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-{section name=letter loop=$letters}
- <a href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a>
-{/section}
-
-<br /><br />
-<table border="0" width="100%">
-{section name=index loop=$index}
-<thead>
- <tr>
- <td><strong>{$index[index].letter}</strong></td>
- <td align='right'><a name="{$index[index].letter}">&nbsp; </a>
- <a href="#top">top</a><br /></td>
- </tr>
-</thead>
-<tbody>
- {section name=contents loop=$index[index].index}
- <tr>
- <td>&nbsp;&nbsp;&nbsp;<strong>{$index[index].index[contents].name}</strong></td>
- <td width="100%" align="left" valign="top">{$index[index].index[contents].listing}</td>
- </tr>
- {/section}
-</tbody>
-{/section}
-</table>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/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/phpedit/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/class.tpl
deleted file mode 100755
index b9dda927..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/class.tpl
+++ /dev/null
@@ -1,95 +0,0 @@
-{include file="header.tpl" top3=true}
-<!-- Start of Class Data -->
-<h2>
- {if $is_interface}Interface{else}Class{/if} {$class_name}
-</h2> (line <span class="linenumber">{if $class_slink}{$class_slink}{else}{$line_number}{/if}</span>)
-<div class="tab-pane" id="tabPane1">
-<script type="text/javascript">
-tp1 = new WebFXTabPane( document.getElementById( "tabPane1" ));
-</script>
-
-<div class="tab-page" id="Description">
-<h2 class="tab">Description</h2>
-<pre>
-{section name=tree loop=$class_tree.classes}{$class_tree.classes[tree]}{$class_tree.distance[tree]}{/section}
-</pre>
-{if $tutorial}
-<div class="maintutorial">Class Tutorial: {$tutorial}</div>
-{/if}
-{if $conflicts.conflict_type}
- <div align="left"><span class="font10bold" style="color:#FF0000">Warning:</span> Conflicts with classes:<br />
- {section name=me loop=$conflicts.conflicts}
- {$conflicts.conflicts[me]}<br />
- {/section}
- </div>
-{/if}
-<p>
- <b><i>Located in File: <a href="{$page_link}">{$source_location}</a></i></b><br>
-</p>
-{include file="docblock.tpl" type="class" sdesc=$sdesc desc=$desc}
-<br /><hr />
-{if $children}
-<span class="type">Classes extended from {$class_name}:</span>
- {section name=kids loop=$children}
- <dl>
- <dt>{$children[kids].link}</dt>
- <dd>{$children[kids].sdesc}</dd>
- </dl>
- {/section}</p>
-{/if}
-</div>
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "Description" ) );</script>
-<div class="tab-page" id="tabPage1">
-{include file="var.tpl"}
-</div>
-<div class="tab-page" id="constantsTabpage">
-{include file="const.tpl"}
-</div>
-<div class="tab-page" id="tabPage2">
-{include file="method.tpl"}
-</div>
-<div class="tab-page" id="iVars">
-<h2 class="tab">Inherited Variables</h2>
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "iVars" ) );</script>
-<!-- =========== VAR INHERITED SUMMARY =========== -->
-<A NAME='var_inherited_summary'><!-- --></A>
-<h3>Inherited Class Variable Summary</h3>
-
- {section name=ivars loop=$ivars}
- <!-- =========== Summary =========== -->
- <h4>Inherited From Class {$ivars[ivars].parent_class}</h4>
- {section name=ivars2 loop=$ivars[ivars].ivars}
- <h4>
-<img src="{$subdir}media/images/PublicProperty.gif" border="0" /><strong class="property"> {$ivars[ivars].ivars[ivars2].link}</strong> - {$ivars[ivars].ivars[ivars2].sdesc}
- </h4>
- {/section}
- {/section}
-</div>
-<div class="tab-page" id="iMethods">
-<h2 class="tab">Inherited Methods</h2>
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "iMethods" ) );</script>
-<!-- =========== INHERITED METHOD SUMMARY =========== -->
-<A NAME='functions_inherited'><!-- --></A>
-<h3>Inherited Method Summary</h3>
-
- {section name=imethods loop=$imethods}
- <!-- =========== Summary =========== -->
- <h4>Inherited From Class {$imethods[imethods].parent_class}</h4>
- {section name=im2 loop=$imethods[imethods].imethods}
- <h4>
-<img src="{$subdir}media/images/{if $imethods[imethods].imethods[im2].constructor}Constructor{elseif $imethods[imethods].imethods[im2].destructor}Destructor{else}PublicMethod{/if}.gif" border="0" /><strong class="method"> {$imethods[imethods].imethods[im2].link}</strong> - {$imethods[imethods].imethods[im2].sdesc}
- </h4>
-
- {/section}
- <br />
- {/section}
-</div>
-</div>
-<script type="text/javascript">
-//<![CDATA[
-
-setupAllTabs();
-
-//]]>
-</script>
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/const.tpl
deleted file mode 100644
index d9f36e58..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/const.tpl
+++ /dev/null
@@ -1,21 +0,0 @@
-
-<h2 class="tab">Class Constants</h2>
-<!-- ============ VARIABLE DETAIL =========== -->
-<strong>Summary:</strong><br />
-{section name=consts loop=$consts}
-<div class="const-title">
- <a href="#{$consts[consts].const_dest}" title="details" class="property"><strong>{$consts[consts].const_name}</strong></a>
-</div>
-{/section}
-<hr />
-{section name=consts loop=$consts}
-<a name="{$consts[consts].const_dest}" id="{$consts[consts].const_dest}"><!-- --></A>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'">
-<h4>
-<img src="{$subdir}media/images/Constant.gif" border="0" /> <strong class="property">{$consts[consts].const_name} = {$consts[consts].const_value|replace:"\n":"<br />"}</strong> (line <span class="linenumber">{if $consts[consts].slink}{$consts[consts].slink}{else}{$consts[consts].line_number}{/if}</span>)
- </h4>
-{include file="docblock.tpl" sdesc=$consts[consts].sdesc desc=$consts[consts].desc tags=$consts[consts].tags}
-</div>
-{/section}
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "constantsTabpage" ) );</script>
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/define.tpl
deleted file mode 100755
index 68339e53..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/define.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!-- ============ CONSTANT DETAIL =========== -->
-
-<A NAME='constant_detail'></A>
-<h2 class="tab">Constants</h2>
-
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "tabPage3" ) );</script>
-
-{section name=def loop=$defines}
-<a name="{$defines[def].define_link}"><!-- --></a>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'">
-<h4>
- <img src="{$subdir}media/images/Constant.gif" border="0" /> <strong class="property">{$defines[def].define_name}</strong> (line <span class="linenumber">{if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}</span>)
- </h4>
-<h4>{$defines[def].define_name} : {$defines[def].define_value|replace:"\n":"<br />"}</h4>
-{if $defines[def].define_conflicts.conflict_type}
- <p><span class="warning">Warning:</span> Conflicts with constants:<br />
- {section name=me loop=$defines[def].define_conflicts.conflicts}
- {$defines[def].define_conflicts.conflicts[me]}<br />
- {/section}
- </p>
-{/if}
-{include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags}
-</div>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/docblock.tpl
deleted file mode 100755
index 7b1e17d7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/docblock.tpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<!-- ========== Info from phpDoc block ========= -->
-{if $sdesc}
-<h5>{$sdesc}</h5>
-{/if}
-{if $desc}
-<div class="desc">{$desc}</div>
-{/if}
-{if $function}
- {if $params}
- <h4>Parameters</h4>
- <ul>
- {section name=params loop=$params}
- <li><strong>{$params[params].datatype} {$params[params].var}</strong>: {$params[params].data}</li>
- {/section}
- </ul>
- {/if}
-
- <h4>Info</h4>
- <ul>
- {section name=tags loop=$tags}
- <li><strong>{$tags[tags].keyword}</strong> - {$tags[tags].data}</li>
- {/section}
- </ul>
-{else}
-<ul>
- {section name=tags loop=$tags}
- <li><strong>{$tags[tags].keyword}:</strong> - {$tags[tags].data}</li>
- {/section}
-</ul>
-{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/elementindex.tpl
deleted file mode 100755
index fcb310a8..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/elementindex.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-{include file="header.tpl" noleftindex=true}
-<a name="top"></a>
-<h1>Index of All Elements</h1>
-<a name="top">&nbsp; </a>
-<strong>Indexes by package:</strong><br />
-<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/phpedit/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/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/phpedit/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/examplesource.tpl
deleted file mode 100755
index 5aef23d7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/examplesource.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl" title=$title}
-<h1 align="center">{$title}</h1>
-<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/phpedit/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/filesource.tpl
deleted file mode 100755
index 3d93199e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/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="src-code">
-{$source}
-</div>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/footer.tpl
deleted file mode 100755
index 9088c4fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/footer.tpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{if !$index}
- <div id="credit">
- <hr />
- Documentation generated on {$date} by <a href="{$phpdocwebsite}" target="_blank">phpDocumentor {$phpdocversion}</a>
- </div>
-{/if}
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/function.tpl
deleted file mode 100755
index 6348dd0e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/function.tpl
+++ /dev/null
@@ -1,29 +0,0 @@
-<!-- ============ FUNCTION DETAIL =========== -->
-
-<h2 class="tab">Functions</h2>
-
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "tabPage4" ) );</script>
-
-{section name=func loop=$functions}
-<a name="{$functions[func].function_dest}" id="{$functions[func].function_dest}"><!-- --></a>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'">
-<h4>
- <img src="{$subdir}media/images/PublicMethod.gif" border="0" /> <strong class="method">{$functions[func].function_name}</strong> (line <span class="linenumber">{if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}</span>)
- </h4>
-<h4><i>{$functions[func].function_return}</i> <strong>{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].hasdefault}[{/if}{$functions[func].ifunction_call.params[params].type} {$functions[func].ifunction_call.params[params].name}{if $functions[func].ifunction_call.params[params].hasdefault} = {$functions[func].ifunction_call.params[params].default|escape:"html"}]{/if}
-{/section}
-{/if})</strong></h4>
-{if $functions[func].function_conflicts.conflict_type}
-<div align="left"><span class="warning">Warning:</span> Conflicts with functions:<br />
-{section name=me loop=$functions[func].function_conflicts.conflicts}
-{$functions[func].function_conflicts.conflicts[me]}<br />
-{/section}
-</div>
-{/if}
-
-{include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags params=$functions[func].params function=true}
-</div>
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/global.tpl
deleted file mode 100755
index 42303bf1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/global.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!-- ============ GLOBAL DETAIL =========== -->
-
-<h2 class="tab">Global Variables</h2>
-
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "tabPage2" ) );</script>
-
-{section name=glob loop=$globals}
-<a name="{$globals[glob].global_link}" id="{$globals[glob].global_link}"><!-- --></a>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'">
-<h4>
- <img src="{$subdir}media/images/Constants.gif" border="0" /> <strong class="Property">{$globals[glob].global_name}</strong> (line <span class="linenumber">{if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}</span>)
- </h4>
-<h4><i>{$globals[glob].global_type}</i> {$globals[glob].global_name} : {$globals[glob].global_value|replace:"\n":"<br />"}</h4>
-{if $globals[glob].global_conflicts.conflict_type}
- <p><span class="warning">Warning:</span> Conflicts with global variables:<br />
- {section name=me loop=$globals[glob].global_conflicts.conflicts}
- {$globals[glob].global_conflicts.conflicts[me]}<br />
- {/section}
- </p>
-{/if}
-
-{include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags}
-</div>
-{/section} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/header.tpl
deleted file mode 100755
index 378f67e3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/header.tpl
+++ /dev/null
@@ -1,97 +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>
- <title>{$title}</title>
- <link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
-{if $top2 || $top3}
- <script src="{$subdir}media/lib/classTree.js"></script>
-<link id="webfx-tab-style-sheet" type="text/css" rel="stylesheet" href="{$subdir}media/lib/tab.webfx.css" />
-<script type="text/javascript" src="{$subdir}media/lib/tabpane.js"></script>
-{/if}
-{if $top2}
- <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
-{/if}
-{if $top3 || $top2}
- <script language="javascript" type="text/javascript" src="{$subdir}media/lib/ua.js"></script>
-<script language="javascript" type="text/javascript">
- var imgPlus = new Image();
- var imgMinus = new Image();
- imgPlus.src = "{$subdir}media/images/plus.gif";
- imgMinus.src = "{$subdir}media/images/minus.gif";
-
- function showNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgMinus.src;
- oTable.style.display = "block";
- {rdelim}
-
- function hideNode(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- var oImg = document.layers["img" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- var oImg = document.all["img" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- var oImg = document.getElementById("img" + Node);
- break;
- {rdelim}
- oImg.src = imgPlus.src;
- oTable.style.display = "none";
- {rdelim}
-
- function nodeIsVisible(Node){ldelim}
- switch(navigator.family){ldelim}
- case 'nn4':
- // Nav 4.x code fork...
- var oTable = document.layers["span" + Node];
- break;
- case 'ie4':
- // IE 4/5 code fork...
- var oTable = document.all["span" + Node];
- break;
- case 'gecko':
- // Standards Compliant code fork...
- var oTable = document.getElementById("span" + Node);
- break;
- {rdelim}
- return (oTable && oTable.style.display == "block");
- {rdelim}
-
- function toggleNodeVisibility(Node){ldelim}
- if (nodeIsVisible(Node)){ldelim}
- hideNode(Node);
- {rdelim}else{ldelim}
- showNode(Node);
- {rdelim}
- {rdelim}
-</script>
-{/if}
-<!-- template designed by Julien Damon based on PHPEdit's generated templates, and tweaked by Greg Beaver -->
-<body bgcolor="#ffffff" {if $top2} topmargin="3" leftmargin="3" rightmargin="2" bottommargin="3"{/if}>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/include.tpl
deleted file mode 100755
index 56e66a9d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/include.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<!-- ============ Includes DETAIL =========== -->
-
-<h2 class="tab">Include/Require Statements</h2>
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "tabPage1" ) );</script>
-
-
-{section name=includes loop=$includes}
-<a name="{$includes[includes].include_file}"><!-- --></a>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'">
-<h4>
- <img src="{$subdir}media/images/file.png" border="0" /> <strong class="Property">{$includes[includes].include_value}</strong> (line <span class="linenumber">{if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}</span>)
- </h4>
-<h4>{$includes[includes].include_name} : {$includes[includes].include_value}</h4>
-{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/phpedit/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/index.tpl
deleted file mode 100755
index a0ade4f5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/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 cols='220,*'>
- <FRAMESET rows='220,*'>
- <FRAME src='packages.html' name='left_top'>
- <FRAME src='{$start}' name='left_bottom'>
- </FRAMESET>
- <FRAME src='{$blank}.html' name='right'>
- <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/phpedit/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/left_frame.tpl
deleted file mode 100755
index dd5f2607..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/left_frame.tpl
+++ /dev/null
@@ -1,166 +0,0 @@
-{include file="header.tpl" top2=true}
-{if $hastodos}
-<div id="todolist">
-<p><a href="{$todolink}" target="right">Todo List</a></p>
-</div>
-{/if}
-<h3>Navigation: {$info.0.package}</h3>
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=p loop=$info}
-{if $info[p].subpackage == ""}
-{if $info[p].packagetutorial}
- var tree = new WebFXTree('Help : {$info[p].packagetutorialtitle|strip_tags}', '{$info[p].packagetutorialnoa}');
-{else}
- var tree = new WebFXTree('Help : {$info[p].package}', '{$info[p].packagedoc}.html');
-{/if}
- tree.setBehavior('classic');
- tree.openIcon = 'media/images/Disk.gif';
- tree.icon = 'media/images/Disk.gif';
-
- var elements = new WebFXTreeItem('Index of elements', '{$elementindex}.html');
- elements.openIcon = 'media/images/file.png';
- elements.icon = 'media/images/file.png';
- tree.add(elements);
-
- var tree_function = new WebFXTreeItem('Function(s)', '{$packagedoc}');
- tree_function.openIcon = 'media/images/Functions.gif';
- tree_function.icon = 'media/images/Functions.gif';
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title}', '{$info[p].functions[nonclass].link}');
- fic.openIcon = 'media/images/PublicMethod.gif';
- fic.icon = 'media/images/PublicMethod.gif';
- tree_function.add(fic);
- {/section}
- tree.add(tree_function);
-
- var tree_interface = new WebFXTreeItem('Interface(s)', '{$classtreepage}.html');
- tree_interface.openIcon = 'media/images/classFolder.gif';
- tree_interface.icon = 'media/images/classFolder.gif';
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title}', '{$info[p].classes[class].link}');
- classe.openIcon = 'media/images/Class.gif';
- classe.icon = 'media/images/Class.gif';
- tree_interface.add(classe);
- {/if}
- {/section}
- tree.add(tree_interface);
-
- var tree_classe = new WebFXTreeItem('Class(es)', '{$classtreepage}.html');
- tree_classe.openIcon = 'media/images/classFolder.gif';
- tree_classe.icon = 'media/images/classFolder.gif';
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title}', '{$info[p].classes[class].link}');
- classe.openIcon = 'media/images/Class.gif';
- classe.icon = 'media/images/Class.gif';
- tree_classe.add(classe);
- {/if}
- {/section}
- tree.add(tree_classe);
-
- var tree_file = new WebFXTreeItem('File(s)', '{$packagedoc}');
- tree_file.openIcon = 'media/images/FolderOpened.gif';
- tree_file.icon = 'media/images/foldericon.png';
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title}', '{$info[p].files[nonclass].link}');
- file.openIcon = 'media/images/file.png';
- file.icon = 'media/images/file.png';
- tree_file.add(file);
- {/section}
- tree.add(tree_file);
-{else}
-{if $info[p].subpackagetutorial}
- var subpackagetree = new WebFXTreeItem('Subpackage : {$info[p].subpackagetutorialtitle|strip_tags}', '{$info[p].subpackagetutorialnoa}');
-{else}
- var subpackagetree = new WebFXTreeItem('Subpackage : {$info[p].subpackage}', '{$packagedoc}');
-{/if}
- subpackagetree.openIcon = 'media/images/Disk.gif';
- subpackagetree.icon = 'media/images/Disk.gif';
-
- var subpackagetree_function = new WebFXTreeItem('Function(s)', '{$packagedoc}');
- subpackagetree_function.openIcon = 'media/images/Functions.gif';
- subpackagetree_function.icon = 'media/images/Functions.gif';
- {section name=nonclass loop=$info[p].functions}
- var fic = new WebFXTreeItem('{$info[p].functions[nonclass].title}', '{$info[p].functions[nonclass].link}');
- fic.openIcon = 'media/images/PublicMethod.gif';
- fic.icon = 'media/images/PublicMethod.gif';
- subpackagetree_function.add(fic);
- {/section}
- subpackagetree.add(subpackagetree_function);
-
- var subpackagetree_classe = new WebFXTreeItem('Class(es)', '{$classtreepage}.html');
- subpackagetree_classe.openIcon = 'media/images/classFolder.gif';
- subpackagetree_classe.icon = 'media/images/classFolder.gif';
- {section name=class loop=$info[p].classes}
- var classe = new WebFXTreeItem('{$info[p].classes[class].title}', '{$info[p].classes[class].link}');
- classe.openIcon = 'media/images/Class.gif';
- classe.icon = 'media/images/Class.gif';
- subpackagetree_classe.add(classe);
- {/section}
- subpackagetree.add(subpackagetree_classe);
-
- var subpackagetree_file = new WebFXTreeItem('File(s)', '{$packagedoc}');
- subpackagetree_file.openIcon = 'media/images/FolderOpened.gif';
- subpackagetree_file.icon = 'media/images/foldericon.png';
- {section name=nonclass loop=$info[p].files}
- var file = new WebFXTreeItem('{$info[p].files[nonclass].title}', '{$info[p].files[nonclass].link}');
- file.openIcon = 'media/images/file.png';
- file.icon = 'media/images/file.png';
- subpackagetree_file.add(file);
- {/section}
- subpackagetree.add(subpackagetree_file);
-
- tree.add(subpackagetree);
-{/if}
-{/section}
- document.write(tree);
-{rdelim}
-</script>
-<br />
-{if $hastutorials}
-<div class="tutorialist">
-{section name=p loop=$info}
-{if count($info[p].tutorials)}
-<h3>Tutorials/Manuals:{if $info[p].subpackage} {$info[p].subpackage}{/if}</h3>
-{if $info[p].tutorials.pkg}
-<strong>Package-level:</strong>
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=ext loop=$info[p].tutorials.pkg}
-{$info[p].tutorials.pkg[ext]}
-{/section}
-{rdelim}
-</script>
-{/if}
-{if $info[p].tutorials.cls}
-<strong>Class-level:</strong>
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=ext loop=$info[p].tutorials.cls}
-{$info[p].tutorials.cls[ext]}
-{/section}
-{rdelim}
-</script>
-{/if}
-{if $info[p].tutorials.proc}
-<strong>Procedural-level:</strong>
-<script language="Javascript">
-if (document.getElementById) {ldelim}
-{section name=ext loop=$info[p].tutorials.proc}
-{$info[p].tutorials.proc[ext]}
-{/section}
-{rdelim}
-{/if}
-</script>
-{/if}
-{/section}
-{/if}
-</div>
-<br />
-<span CLASS="small"><a href="{$phpdocwebsite}" target="_blank">phpDocumentor v <b>{$phpdocversion}</b></a><br />
-<br />
-<i>HTML layout inspired by </i><a href="http://www.phpedit.com" target="right">PHPEdit</a></span>
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Class.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Class.gif
deleted file mode 100755
index ada36bbb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Class.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constant.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constant.gif
deleted file mode 100755
index d9ca9cfa..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constant.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constants.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constants.gif
deleted file mode 100755
index eba8d08f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constants.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constructor.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constructor.gif
deleted file mode 100755
index f153cfb4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Constructor.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Destructor.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Destructor.gif
deleted file mode 100755
index bf3d62b3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Destructor.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Disk.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Disk.gif
deleted file mode 100755
index 7ab08fd0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Disk.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderClosed.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderClosed.gif
deleted file mode 100755
index 68c6563c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderClosed.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderOpened.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderOpened.gif
deleted file mode 100755
index 8b012d55..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/FolderOpened.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Functions.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Functions.gif
deleted file mode 100755
index bc2def80..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Functions.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/GhostClass.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/GhostClass.gif
deleted file mode 100755
index 44124540..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/GhostClass.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/I.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/I.png
deleted file mode 100755
index e8512fb9..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/I.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/L.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/L.png
deleted file mode 100755
index eb334eda..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/L.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lminus.png
deleted file mode 100755
index f7c43c0a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lplus.png
deleted file mode 100755
index 848ec2fc..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Lplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateDataMember.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateDataMember.gif
deleted file mode 100755
index 346380de..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateDataMember.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateMethod.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateMethod.gif
deleted file mode 100755
index dcd2b203..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateMethod.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateProperty.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateProperty.gif
deleted file mode 100755
index a21fffa0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PrivateProperty.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedDataMember.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedDataMember.gif
deleted file mode 100755
index 882fa7db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedDataMember.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedMethod.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedMethod.gif
deleted file mode 100755
index b25197b2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedMethod.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedProperty.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedProperty.gif
deleted file mode 100755
index 94892fe4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/ProtectedProperty.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicDataMember.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicDataMember.gif
deleted file mode 100755
index 5a799e0c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicDataMember.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicMethod.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicMethod.gif
deleted file mode 100755
index 571fd9ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicMethod.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicProperty.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicProperty.gif
deleted file mode 100755
index 634ff5cb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/PublicProperty.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/T.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/T.png
deleted file mode 100755
index 30173254..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/T.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tminus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tminus.png
deleted file mode 100755
index 2260e424..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tminus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tplus.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tplus.png
deleted file mode 100755
index 2c8d8f4f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Tplus.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Types.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Types.gif
deleted file mode 100755
index 7c13fd59..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Types.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Variable.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Variable.gif
deleted file mode 100755
index 63b3f553..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Variable.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Vars.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Vars.gif
deleted file mode 100755
index 3963c3c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/Vars.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/blank.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/blank.png
deleted file mode 100755
index cee9cd37..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/blank.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/classFolder.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/classFolder.gif
deleted file mode 100755
index 5492345f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/classFolder.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/error.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/error.gif
deleted file mode 100755
index e323ff06..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/error.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/file.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/file.png
deleted file mode 100755
index 0bb2427f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/file.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/foldericon.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/foldericon.png
deleted file mode 100755
index 2684748b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/foldericon.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/minus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/minus.gif
deleted file mode 100755
index 9e998f1b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/minus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgError.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgError.gif
deleted file mode 100755
index 93c6d36a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgError.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgFatalError.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgFatalError.gif
deleted file mode 100755
index 6257bbe5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgFatalError.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgHint.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgHint.gif
deleted file mode 100755
index 0b23fbfe..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgHint.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgInformation.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgInformation.gif
deleted file mode 100755
index 1cc5c9ba..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgInformation.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgWarning.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgWarning.gif
deleted file mode 100755
index e0757783..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/msgWarning.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/openfoldericon.png b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/openfoldericon.png
deleted file mode 100755
index 15fcd567..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/openfoldericon.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/plus.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/plus.gif
deleted file mode 100755
index cade83c7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/plus.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/spacer.gif b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/spacer.gif
deleted file mode 100755
index 1fa6d01f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/images/spacer.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/classTree.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/classTree.js
deleted file mode 100755
index 7f57c474..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/classTree.js
+++ /dev/null
@@ -1,454 +0,0 @@
-/*----------------------------------------\
-| Cross Browser Tree Widget 1.1 |
-|-----------------------------------------|
-| Created by Emil A. Eklund (eae@eae.net) |
-| For WebFX (http://webfx.eae.net/) |
-|-----------------------------------------|
-| This script is provided as is without |
-| any warranty whatsoever. It may be used |
-| free of charge for non commerical sites |
-| For commerical use contact the author |
-| of this script for further details. |
-|-----------------------------------------|
-| Created 2000-12-11 | Updated 2001-09-06 |
-\----------------------------------------*/
-
-var webFXTreeConfig = {
- rootIcon : 'media/images/Class.gif',
- openRootIcon : 'media/images/Class.gif',
- folderIcon : 'media/images/Class.gif',
- openFolderIcon : 'media/images/Class.gif',
- fileIcon : 'media/images/Class.gif',
- iIcon : 'media/images/I.png',
- lIcon : 'media/images/L.png',
- lMinusIcon : 'media/images/Lminus.png',
- lPlusIcon : 'media/images/Lplus.png',
- tIcon : 'media/images/T.png',
- tMinusIcon : 'media/images/Tminus.png',
- tPlusIcon : 'media/images/Tplus.png',
- blankIcon : 'media/images/blank.png',
- defaultText : 'Tree Item',
- defaultAction : 'javascript:void(0);',
- defaultTarget : 'right',
- defaultBehavior : 'classic'
-};
-
-var webFXTreeHandler = {
- idCounter : 0,
- idPrefix : "webfx-tree-object-",
- all : {},
- behavior : null,
- selected : null,
- getId : function() { return this.idPrefix + this.idCounter++; },
- toggle : function (oItem) { this.all[oItem.id.replace('-plus','')].toggle(); },
- select : function (oItem) { this.all[oItem.id.replace('-icon','')].select(); },
- focus : function (oItem) { this.all[oItem.id.replace('-anchor','')].focus(); },
- blur : function (oItem) { this.all[oItem.id.replace('-anchor','')].blur(); },
- keydown : function (oItem) { return this.all[oItem.id].keydown(window.event.keyCode); },
- cookies : new WebFXCookie()
-};
-
-/*
- * WebFXCookie class
- */
-
-function WebFXCookie() {
- if (document.cookie.length) { this.cookies = ' ' + document.cookie; }
-}
-
-WebFXCookie.prototype.setCookie = function (key, value) {
- document.cookie = key + "=" + escape(value);
-}
-
-WebFXCookie.prototype.getCookie = function (key) {
- if (this.cookies) {
- var start = this.cookies.indexOf(' ' + key + '=');
- if (start == -1) { return null; }
- var end = this.cookies.indexOf(";", start);
- if (end == -1) { end = this.cookies.length; }
- end -= start;
- var cookie = this.cookies.substr(start,end);
- return unescape(cookie.substr(cookie.indexOf('=') + 1, cookie.length - cookie.indexOf('=') + 1));
- }
- else { return null; }
-}
-
-/*
- * WebFXTreeAbstractNode class
- */
-
-function WebFXTreeAbstractNode(sText, sAction, sTarget) {
- this.childNodes = [];
- this.id = webFXTreeHandler.getId();
- this.text = sText || webFXTreeConfig.defaultText;
- this.action = sAction || webFXTreeConfig.defaultAction;
- this.targetWindow = sTarget || webFXTreeConfig.defaultTarget;
- this._last = false;
- webFXTreeHandler.all[this.id] = this;
-}
-
-WebFXTreeAbstractNode.prototype.add = function (node) {
- node.parentNode = this;
- this.childNodes[this.childNodes.length] = node;
- var root = this;
- if (this.childNodes.length >=2) {
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- while (root.parentNode) { root = root.parentNode; }
- if (root.rendered) {
- if (this.childNodes.length >= 2) {
- document.getElementById(this.childNodes[this.childNodes.length -2].id + '-plus').src = ((this.childNodes[this.childNodes.length -2].folder)?webFXTreeConfig.tMinusIcon:webFXTreeConfig.tIcon);
- if (this.childNodes[this.childNodes.length -2].folder) {
- this.childNodes[this.childNodes.length -2].plusIcon = webFXTreeConfig.tPlusIcon;
- this.childNodes[this.childNodes.length -2].minusIcon = webFXTreeConfig.tMinusIcon;
- }
- this.childNodes[this.childNodes.length -2]._last = false;
- }
- this._last = true;
- var foo = this;
- while (foo.parentNode) {
- for (var i = 0; i < foo.parentNode.childNodes.length; i++) {
- if (foo.id == foo.parentNode.childNodes[i].id) { break; }
- }
- if (++i == foo.parentNode.childNodes.length) { foo.parentNode._last = true; }
- else { foo.parentNode._last = false; }
- foo = foo.parentNode;
- }
- document.getElementById(this.id + '-cont').insertAdjacentHTML("beforeEnd", node.toString());
- if ((!this.folder) && (!this.openIcon)) {
- this.icon = webFXTreeConfig.folderIcon;
- this.openIcon = webFXTreeConfig.openFolderIcon;
- }
- this.folder = true;
- this.indent();
- this.expand();
- }
- return node;
-}
-
-WebFXTreeAbstractNode.prototype.toggle = function() {
- if (this.folder) {
- if (this.open) { this.collapse(); }
- else { this.expand(); }
- }
-}
-
-WebFXTreeAbstractNode.prototype.select = function() {
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.focus = function() {
- webFXTreeHandler.selected = this;
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.openIcon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'highlight';
- document.getElementById(this.id + '-anchor').style.color = 'highlighttext';
- document.getElementById(this.id + '-anchor').focus();
-}
-
-WebFXTreeAbstractNode.prototype.blur = function() {
- if ((this.openIcon) && (webFXTreeHandler.behavior != 'classic')) { document.getElementById(this.id + '-icon').src = this.icon; }
- document.getElementById(this.id + '-anchor').style.backgroundColor = 'transparent';
- document.getElementById(this.id + '-anchor').style.color = 'menutext';
-}
-
-WebFXTreeAbstractNode.prototype.doExpand = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.openIcon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'block'; }
- this.open = true;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '1');
-}
-
-WebFXTreeAbstractNode.prototype.doCollapse = function() {
- if (webFXTreeHandler.behavior == 'classic') { document.getElementById(this.id + '-icon').src = this.icon; }
- if (this.childNodes.length) { document.getElementById(this.id + '-cont').style.display = 'none'; }
- this.open = false;
- webFXTreeHandler.cookies.setCookie(this.id.substr(18,this.id.length - 18), '0');
-}
-
-WebFXTreeAbstractNode.prototype.expandAll = function() {
- this.expandChildren();
- if ((this.folder) && (!this.open)) { this.expand(); }
-}
-
-WebFXTreeAbstractNode.prototype.expandChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].expandAll();
-} }
-
-WebFXTreeAbstractNode.prototype.collapseAll = function() {
- if ((this.folder) && (this.open)) { this.collapse(); }
- this.collapseChildren();
-}
-
-WebFXTreeAbstractNode.prototype.collapseChildren = function() {
- for (var i = 0; i < this.childNodes.length; i++) {
- this.childNodes[i].collapseAll();
-} }
-
-WebFXTreeAbstractNode.prototype.indent = function(lvl, del, last, level) {
- /*
- * Since we only want to modify items one level below ourself,
- * and since the rightmost indentation position is occupied by
- * the plus icon we set this to -2
- */
- if (lvl == null) { lvl = -2; }
- var state = 0;
- for (var i = this.childNodes.length - 1; i >= 0 ; i--) {
- state = this.childNodes[i].indent(lvl + 1, del, last, level);
- if (state) { return; }
- }
- if (del) {
- if (level >= this._level) {
- if (this.folder) {
- document.getElementById(this.id + '-plus').src = (this.open)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.lPlusIcon;
- this.plusIcon = webFXTreeConfig.lPlusIcon;
- this.minusIcon = webFXTreeConfig.lMinusIcon;
- }
- else { document.getElementById(this.id + '-plus').src = webFXTreeConfig.lIcon; }
- return 1;
- }
- }
- var foo = document.getElementById(this.id + '-indent-' + lvl);
- if (foo) {
- if ((del) && (last)) { foo._last = true; }
- if (foo._last) { foo.src = webFXTreeConfig.blankIcon; }
- else { foo.src = webFXTreeConfig.iIcon; }
- }
- return 0;
-}
-
-/*
- * WebFXTree class
- */
-
-function WebFXTree(sText, sAction, sBehavior, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- this.icon = sIcon || webFXTreeConfig.rootIcon;
- this.openIcon = sOpenIcon || webFXTreeConfig.openRootIcon;
- /* Defaults to open */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '0')?false:true;
- this.folder = true;
- this.rendered = false;
- if (!webFXTreeHandler.behavior) { webFXTreeHandler.behavior = sBehavior || webFXTreeConfig.defaultBehavior; }
- this.targetWindow = 'right';
-}
-
-WebFXTree.prototype = new WebFXTreeAbstractNode;
-
-WebFXTree.prototype.setBehavior = function (sBehavior) {
- webFXTreeHandler.behavior = sBehavior;
-};
-
-WebFXTree.prototype.getBehavior = function (sBehavior) {
- return webFXTreeHandler.behavior;
-};
-
-WebFXTree.prototype.getSelected = function() {
- if (webFXTreeHandler.selected) { return webFXTreeHandler.selected; }
- else { return null; }
-}
-
-WebFXTree.prototype.remove = function() { }
-
-WebFXTree.prototype.expand = function() {
- this.doExpand();
-}
-
-WebFXTree.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
-}
-
-WebFXTree.prototype.getFirst = function() {
- return null;
-}
-
-WebFXTree.prototype.getLast = function() {
- return null;
-}
-
-WebFXTree.prototype.getNextSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.getPreviousSibling = function() {
- return null;
-}
-
-WebFXTree.prototype.keydown = function(key) {
- if (key == 39) { this.expand(); return false; }
- if (key == 37) { this.collapse(); return false; }
- if ((key == 40) && (this.open)) { this.childNodes[0].select(); return false; }
- return true;
-}
-
-WebFXTree.prototype.toString = function() {
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += "<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + this.text + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i, this.childNodes.length);
- }
- str += "</div>";
- this.rendered = true;
- return str;
-};
-
-/*
- * WebFXTreeItem class
- */
-
-function WebFXTreeItem(sText, sAction, eParent, sIcon, sOpenIcon) {
- this.base = WebFXTreeAbstractNode;
- this.base(sText, sAction);
- /* Defaults to close */
- this.open = (webFXTreeHandler.cookies.getCookie(this.id.substr(18,this.id.length - 18)) == '1')?true:false;
- if (eParent) { eParent.add(this); }
- if (sIcon) { this.icon = sIcon; }
- if (sOpenIcon) { this.openIcon = sOpenIcon; }
-}
-
-WebFXTreeItem.prototype = new WebFXTreeAbstractNode;
-
-WebFXTreeItem.prototype.remove = function() {
- var parentNode = this.parentNode;
- var prevSibling = this.getPreviousSibling(true);
- var nextSibling = this.getNextSibling(true);
- var folder = this.parentNode.folder;
- var last = ((nextSibling) && (nextSibling.parentNode) && (nextSibling.parentNode.id == parentNode.id))?false:true;
- this.getPreviousSibling().focus();
- this._remove();
- if (parentNode.childNodes.length == 0) {
- parentNode.folder = false;
- parentNode.open = false;
- }
- if (last) {
- if (parentNode.id == prevSibling.id) {
- document.getElementById(parentNode.id + '-icon').src = webFXTreeConfig.fileIcon;
- }
- else { }
- }
- if ((!prevSibling.parentNode) || (prevSibling.parentNode != parentNode)) {
- parentNode.indent(null, true, last, this._level);
- }
- if (document.getElementById(prevSibling.id + '-plus')) {
- if (nextSibling) {
- if ((parentNode == prevSibling) && (parentNode.getNextSibling)) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.tIcon; }
- else if (nextSibling.parentNode != prevSibling) { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
- else { document.getElementById(prevSibling.id + '-plus').src = webFXTreeConfig.lIcon; }
- }
-}
-
-WebFXTreeItem.prototype._remove = function() {
- for (var i = this.childNodes.length - 1; i >= 0; i--) {
- this.childNodes[i]._remove();
- }
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this.id == this.parentNode.childNodes[i].id) {
- for (var j = i; j < this.parentNode.childNodes.length; j++) {
- this.parentNode.childNodes[i] = this.parentNode.childNodes[i+1]
- }
- this.parentNode.childNodes.length = this.parentNode.childNodes.length - 1;
- if (i + 1 == this.parentNode.childNodes.length) { this.parentNode._last = true; }
- }
- }
- webFXTreeHandler.all[this.id] = null;
- if (document.getElementById(this.id)) {
- document.getElementById(this.id).innerHTML = "";
- document.getElementById(this.id).removeNode();
- }
-}
-
-WebFXTreeItem.prototype.expand = function() {
- this.doExpand();
- document.getElementById(this.id + '-plus').src = this.minusIcon;
-}
-
-WebFXTreeItem.prototype.collapse = function() {
- this.focus();
- this.doCollapse();
- document.getElementById(this.id + '-plus').src = this.plusIcon;
-}
-
-WebFXTreeItem.prototype.getFirst = function() {
- return this.childNodes[0];
-}
-
-WebFXTreeItem.prototype.getLast = function() {
- if (this.childNodes[this.childNodes.length - 1].open) { return this.childNodes[this.childNodes.length - 1].getLast(); }
- else { return this.childNodes[this.childNodes.length - 1]; }
-}
-
-WebFXTreeItem.prototype.getNextSibling = function() {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (++i == this.parentNode.childNodes.length) { return this.parentNode.getNextSibling(); }
- else { return this.parentNode.childNodes[i]; }
-}
-
-WebFXTreeItem.prototype.getPreviousSibling = function(b) {
- for (var i = 0; i < this.parentNode.childNodes.length; i++) {
- if (this == this.parentNode.childNodes[i]) { break; }
- }
- if (i == 0) { return this.parentNode; }
- else {
- if ((this.parentNode.childNodes[--i].open) || (b && this.parentNode.childNodes[i].folder)) { return this.parentNode.childNodes[i].getLast(); }
- else { return this.parentNode.childNodes[i]; }
-} }
-
-WebFXTreeItem.prototype.keydown = function(key) {
- if ((key == 39) && (this.folder)) {
- if (!this.open) { this.expand(); return false; }
- else { this.getFirst().select(); return false; }
- }
- else if (key == 37) {
- if (this.open) { this.collapse(); return false; }
- else { this.parentNode.select(); return false; }
- }
- else if (key == 40) {
- if (this.open) { this.getFirst().select(); return false; }
- else {
- var sib = this.getNextSibling();
- if (sib) { sib.select(); return false; }
- } }
- else if (key == 38) { this.getPreviousSibling().select(); return false; }
- return true;
-}
-
-WebFXTreeItem.prototype.toString = function (nItem, nItemCount) {
- var foo = this.parentNode;
- var indent = '';
- if (nItem + 1 == nItemCount) { this.parentNode._last = true; }
- var i = 0;
- while (foo.parentNode) {
- foo = foo.parentNode;
- indent = "<img id=\"" + this.id + "-indent-" + i + "\" src=\"" + ((foo._last)?webFXTreeConfig.blankIcon:webFXTreeConfig.iIcon) + "\">" + indent;
- i++;
- }
- this._level = i;
- if (this.childNodes.length) { this.folder = 1; }
- else { this.open = false; }
- if ((this.folder) || (webFXTreeHandler.behavior != 'classic')) {
- if (!this.icon) { this.icon = webFXTreeConfig.folderIcon; }
- if (!this.openIcon) { this.openIcon = webFXTreeConfig.openFolderIcon; }
- }
- else if (!this.icon) { this.icon = webFXTreeConfig.fileIcon; }
- var label = this.text;
- label = label.replace('<', '<');
- label = label.replace('>', '>');
- var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this)\">";
- str += indent;
- str += "<img id=\"" + this.id + "-plus\" src=\"" + ((this.folder)?((this.open)?((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon):((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon)):((this.parentNode._last)?webFXTreeConfig.lIcon:webFXTreeConfig.tIcon)) + "\" onclick=\"webFXTreeHandler.toggle(this);\">"
- str += "<img id=\"" + this.id + "-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\"><a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" target=\"" + this.targetWindow + "\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\">" + label + "</a></div>";
- str += "<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
- for (var i = 0; i < this.childNodes.length; i++) {
- str += this.childNodes[i].toString(i,this.childNodes.length);
- }
- str += "</div>";
- this.plusIcon = ((this.parentNode._last)?webFXTreeConfig.lPlusIcon:webFXTreeConfig.tPlusIcon);
- this.minusIcon = ((this.parentNode._last)?webFXTreeConfig.lMinusIcon:webFXTreeConfig.tMinusIcon);
- return str;
-} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tab.webfx.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tab.webfx.css
deleted file mode 100755
index 6552ea01..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tab.webfx.css
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-
-bright: rgb(234,242,255);
-normal: rgb(120,172,255);
-dark: rgb(0,66,174);
-
-*/
-
-
-
-
-.dynamic-tab-pane-control.tab-pane {
- position: relative;
- width: 100%;
-}
-
-.dynamic-tab-pane-control .tab-row .tab {
- font-family: Verdana, Helvetica, Arial;
- font-size: 12px;
- cursor: Default;
- display: inline;
- margin: 1px -5px 1px 5px;
- float: left;
- padding: 3px 6px 3px 6px;
- background: rgb(234,242,255);
- border: 1px solid;
- border-color: rgb(120,172,255);
- border-left: 0;
- border-bottom: 0;
- border-top: 0;
-
- cursor: hand;
- cursor: pointer;
-
- z-index: 1;
- position: relative;
- top: 0;
-}
-
-.dynamic-tab-pane-control .tab-row .tab.selected {
- border: 1px solid rgb(120,172,255);
- border-bottom: 0;
- z-index: 3;
- padding: 2px 6px 5px 6px;
- margin: 1px -6px -2px 0px;
- top: -2px;
- background: white;
-}
-
-.dynamic-tab-pane-control .tab-row .tab a {
- font-family: Verdana, Helvetica, Arial;
- font-size: 13px;
- color: rgb(0,66,174);
- text-decoration: none;
- cursor: hand;
- cursor: pointer;
-}
-
-.dynamic-tab-pane-control .tab-row .hover a {
- color: rgb(0,66,174);
-}
-
-.dynamic-tab-pane-control .tab-row .tab.selected a {
- font-weight: bold;
-}
-
-.dynamic-tab-pane-control .tab-page {
- clear: both;
- border: 1px solid rgb(120,172,255);
- background: White;
- z-index: 2;
- position: relative;
- top: -2px;
- color: Black;
- font-family: Verdana, Helvetica, Arial;
- font-size: 13px;
- padding: 10px;
-}
-
-.dynamic-tab-pane-control .tab-row {
- z-index: 1;
- white-space: nowrap;
- background: rgb(234,242,255);
- height: 1.85em;
- width: 100%;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tabpane.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tabpane.js
deleted file mode 100755
index f1418bee..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/tabpane.js
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Tab Pane
- *
- * This script was created by Erik Arvidsson (erik(at)eae.net)
- * for WebFX (http://webfx.eae.net)
- * Copyright 2002
- *
- * For usage see license at http://webfx.eae.net/license.html
- *
- * Version: 1.0
- * Created: 2002-01-?? First working version
- * Updated: 2002-02-17 Cleaned up for 1.0 public version
- *
- * Dependencies: *.css - a css file to define the layout
- *
- */
-
-
-// This function is used to define if the browser supports the needed
-// features
-function hasSupport() {
-
- if (typeof hasSupport.support != "undefined")
- return hasSupport.support;
-
- var ie55 = /msie 5\.[56789]/i.test( navigator.userAgent );
-
- hasSupport.support = ( typeof document.implementation != "undefined" &&
- document.implementation.hasFeature( "html", "1.0" ) || ie55 )
-
- // IE55 has a serious DOM1 bug... Patch it!
- if ( ie55 ) {
- document._getElementsByTagName = document.getElementsByTagName;
- document.getElementsByTagName = function ( sTagName ) {
- if ( sTagName == "*" )
- return document.all;
- else
- return document._getElementsByTagName( sTagName );
- };
- }
-
- return hasSupport.support;
-}
-
-///////////////////////////////////////////////////////////////////////////////////
-// The constructor for tab panes
-//
-// el : HTMLElement The html element used to represent the tab pane
-// bUseCookie : Boolean Optional. Default is true. Used to determine whether to us
-// persistance using cookies or not
-//
-function WebFXTabPane( el, bUseCookie ) {
- if ( !hasSupport() || el == null ) return;
-
- this.element = el;
- this.element.tabPane = this;
- this.pages = [];
- this.selectedIndex = null;
- this.useCookie = bUseCookie != null ? bUseCookie : false;
-
- // add class name tag to class name
- this.element.className = this.classNameTag + " " + this.element.className;
-
- // add tab row
- this.tabRow = document.createElement( "div" );
- this.tabRow.className = "tab-row";
- el.insertBefore( this.tabRow, el.firstChild );
-
- var tabIndex = 0;
- if ( this.useCookie ) {
- tabIndex = Number( WebFXTabPane.getCookie( "webfxtab_" + this.element.id ) );
- if ( isNaN( tabIndex ) )
- tabIndex = 0;
- }
-
- this.selectedIndex = tabIndex;
-
- // loop through child nodes and add them
- var cs = el.childNodes;
- var n;
- for (var i = 0; i < cs.length; i++) {
- if (cs[i].nodeType == 1 && cs[i].className == "tab-page") {
- this.addTabPage( cs[i] );
- }
- }
-}
-
-WebFXTabPane.prototype = {
-
- classNameTag: "dynamic-tab-pane-control",
-
- setSelectedIndex: function ( n ) {
- if (this.selectedIndex != n) {
- if (this.selectedIndex != null && this.pages[ this.selectedIndex ] != null )
- this.pages[ this.selectedIndex ].hide();
- this.selectedIndex = n;
- this.pages[ this.selectedIndex ].show();
-
- if ( this.useCookie )
- WebFXTabPane.setCookie( "webfxtab_" + this.element.id, n ); // session cookie
- }
- },
-
- getSelectedIndex: function () {
- return this.selectedIndex;
- },
-
- addTabPage: function ( oElement ) {
- if ( !hasSupport() ) return;
-
- if ( oElement.tabPage == this ) // already added
- return oElement.tabPage;
-
- var n = this.pages.length;
- var tp = this.pages[n] = new WebFXTabPage( oElement, this, n );
- tp.tabPane = this;
-
- // move the tab out of the box
- this.tabRow.appendChild( tp.tab );
-
- if ( n == this.selectedIndex )
- tp.show();
- else
- tp.hide();
-
- return tp;
- }
-};
-
-// Cookie handling
-WebFXTabPane.setCookie = function ( sName, sValue, nDays ) {
- var expires = "";
- if ( nDays ) {
- var d = new Date();
- d.setTime( d.getTime() + nDays * 24 * 60 * 60 * 1000 );
- expires = "; expires=" + d.toGMTString();
- }
-
- document.cookie = sName + "=" + sValue + expires + "; path=/";
-};
-
-WebFXTabPane.getCookie = function (sName) {
- var re = new RegExp( "(\;|^)[^;]*(" + sName + ")\=([^;]*)(;|$)" );
- var res = re.exec( document.cookie );
- return res != null ? res[3] : null;
-};
-
-WebFXTabPane.removeCookie = function ( name ) {
- setCookie( name, "", -1 );
-};
-
-
-
-
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////////
-// The constructor for tab pages. This one should not be used.
-// Use WebFXTabPage.addTabPage instead
-//
-// el : HTMLElement The html element used to represent the tab pane
-// tabPane : WebFXTabPane The parent tab pane
-// nindex : Number The index of the page in the parent pane page array
-//
-function WebFXTabPage( el, tabPane, nIndex ) {
- if ( !hasSupport() || el == null ) return;
-
- this.element = el;
- this.element.tabPage = this;
- this.index = nIndex;
-
- var cs = el.childNodes;
- for (var i = 0; i < cs.length; i++) {
- if (cs[i].nodeType == 1 && cs[i].className == "tab") {
- this.tab = cs[i];
- break;
- }
- }
-
- // insert a tag around content to support keyboard navigation
- var a = document.createElement( "A" );
- a.href = "javascript:void 0;";
- while ( this.tab.hasChildNodes() )
- a.appendChild( this.tab.firstChild );
- this.tab.appendChild( a );
-
-
- anchor = '';
- if ( document.URL.indexOf( '#' ) != -1 ) {
- anchor = document.URL.substr( document.URL.indexOf( '#' ) + 1);
- }
- j = 0;
- if ( anchor.length > 0 ) {
- finalList = new Array();
- listOfAnchors = el.getElementsByTagName('A');
- for (i=0; i<listOfAnchors.length; i++) {
- if (listOfAnchors[i].name.length) {
- finalList[j++] = listOfAnchors[i].name;
- }
- }
- for(i=0; i<finalList.length; i++) {
- if ( anchor == finalList[i] ) {
- if (tabPane.selectedIndex != nIndex) tabPane.pages[ tabPane.selectedIndex ].hide();
- tabPane.selectedIndex = nIndex ;
- }
- }
- }
-
- // hook up events, using DOM0
- var oThis = this;
- this.tab.onclick = function () { oThis.select(); };
- this.tab.onmouseover = function () { WebFXTabPage.tabOver( oThis ); };
- this.tab.onmouseout = function () { WebFXTabPage.tabOut( oThis ); };
-}
-
-WebFXTabPage.prototype = {
- show: function () {
- var el = this.tab;
- var s = el.className + " selected";
- s = s.replace(/ +/g, " ");
- el.className = s;
-
- this.element.style.display = "block";
- },
-
- hide: function () {
- var el = this.tab;
- var s = el.className;
- s = s.replace(/ selected/g, "");
- el.className = s;
-
- this.element.style.display = "none";
- },
-
- select: function () {
- this.tabPane.setSelectedIndex( this.index );
- }
-};
-
-WebFXTabPage.tabOver = function ( tabpage ) {
- var el = tabpage.tab;
- var s = el.className + " hover";
- s = s.replace(/ +/g, " ");
- el.className = s;
-};
-
-WebFXTabPage.tabOut = function ( tabpage ) {
- var el = tabpage.tab;
- var s = el.className;
- s = s.replace(/ hover/g, "");
- el.className = s;
-};
-
-
-// This function initializes all uninitialized tab panes and tab pages
-function setupAllTabs() {
- if ( !hasSupport() ) return;
-
- var all = document.getElementsByTagName( "*" );
- var l = all.length;
- var tabPaneRe = /tab\-pane/;
- var tabPageRe = /tab\-page/;
- var cn, el;
- var parentTabPane;
-
- for ( var i = 0; i < l; i++ ) {
- el = all[i]
- cn = el.className;
-
- // no className
- if ( cn == "" ) continue;
-
- // uninitiated tab pane
- if ( tabPaneRe.test( cn ) && !el.tabPane )
- new WebFXTabPane( el );
-
- // unitiated tab page wit a valid tab pane parent
- else if ( tabPageRe.test( cn ) && !el.tabPage &&
- tabPaneRe.test( el.parentNode.className ) ) {
- el.parentNode.tabPane.addTabPage( el );
- }
- }
-}
-
-
-// initialization hook up
-
-// DOM2
-if ( typeof window.addEventListener != "undefined" )
- window.addEventListener( "load", setupAllTabs, false );
-
-// IE
-else if ( typeof window.attachEvent != "undefined" )
- window.attachEvent( "onload", setupAllTabs );
-
-else {
- if ( window.onload != null ) {
- var oldOnload = window.onload;
- window.onload = function ( e ) {
- oldOnload( e );
- setupAllTabs();
- };
- }
- else
- window.onload = setupAllTabs;
-} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/ua.js b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/ua.js
deleted file mode 100755
index c06fa313..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/lib/ua.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-ua.js revision 0.200 2001-12-03
-
-Contributor(s): Bob Clary, Netscape Communications, Copyright 2001
-
-Netscape grants you a royalty free license to use, modify and
-distribute this software provided that this copyright notice
-appears on all copies. This software is provided "AS IS,"
-without a warranty of any kind.
-*/
-
-function xbDetectBrowser()
-{
- var oldOnError = window.onerror;
- var element = null;
-
- window.onerror = null;
-
- // work around bug in xpcdom Mozilla 0.9.1
- window.saveNavigator = window.navigator;
-
- navigator.OS = '';
- navigator.version = parseFloat(navigator.appVersion);
- navigator.org = '';
- navigator.family = '';
-
- var platform;
- if (typeof(window.navigator.platform) != 'undefined')
- {
- platform = window.navigator.platform.toLowerCase();
- if (platform.indexOf('win') != -1)
- navigator.OS = 'win';
- else if (platform.indexOf('mac') != -1)
- navigator.OS = 'mac';
- else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
- navigator.OS = 'nix';
- }
-
- var i = 0;
- var ua = window.navigator.userAgent.toLowerCase();
- if (ua.indexOf('opera') != -1)
- {
- i = ua.indexOf('opera');
- navigator.family = 'opera';
- navigator.org = 'opera';
- navigator.version = parseFloat('0' + ua.substr(i+6), 10);
- }
- else if ((i = ua.indexOf('msie')) != -1)
- {
- navigator.org = 'microsoft';
- navigator.version = parseFloat('0' + ua.substr(i+5), 10);
-
- if (navigator.version < 4)
- navigator.family = 'ie3';
- else
- navigator.family = 'ie4'
- }
- else if (ua.indexOf('gecko') != -1)
- {
- navigator.family = 'gecko';
- var rvStart = navigator.userAgent.indexOf('rv:') + 3;
- var rvEnd = navigator.userAgent.indexOf(')', rvStart);
- var rv = navigator.userAgent.substring(rvStart, rvEnd);
- var decIndex = rv.indexOf('.');
- if (decIndex != -1)
- {
- rv = rv.replace(/\./g, '')
- rv = rv.substring(0, decIndex-1) + '.' + rv.substr(decIndex)
- }
- navigator.version = parseFloat(rv);
-
- if (ua.indexOf('netscape') != -1)
- navigator.org = 'netscape';
- else if (ua.indexOf('compuserve') != -1)
- navigator.org = 'compuserve';
- else
- navigator.org = 'mozilla';
- }
- else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
- {
- var is_major = parseFloat(navigator.appVersion);
-
- if (is_major < 4)
- navigator.version = is_major;
- else
- {
- i = ua.lastIndexOf('/')
- navigator.version = parseFloat('0' + ua.substr(i+1), 10);
- }
- navigator.org = 'netscape';
- navigator.family = 'nn' + parseInt(navigator.appVersion);
- }
- else if ((i = ua.indexOf('aol')) != -1 )
- {
- // aol
- navigator.family = 'aol';
- navigator.org = 'aol';
- navigator.version = parseFloat('0' + ua.substr(i+4), 10);
- }
- else if ((i = ua.indexOf('hotjava')) != -1 )
- {
- // hotjava
- navigator.family = 'hotjava';
- navigator.org = 'sun';
- navigator.version = parseFloat(navigator.appVersion);
- }
-
- window.onerror = oldOnError;
-}
-
-xbDetectBrowser();
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/stylesheet.css
deleted file mode 100755
index 7b1662d2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/media/stylesheet.css
+++ /dev/null
@@ -1,230 +0,0 @@
-
-body { background: #FFFFFF; }
-body, table {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- text-align: left;
- font-size: 11px;
-}
-
-table.none td.btCell { background-color: #fff; vertical-align: top; }
-table.none tr.highlight td.btCell { background-color: #f5f5f5; vertical-align: top; }
-table.none th.btHead { background-color: #e5e5e5; vertical-align: top; }
-table.btHeader, th.btHeader {
- background-color: #014f9d;
- color: #fff;
- text-align: left;
- vertical-align: top;
-}
-table.btHeaderProminent, th.btHeaderProminent {
- background-color: #9d0119;
- color: #fff;
- text-align: left;
- vertical-align: top;
-}
-div.showHideIndent { margin-left: 14px; }
-td.left, th.left, th.syntaxLanguage { vertical-align: top; text-align: left; border-right: 1px solid #ceced8; border-bottom: solid 1px #ceced8; }
-th.noborder { border: none; }
-th.border { border: 1px solid #ceced8; }
-td.border { border-bottom: 1px solid #ceced8; }
-th.syntaxLanguage { font-size: 11px; line-height: 13px; vertical-align: top; }
-.faq, .property { color: #000090; }
-.method { color: #009000; }
-.event { color: #900000; }
-
-table.default th.syntaxLanguage { font-size: 0.7em; vertical-align: baseline; }
-.small { font-size: 85%; line-height: 120%; }
-
-a {
- color: #000090;
-
-}
-
-div.maintutorial {
- border-width: thin;
- border-color: #0066ff;
-}
-
-.source, .src-code {
- border-width: thin;
- border-style: dashed;
- border-color: #8899dd;
- margin: 1em;
- padding: 0.5em;
- font-family: 'Courier New', Courier, monospace; font-weight: normal;
-}
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.var-type {
- font-style : italic;
-}
-
-.var-title {
- margin-left : 20px;
-}
-
-.method-summary {
- margin-left : 20px;
-}
-
-/*------------------------------------------------------------------------------
- Show/Hide blocks
-------------------------------------------------------------------------------*/
-
-.shown { display: inline; }
-.hidden { display: none; }
-img.showHideImg, .showHideControl { cursor: hand; }
-img.showHideImg { margin-right: 3px; }
-
-.showHideActionText
-{
- font-size: 0.7em;
-}
-
-.showHideActionTextContent
-{
- font-weight: bold;
-}
-
-.showHideActionTextContentHover
-{
- text-decoration: underline;
- font-weight: bold;
- background-color: #ceced8;
-}
-ol {
- margin: 0.2em 0em 0.2em 24px;
- padding: 0em;
-}
-ul li {
- margin: 0.2em 0em 0.2em 0em; padding: 0em;
- list-style-position: outside;
- list-style-type: square;
-}
-span.li {
- color: #000000;
-}
-ul {
- color: #014fbe;
- margin: 3px 0em 3px 16px;
-}
-p {
- margin: 6px 0em 6px 0em;
-}
-h1 { margin: 1em 0em 1.2em 0em; font-size: 160%; line-height: 130%;}
-h2 { font-size: 125%; line-height: 120%;}
-h1, h2, h3, h4 {
- padding: 0em;
- margin: 1.5em 0em .25em 0em;
- text-align: left;
- font-weight: normal;
-}
-h3 { margin-top: 0.5em; font-size: 110%; }
-h4 { margin: 0.25em 0em .25em 0em;; font-size: 100%; }
-
-.Headline {
- color: #000000;
- font-family: Verdana,Arial,Helvetica,sans-serif;
- font-size: 9pt;
- font-weight: bold;
- font-style: normal;
-/* margin-left : -1.5em;*/
- text-align : left;
- margin-top : 1.0em;
- margin-bottom : 0.5em;
-}
-
-.HelpContent {
- margin-left : 1.5em;
-}
-
-table.HelpTable {
- border: 0px;
- padding: 0px;
- margin: 0px;
-}
-
-tr.HelpTable {
-}
-
-th.HelpTable {
- border: 1px dotted;
- background-color: #F0F0F0;
- margin: 1px;
- padding: 5px;
-}
-
-td.HelpTable {
- border: 1px dotted;
- background-color: #F9F9F9;
- margin: 1px;
- padding: 5px;
-}
-
-pre.depreciated {
- font-family: Verdana,Arial,Helvetica,sans-serif;
- font-size: 9pt;
- border: 1px dotted #909090;
- background-color: #F0F0F0;
- margin-left: 10px;
- margin-right: 10px;
- margin-top: 10px;
- margin-bottom: 10px;
- padding: 5px;
-}
-
-/*------------------------------------------------------------------------------
- webfx-tree
-------------------------------------------------------------------------------*/
-.webfx-tree-container {
- margin: 0px;
- padding: 0px;
- font: icon;
- white-space: nowrap;
-}
-
-.webfx-tree-item {
- padding: 0px;
- margin: 0px;
- font: icon;
- color: black;
- white-space: nowrap;
-}
-
-.webfx-tree-item a, .webfx-tree-item a:active, .webfx-tree-item a:hover {
- margin-left: 3px;
- padding: 1px 2px 1px 2px;
-}
-
-.webfx-tree-item a {
- color: black;
- text-decoration: none;
-}
-
-.webfx-tree-item a:hover {
- color: blue;
- text-decoration: underline;
-}
-
-.webfx-tree-item a:active {
- background: highlight;
- color: highlighttext;
- text-decoration: none;
-}
-
-.webfx-tree-item img {
- vertical-align: middle;
- border: 0px;
-}
-
-.webfx-tree-icon {
- width: 16px;
- height: 16px;
-}
-
-
-.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/frames/templates/phpedit/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/method.tpl
deleted file mode 100755
index 4c96f2f2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/method.tpl
+++ /dev/null
@@ -1,126 +0,0 @@
-<h2 class="tab">Method Detail</h2>
-<!-- ============ METHOD DETAIL =========== -->
-<strong>Summary:</strong><br />
-<div class="method-summary">
-{section name=methods loop=$methods}
-{if $methods[methods].static}
- <div class="method-definition">
- static {if $methods[methods].function_return}
- <span class="method-result">{$methods[methods].function_return}</span>
- {/if}
- <a href="#{$methods[methods].method_dest}" 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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
- <div class="method-definition">
- {if $methods[methods].function_return}
- <span class="method-result">{$methods[methods].function_return}</span>
- {/if}
- <a href="#{$methods[methods].method_dest}" 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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
-{/if}
-{/section}
-</div>
-<hr />
-<A NAME='method_detail'></A>
-
-
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<a name="{$methods[methods].method_dest}" id="{$methods[methods].method_dest}"><!-- --></a>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'"><h4>
-<img src="{$subdir}media/images/PublicMethod.gif" border="0" /> <strong class="method">Static Method {$methods[methods].function_name}</strong> (line <span class="linenumber">{if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}</span>)
- </h4>
-<h4><i>{$methods[methods].function_return}</i> <strong>{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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if})</strong></h4>
-{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}
-
-{if $methods[methods].method_overrides}
-<p><strong>Overrides :</strong> {$methods[methods].method_overrides.link} {$methods[methods].method_overrides.sdesc|default:"parent method not documented"}</p>
-{/if}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/if}
-{include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=true}
-</div>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<a name="{$methods[methods].method_dest}" id="{$methods[methods].method_dest}"><!-- --></a>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'"><h4>
-<img src="{$subdir}media/images/{if $methods[methods].ifunction_call.constructor}Constructor{elseif $methods[methods].ifunction_call.destructor}Destructor{else}PublicMethod{/if}.gif" border="0" /> <strong class="method">{if $methods[methods].ifunction_call.constructor}Constructor {elseif $methods[methods].ifunction_call.destructor}Destructor {else}Method {/if}{$methods[methods].function_name}</strong> (line <span class="linenumber">{if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}</span>)
- </h4>
-<h4><i>{$methods[methods].function_return}</i> <strong>{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].hasdefault}[{/if}{$methods[methods].ifunction_call.params[params].type}
-{$methods[methods].ifunction_call.params[params].name}{if $methods[methods].ifunction_call.params[params].hasdefault} = {$methods[methods].ifunction_call.params[params].default}]{/if}
-{/section}
-{/if})</strong></h4>
-{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}
-
-{if $methods[methods].method_overrides}
-<p><strong>Overrides :</strong> {$methods[methods].method_overrides.link} {$methods[methods].method_overrides.sdesc|default:"parent method not documented"}</p>
-{/if}
- {if $methods[methods].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/if}
-{include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=true}
-</div>
-{/if}
-{/section}
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "tabPage2" ) );</script>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/page.tpl
deleted file mode 100755
index 5a9da0e4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/page.tpl
+++ /dev/null
@@ -1,53 +0,0 @@
-{include file="header.tpl" top3=true}
-<h2>File: {$source_location}</h2>
-<div class="tab-pane" id="tabPane1">
-<script type="text/javascript">
-tp1 = new WebFXTabPane( document.getElementById( "tabPane1" ) );
-</script>
-
-<div class="tab-page" id="Description">
-<h2 class="tab">Description</h2>
-{if $tutorial}
-<div class="maintutorial">Main Tutorial: {$tutorial}</div>
-{/if}
-{include file="docblock.tpl" desc=$desc sdesc=$sdesc tags=$tags}
-<!-- =========== Used Classes =========== -->
-<A NAME='classes_summary'><!-- --></A>
-<h3>Classes defined in this file</h3>
-
-<TABLE CELLPADDING='3' CELLSPACING='0' WIDTH='100%' CLASS="border">
- <THEAD>
- <TR><TD STYLE="width:20%"><h4>CLASS NAME</h4></TD><TD STYLE="width: 80%"><h4>DESCRIPTION</h4></TD></TR>
- </THEAD>
- <TBODY>
- {section name=classes loop=$classes}
- <TR BGCOLOR='white' CLASS='TableRowColor'>
- <TD>{$classes[classes].link}</TD>
- <TD>{$classes[classes].sdesc}</TD>
- </TR>
- {/section}
- </TBODY>
-</TABLE>
-</div>
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "Description" ) );</script>
-<div class="tab-page" id="tabPage1">
-{include file="include.tpl"}
-</div>
-<div class="tab-page" id="tabPage2">
-{include file="global.tpl"}
-</div>
-<div class="tab-page" id="tabPage3">
-{include file="define.tpl"}
-</div>
-<div class="tab-page" id="tabPage4">
-{include file="function.tpl"}
-</div>
-</div>
-<script type="text/javascript">
-//<![CDATA[
-
-setupAllTabs();
-
-//]]>
-</script>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/pkgelementindex.tpl
deleted file mode 100755
index c29ea982..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/pkgelementindex.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-{include file="header.tpl"}
-<a name="top"></a>
-<h2>Element Index, Package {$package}</h2>
-{if count($packageindex) > 1}
-<strong>Indexes by package:</strong><br>
-{/if}
-<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>
-<a href="elementindex.html"><strong>Index of all elements</strong></a>
-<br />
-{include file="basicindex.tpl" indexname=elementindex_$package}
-{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/ric.tpl
deleted file mode 100755
index ad792475..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/ric.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{include file="header.tpl"}
-<div align="center"><h1>{$name}</h1></div>
-<pre>
-{$contents|htmlentities}
-</pre>
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/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/phpedit/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/top_frame.tpl
deleted file mode 100755
index 806283f4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/top_frame.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-{include file="header.tpl" top1=true}
-{if count($ric) >= 1}
-<ul>
-{section name=ric loop=$ric}
- <li><a href="{$ric[ric].file}" target="right">{$ric[ric].name}</a></li>
-{/section}
-</ul>
-{/if}
-<h1>Packages</h1>
-<ul>
-{section name=p loop=$packages}
- <li><a class="package" href='{$packages[p].link}' target='left_bottom'>{$packages[p].title}</a></li>
-{/section}
-</ul>
-</body>
-</html> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial.tpl
deleted file mode 100755
index a943522c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/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/frames/templates/phpedit/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial_toc.tpl
deleted file mode 100755
index 3d22d403..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/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/frames/templates/phpedit/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial_tree.tpl
deleted file mode 100755
index 23459a96..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/tutorial_tree.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
- var {$name}tree = new WebFXTree{if $subtree}Item{/if}('{$main.title|strip_tags}','{$main.link}');
-{if !$subtree} {$name}tree.setBehavior('classic');
-{/if} {$name}tree.openIcon = 'media/images/msgInformation.gif';
- {$name}tree.icon = 'media/images/{if $subtree}msgInformation.gif{else}FolderClosed.gif{/if}';
-{if $kids}
-{$kids}
-
-{/if}{if $subtree} {$parent}tree.add({$name}tree);
-{else}
- document.write({$name}tree);
-{/if}
-
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/var.tpl
deleted file mode 100755
index 7b293351..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phpedit/templates/var.tpl
+++ /dev/null
@@ -1,49 +0,0 @@
-
-<h2 class="tab">Class Variables</h2>
-<!-- ============ VARIABLE DETAIL =========== -->
-<strong>Summary:</strong><br />
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<div class="var-title">
- static <span class="var-type">{$vars[vars].var_type}</span>
- <a href="#{$vars[vars].var_dest}" title="details" class="property"><strong>{$vars[vars].var_name}</strong></a>
-</div>
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<div class="var-title">
- <span class="var-type">{$vars[vars].var_type}</span>
- <a href="#{$vars[vars].var_dest}" title="details" class="property"><strong>{$vars[vars].var_name}</strong></a>
-</div>
-{/if}
-{/section}
-<hr />
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<a name="{$vars[vars].var_dest}" id="{$vars[vars].var_dest}"><!-- --></A>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'">
-<h4>
-<img src="{$subdir}media/images/PublicProperty.gif" border="0" /> <strong class="property">static {$vars[vars].var_name}{if $vars[vars].var_default} = {$vars[vars].var_default|replace:"\n":"<br />"}{/if}</strong> (line <span class="linenumber">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>)
- </h4>
-<h4>Data type : {$vars[vars].var_type}</h4>
-{if $vars[vars].var_overrides}<p><strong>Overrides:</strong> {$vars[vars].var_overrides}<br></p>{/if}
-{include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}
-</div>
-{/if}
-{/section}
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<a name="{$vars[vars].var_dest}" id="{$vars[vars].var_dest}"><!-- --></A>
-<div style="background='{cycle values="#ffffff,#eeeeee"}'">
-<h4>
-<img src="{$subdir}media/images/PublicProperty.gif" border="0" /> <strong class="property">{$vars[vars].var_name}{if $vars[vars].var_default} = {$vars[vars].var_default|replace:"\n":"<br />"}{/if}</strong> (line <span class="linenumber">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>)
- </h4>
-<h4>Data type : {$vars[vars].var_type}</h4>
-{if $vars[vars].var_overrides}<p><strong>Overrides:</strong> {$vars[vars].var_overrides}<br></p>{/if}
-{include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}
-</div>
-{/if}
-{/section}
-<script type="text/javascript">tp1.addTabPage( document.getElementById( "tabPage1" ) );</script>
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/options.ini
deleted file mode 100755
index 084809be..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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 =
-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 = <div class="src-code">
-/example = </div>
-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 = <div class="src-code">
-/programlisting = </div>
-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/phphtmllib/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/basicindex.tpl
deleted file mode 100755
index 951ee264..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/blank.tpl
deleted file mode 100755
index 6a05f27e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/class.tpl
deleted file mode 100755
index 9ab7c455..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/class.tpl
+++ /dev/null
@@ -1,429 +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}
- {if $vars[vars].static}
- <div class="var-title">
- static <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>
- {/if}
- {/section}
- {section name=vars loop=$vars}
- {if !$vars[vars].static}
- <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>
- {/if}
- {/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}
- {if $methods[methods].static}
- <div class="method-definition">
- static {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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/section}
- {section name=methods loop=$methods}
- {if !$methods[methods].static}
- <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].hasdefault}[{/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].hasdefault} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
- {else}
- ()
- {/if}
- </div>
- {/if}
- {/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/phphtmllib/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/classtrees.tpl
deleted file mode 100755
index 952e6d50..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/classtrees.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-{include file="header.tpl" top1=true}
-
-<!-- Start of Class Data -->
-<H2>
- {$smarty.capture.title}
-</H2>
-{if $interfaces}
-{section name=classtrees loop=$interfaces}
-<h2>Root interface {$interfaces[classtrees].class}</h2>
-{$interfaces[classtrees].class_tree}
-{/section}
-{/if}
-{if $classtrees}
-{section name=classtrees loop=$classtrees}
-<h2>Root class {$classtrees[classtrees].class}</h2>
-{$classtrees[classtrees].class_tree}
-{/section}
-{/if}
-{include file="footer.tpl"} \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/const.tpl
deleted file mode 100644
index c26ff92d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/define.tpl
deleted file mode 100755
index 0da5d864..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/docblock.tpl
deleted file mode 100755
index 783d5271..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/elementindex.tpl
deleted file mode 100755
index d5964f99..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/errors.tpl
deleted file mode 100755
index 0f526584..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/examplesource.tpl
deleted file mode 100755
index 8abf74ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/filesource.tpl
deleted file mode 100755
index 239f7b41..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/footer.tpl
deleted file mode 100755
index 8d0f79db..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/function.tpl
deleted file mode 100755
index b6880059..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/global.tpl
deleted file mode 100755
index eab7e0b0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/header.tpl
deleted file mode 100755
index c22ba37d..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/include.tpl
deleted file mode 100755
index c2419e5f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/index.tpl
deleted file mode 100755
index 7cd61094..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/left_frame.tpl
deleted file mode 100755
index 0a06fba6..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/left_frame.tpl
+++ /dev/null
@@ -1,159 +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].hasinterfaces}
- <dt class="folder-title">Interfaces</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_interface}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/section}
- {/if}
- {if $info[p].hasclasses}
- <dt class="folder-title">Classes</dt>
- {section name=class loop=$info[p].classes}
- {if $info[p].classes[class].is_class}
- <dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
- {/if}
- {/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/phphtmllib/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/media/banner.css
deleted file mode 100755
index ba1a7ba5..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/media/banner.css
+++ /dev/null
@@ -1,32 +0,0 @@
-body
-{
- background-color: #DDDDDD;
- margin: 0px;
- padding: 0px;
-}
-
-/* Banner (top bar) classes */
-
-.banner { }
-
-.banner-menu
-{
- clear: both;
- padding: .5em;
- border-top: 2px solid #999999;
-}
-
-.banner-title
-{
- text-align: right;
- font-size: 20pt;
- font-weight: bold;
- margin: .2em;
-}
-
-.package-selector
-{
- background-color: #CCCCCC;
- border: 1px solid black;
- color: blue;
-}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/media/stylesheet.css
deleted file mode 100755
index 051586b3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/media/stylesheet.css
+++ /dev/null
@@ -1,142 +0,0 @@
-a { color: #0000FF; text-decoration: none; }
-a:hover { color: #FF0000; text-decoration: underline; }
-a:active { color: #FF0000; text-decoration: underline; }
-
-body { background-color: #EEEEEE; font-family: Verdana, Arial, sans-serif }
-body, table { font-size: 10pt }
-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: #DDDDDD }
-.info-box-body { border: 1px solid #999999; padding: .5em; background-color: #F8F8F8; }
-.nav-bar { font-size: 8pt; white-space: nowrap; text-align: right; padding: .2em; margin: 0em 0em 1em 0em; }
-
-.oddrow { background-color: #DDDDDD; border: 1px solid #999999; padding: .5em; margin-bottom: 1em}
-.evenrow { background-color: #DDDDDD; border: 1px solid #999999; 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: 2px solid #999999; background-color: #DDDDDD }
-.nav-button-disabled { color: #999999; }
-.nav-button:active,
-.nav-button:focus,
-.nav-button:hover { background-color: #AAAAAA; outline: 1px solid #666666; 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: #0066BB; 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 { color: red; font-weight: bold }
-.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;
- font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-.src-line { font-family: 'Courier New', Courier, monospace; font-weight: normal; }
-
-.src-comm { color: #666666; }
-.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 { background-color: #DDDDDD; border: 1px solid #999999; padding: .5em; }
-.listing { background-color: #DDDDDD; border: 1px solid #999999; padding: .5em; white-space: nowrap; }
-.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; border-bottom: 1px solid #888888; color: #888888; }
-.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/phphtmllib/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/method.tpl
deleted file mode 100755
index 06d57a12..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/method.tpl
+++ /dev/null
@@ -1,149 +0,0 @@
-<A NAME='method_detail'></A>
-{section name=methods loop=$methods}
-{if $methods[methods].static}
-<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">static {$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">
- static <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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
-{section name=methods loop=$methods}
-{if !$methods[methods].static}
-<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].hasdefault}[{/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].hasdefault} = <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].method_implements}
- <hr class="separator" />
- <div class="notes">Implementation of:</div>
- {section name=imp loop=$methods[methods].method_implements}
- <dl>
- <dt>{$methods[methods].method_implements[imp].link}</dt>
- {if $methods[methods].method_implements[imp].sdesc}
- <dd>{$methods[methods].method_implements[imp].sdesc}</dd>
- {/if}
- </dl>
- {/section}
- {/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>
-{/if}
-{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/page.tpl
deleted file mode 100755
index b5980236..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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 $functions}
- <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/phphtmllib/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/pkgelementindex.tpl
deleted file mode 100755
index dc283ad0..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/ric.tpl
deleted file mode 100755
index eff734c1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/todolist.tpl
deleted file mode 100755
index f929ccdb..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/top_frame.tpl
deleted file mode 100755
index 36d1e5a1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/top_frame.tpl
+++ /dev/null
@@ -1,45 +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">{$package}</div>
- <div class="banner-menu">
- <form>
- <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}
- <span class="field">Packages</span>
- <select class="package-selector" onchange="window.parent.left_bottom.location=this[selectedIndex].value">
- {section name=p loop=$packages}
- <option value="{$packages[p].link}">{$packages[p].title}</option>
- {/section}
- </select>
- {/if}
- </td>
- </tr>
- </table>
- </form>
- </div>
- </div>
- </body>
- </html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial.tpl
deleted file mode 100755
index 3b9109d1..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial_nav.tpl
deleted file mode 100755
index 89952301..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial_toc.tpl
deleted file mode 100755
index 3482249b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial_toc.tpl
+++ /dev/null
@@ -1,40 +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>
- </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/phphtmllib/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/tutorial_tree.tpl
deleted file mode 100755
index 617b5654..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/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/phphtmllib/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/var.tpl
deleted file mode 100755
index fccf6892..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/phphtmllib/templates/var.tpl
+++ /dev/null
@@ -1,92 +0,0 @@
-{section name=vars loop=$vars}
-{if $vars[vars].static}
-<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">
- static <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>
-{/if}
-{/section}
-
-{section name=vars loop=$vars}
-{if !$vars[vars].static}
-<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>
-{/if}
-{/section}
-
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc b/buildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc
deleted file mode 100755
index 867284ad..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/DescHTML.inc
+++ /dev/null
@@ -1,423 +0,0 @@
-<?php
-/**
- * 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%
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2007 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: DescHTML.inc 246329 2007-11-17 03:07:00Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * Used for <<code>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserCode
- */
-class parserCode extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of code tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted code block
- * @uses Converter::ProgramExample()
- * @todo CS cleanup - rename method to convert()
- */
- 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;
- }
-}
-
-/**
- * Used for <<pre>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserPre
- */
-class parserPre extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of code tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::PreserveWhiteSpace()
- * @todo CS cleanup - rename method to convert()
- */
- function Convert(&$c)
- {
- return $c->PreserveWhiteSpace(rtrim(ltrim(parent::Convert($c,
- false, false), "\n\r")));
- }
-}
-
-/**
- * Used for <<b>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserB
- */
-class parserB extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of bold tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::Bolden()
- * @todo CS cleanup - rename method to convert()
- */
- function Convert(&$c)
- {
- return $c->Bolden(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<i>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserI
- */
-class parserI extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of italic tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::Italicize()
- * @todo CS cleanup - rename method to convert()
- */
- function Convert(&$c)
- {
- return $c->Italicize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<var>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserDescVar
- */
-class parserDescVar extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of variable tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::Varize()
- * @todo CS cleanup - rename method to convert()
- */
- function Convert(&$c)
- {
- return $c->Varize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<samp>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserSamp
- */
-class parserSamp extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of sample tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::Sampize()
- * @todo CS cleanup - rename method to convert()
- */
- function Convert(&$c)
- {
- return $c->Sampize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<kbd>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserKbd
- */
-class parserKbd extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of keyboard tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::Kbdize()
- * @todo CS cleanup - rename method to convert()
- */
- function Convert(&$c)
- {
- return $c->Kbdize(parent::Convert($c));
- }
-}
-
-/**
- * Used for <<br>> in a description
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserBr
- */
-class parserBr extends parserStringWithInlineTags
-{
- /**
- * performs the conversion of linebreak tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::Br()
- * @todo CS cleanup - rename method to convert()
- */
- function Convert(&$c)
- {
- return $c->Br($this->getString());
- }
-}
-
-/**
- * Used for lists <<ol>> and <<ul>>
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DescHTML
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename class to ParserList
- */
-class parserList extends parserStringWithInlineTags
-{
- /**
- * @var boolean
- */
- var $numbered;
- /**
- * @var integer
- */
- var $items = 0;
- /**
- * Constructor - create a new list
- *
- * @param integer $numbered a reference number for the new list
- */
- function parserList($numbered)
- {
- $this->numbered = $numbered;
- }
-
- /**
- * add an item to a list
- *
- * @param parserStringWithInlineTags $item the item to add
- *
- * @return void
- */
- function addItem($item)
- {
- $this->value[$this->items++] = $item;
- }
-
- /**
- * add a list
- *
- * @param parserList $list the list to add
- *
- * @return void
- */
- function addList($list)
- {
- $this->value[$this->items++] = $list;
- }
-
- /**
- * performs the conversion of list tags
- *
- * @param Converter &$c the converter object
- *
- * @return string the converted pre block
- * @uses Converter::ListItem() enclose each item of the list
- * @uses Converter::EncloseList() enclose the list
- * @todo CS cleanup - rename method to convert()
- */
- 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/DocBlockTags.inc b/buildscripts/PhpDocumentor/phpDocumentor/DocBlockTags.inc
deleted file mode 100755
index 048c29ce..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/DocBlockTags.inc
+++ /dev/null
@@ -1,1396 +0,0 @@
-<?php
-/**
- * All abstract representations of DocBlock tags are defined
- * by the classes in this file
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: DocBlockTags.inc 287889 2009-08-30 07:27:39Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since separate file since version 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * used to represent standard tags like @access, etc.
- * This class is aware of inline tags, and will automatically handle them
- * using inherited functions
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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 tag value
- * @param boolean $noparse 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;
- }
- }
-
- /**
- * Perform the output conversion on this {@link parserTag}
- * using the {@link Converter output converter} that is passed in
- *
- * @param Converter &$converter the converter object
- *
- * @return string
- * @see Converter
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- function Convert(&$converter)
- {
- if (is_array($this->value)) {
- if (count($this->value) == 1) {
- reset($this->value);
- list(, $val) = each($this->value);
- $a = $val->Convert($converter);
- return $a;
- }
- $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 {
- $a = $this->value->Convert($converter);
- return $a;
- }
- }
-
- /**
- * 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.
- *
- * @return integer (actually, body is empty, so it doesn't return at all)
- * @access private
- * @todo does this need to be implemented? its body is empty
- */
- function _valueParagraphCount()
- {
- }
-
- /**
- * Called by the {@link parserDescParser} when processing a description.
- *
- * @param integer $a not used
- * @param array $desc array of {@link parserStringWithInlineTags}
- * representing paragraphs in the tag description
- *
- * @return void
- * @see parserTag::parserTag()
- * @todo CS cleanup - rename to handleEvent for camelCase rule
- */
- function HandleEvent($a,$desc)
- {
- $this->value = $desc;
- }
-
- /**
- * Returns the text minus any inline tags
- *
- * @return string 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.name.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserNameTag extends parserTag
-{
- /**
- * tag name
- * @var string
- */
- var $keyword = 'name';
-
- /**
- * set up the name tag
- *
- * @param string $name tag name (not used)
- * @param string $value tag value
- */
- function parserNameTag($name, $value)
- {
- $this->value = $value;
- }
-
- /**
- * process this tag through the given output converter
- *
- * @param Converter &$c output converter
- *
- * @return string converted value of the tag
- * @see parserStringWithInlineTags::Convert()
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- function Convert(&$c)
- {
- return $this->value;
- }
-}
-
-/**
- * This class represents the @access tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.access.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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
- *
- * @param parserStringWithInlineTags $value the tag value
- *
- * @see $isvalid
- */
- 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;
- }
- }
-
- /**
- * process this tag through the given output converter
- *
- * @param Converter &$converter the output converter
- *
- * @return string converted value of the tag
- * @see parserStringWithInlineTags::Convert()
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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 the "@return" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.return.pkg
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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;
-
- /**
- * set up the tag
- *
- * @param string $returnType returned datatype
- * @param parserStringWithInlineTags $value tag value
- */
- function parserReturnTag($returnType, $value)
- {
- $this->returnType = $returnType;
- parent::parserTag('return', $value);
- }
-
- /**
- * process this tag through the given output converter
- * (sets up the $converted_returnType)
- *
- * @param Converter &$converter the output converter
- *
- * @return string converted value of the tag
- * @see parserStringWithInlineTags::Convert(), $converted_returnType
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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 the "@property" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.property.pkg
- * @since 1.4.0a1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserPropertyTag extends parserReturnTag
-{
- /**
- * always 'property'
- * @var string
- */
- var $keyword = 'property';
- /**
- * the type a property has
- * @var string
- */
- var $returnType = 'mixed';
-
- /**
- * set up the property tag
- *
- * @param string $returnType the tag value's datatype
- * @param parserStringWithInlineTags $value the tag value
- */
- function parserPropertyTag($returnType, $value)
- {
- $this->returnType = $returnType;
- parent::parserTag($this->keyword, $value);
- }
-}
-
-/**
- * represents the "@property-read" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.property.pkg
- * @since 1.4.0a1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserPropertyReadTag extends parserPropertyTag
-{
- /**
- * always 'property-read'
- * @var string
- */
- var $keyword = 'property-read';
-}
-
-/**
- * represents the "@property-write" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.property.pkg
- * @since 1.4.0a1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserPropertyWriteTag extends parserPropertyTag
-{
- /**
- * always 'property-write'
- * @var string
- */
- var $keyword = 'property-write';
-}
-
-/**
- * represents the "@method" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.method.pkg
- * @since 1.4.0a1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserMethodTag extends parserPropertyTag
-{
- /**
- * always 'method'
- * @var string
- */
- var $keyword = 'method';
- /**
- * the return type a method has
- * @var string
- */
- var $returnType = 'void';
-}
-
-/**
- * represents the "@var" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.var.pkg
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserVarTag extends parserReturnTag
-{
- /**
- * always 'var'
- * @var string
- */
- var $keyword = 'var';
- /**
- * the type a var has
- * @var string
- */
- var $returnType = 'mixed';
-}
-
-/**
- * represents the "@param" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.param.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserParamTag extends parserVarTag
-{
- /**
- * always 'param'
- * @var string
- */
- var $keyword = 'param';
-}
-
-/**
- * represents the "@staticvar" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.staticvar.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserStaticvarTag extends parserParamTag
-{
- /**
- * always 'staticvar'
- * @var string
- */
- var $keyword = 'staticvar';
-}
-
-/**
- * represents the "@link" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @tutorial tags.link.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserLinkTag extends parserTag
-{
- /**
- * always 'link'
- * @var string
- */
- var $keyword = 'link';
-
- /**
- * sets up the link tag
- *
- * @param string $link URL to link to
- * (might also contain the URL's
- * description text)
- */
- function parserLinkTag($link)
- {
- $start = $val = $link->getString();
- if (strpos($val, ' ')) {
- $val = explode(' ', $val);
- $start = array_shift($val);
- $val = join($val, ' ');
- }
- $a = new parserLinkInlineTag($start, $val);
- $b = new parserStringWithInlineTags;
- $b->add($a);
- $this->value = $b;
- }
-}
-
-/**
- * represents the "@see" tag
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @tutorial tags.see.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserSeeTag extends parserLinkTag
-{
- /**
- * always 'see'
- * @var string
- */
- var $keyword = 'see';
-
- /**
- * sets up the see tag
- *
- * @param string $name element to link to
- */
- function parserSeeTag($name)
- {
- parserTag::parserTag($this->keyword, $name, true);
- }
-
- /**
- * process this tag through the given output converter
- *
- * @param Converter &$converter the output converter
- *
- * @return string converted value of the tag
- * @see parserStringWithInlineTags::Convert()
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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 the "@see" tag
- *
- * Link to a license, instead of including lines and lines of license information
- * in every file
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.license.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserLicenseTag extends parserLinkTag
-{
- /**
- * always 'license'
- * @var string
- */
- var $keyword = 'license';
-
- /**
- * set up the license tag
- *
- * @param string $name unused?
- * @param string $link URL to link to
- */
- 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 the "@uses" tag
- *
- * This is exactly like @see except that the element used
- * has a @useby link to this element added to its docblock
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @tutorial tags.uses.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserUsesTag extends parserSeeTag
-{
- /**
- * Always "uses"
- * @var string
- */
- var $keyword = 'uses';
- /**
- * @access private
- */
- var $_description;
-
- /**
- * set up the uses tag
- *
- * @param string $seeel element to link to
- * @param parserStringWithInlineTags $description description of how
- * the element is used
- */
- function parserUsesTag($seeel, $description)
- {
- if ($seeel->hasInlineTag()) {
- addErrorDie(PDERROR_DUMB_USES);
- }
- 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.
- *
- * @param Converter &$c the output converter
- *
- * @return string link to the uses target
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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.
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserUsedByTag extends parserUsesTag
-{
- /**
- * Always "usedby"
- * @var string
- */
- var $keyword = 'usedby';
- /**
- * @access private
- */
- var $_link;
-
- /**
- * set up the usedby tag
- *
- * @param abstractLink $link link of element that uses this element
- * @param string $description description of how the element is used
- */
- function parserUsedByTag($link, $description)
- {
- $this->value = $description;
- $this->_link = $link;
- }
-
- /**
- * process this tag through the given output converter
- *
- * @param Converter &$c the output converter
- *
- * @return string
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @tutorial phpDocumentor/tutorials.pkg
- * @tutorial tags.tutorial.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserTutorialTag extends parserSeeTag
-{
- /**
- * Always "tutorial"
- * @var string
- */
- var $keyword = 'tutorial';
-
- /**
- * process this tag through the given output converter
- *
- * @param Converter &$converter the output converter
- *
- * @return string|bool
- * @see parserStringWithInlineTags::Convert()
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @tutorial tags.filesource.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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
- * @var array
- * @access private
- */
- var $_converted = array();
-
- /**
- * Set {@link $source} to $value, and set up path
- *
- * @param string $filepath the file's path
- * @param array $value 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
- *
- * @param Converter &$c the output converter
- *
- * @return string output from {@link getSourceLink()}
- * @uses ConvertSource() generate source code and write it out
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- function Convert(&$c)
- {
- $this->ConvertSource($c);
- return $this->getSourceLink($c);
- }
-
- /**
- * convert the source code
- *
- * @param Converter &$c the output converter
- *
- * @return void
- * @uses phpDocumentor_HighlightParser highlights source code
- * @uses writeSource()
- * @todo CS cleanup - rename to convertSource for camelCase rule
- * @todo what's up with all the "return" statements?
- * can they _all_ be removed?
- */
- 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);
- }
-
- /**
- * have the output converter write the source code
- *
- * @param Converter &$c the output converter
- * @param string $source highlighted source code
- *
- * @return void
- * @uses Converter::writeSource() export highlighted file source
- */
- function writeSource(&$c, $source)
- {
- $c->writeSource($this->path, $source);
- }
-
- /**
- * gets path to the sourcecode file
- *
- * @param Converter &$c the output converter
- *
- * @return output from getSourceLink()
- * @uses Converter::getSourceLink()
- */
- function getSourceLink(&$c)
- {
- return $c->getSourceLink($this->path);
- }
-}
-
-/**
- * represents "@example"
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage DocBlockTags
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.example.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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.
- *
- * @param parserStringWithInlineTags $value tag value
- * @param string $current_path path of file containing
- * this @example tag
- *
- * @uses phpDocumentorTWordParser::getFileSource() uses to parse an example
- * and retrieve all tokens by line number
- * @todo does this "x = y = z = false" still work as expected in PHP5?
- * @todo CS cleanup - rename constant to TOKENIZER_EXT
- */
- 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]);
- }
- // Replace windows '\' the path.
- $pathTmp = str_replace('\\', '/', $match[1]);
-
- // 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 {
- // split the path on the last directory, find the filename
- $splitPos = strrpos($pathTmp, '/');
- $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) {
- // remove any weirdities like /../file.ext
- $tmp = realpath($original_path);
- 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();
- $this->origsource = $example;
- unset($obj);
- } else {
- $this->source = $example;
- }
- }
- }
- }
-
- /**
- * convert the source code
- *
- * @param Converter &$c the output converter
- *
- * @return void
- * @uses phpDocumentor_HighlightParser highlights source code
- * @uses writeSource()
- * @todo CS cleanup - rename to convertSource for camelCase rule
- * @todo what's up with all the "return" statements?
- * can they _all_ be removed?
- */
- function ConvertSource(&$c)
- {
- $this->writeSource($c, $c->ProgramExample($this->source, true, null,
- null, null, null, $this->origsource));
- return;
- $parser = new phpDocumentor_HighlightParser;
- $return = '';
- $return = $parser->parse($this->source, $c);
- $this->writeSource($c, $return);
- }
-
- /**
- * have the output converter write the source code
- *
- * @param Converter &$c the output converter
- * @param string $source highlighted source code
- *
- * @return void
- * @access private
- * @uses Converter::writeExample() writes final example out
- */
- function writeSource(&$c, $source)
- {
- if ($this->path) {
- $c->writeExample($this->_title, $this->path, $source);
- }
- }
-
- /**
- * Retrieve a converter-specific link to the example
- *
- * @param Converter &$c the output converter
- *
- * @return string
- * @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 100755
index 213bd199..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Errors.inc
+++ /dev/null
@@ -1,1172 +0,0 @@
-<?php
-/**
- * Error handling for phpDocumentor
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Errors
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: Errors.inc 253641 2008-02-24 02:35:44Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since 0.4
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * 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
- * @todo I think this description is a copy/paste that was never updated
- */
-define("PDERROR_PACKAGEOUTPUT_DELETES_PARENT_FILE", 20);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- * @todo I think this description is a copy/paste that was never updated
- */
-define("PDERROR_GLOBAL_NOT_FOUND", 21);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- * @todo I think this description is a copy/paste that was never updated
- */
-define("PDERROR_MULTIPLE_GLOBAL_TAGS", 22);
-/**
- * warning triggered when there are multiple @name tags in a docblock
- * @todo I think this description is a copy/paste that was never updated
- */
-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
- * @todo I think this description is a copy/paste that was never updated
- */
-define("PDERROR_UNKNOWN_COMMANDLINE", 27);
-/**
- * warning triggered when an entire page is ignored because of @access private
- * @todo I think this description is a copy/paste that was never updated
- */
-define("PDERROR_NEED_WHITESPACE", 28);
-/**
- * warning triggered when an entire page is ignored because of @access private
- * @todo I think this description is a copy/paste that was never updated
- */
-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);
-/**
- * warning triggered by improper "@uses {@link blah}"
- */
-define("PDERROR_DUMB_USES", 73);
-/**
- * warning triggered if <<ul>> is nested inside <<ul>> and not <<li>>
- */
-define("PDERROR_UL_IN_UL", 74);
-/**
- * warning triggered if a command line option does not have a valid value passed in
- */
-define("PDERROR_INVALID_VALUES", 75);
-/**
- * warning triggered when {@}internal}} is nested inside another {@}internal}}
- */
-define("PDERROR_NESTED_INTERNAL", 76);
-/**
- * warning triggered when @todo is used on an include element
- */
-define("PDERROR_NOTODO_INCLUDE", 77);
-/**
- * warning triggered when a class or method hasn't got docblock
- */
-define("PDERROR_UNDOCUMENTED_ELEMENT", 78);
-/**
- * warning triggered when any of {@}property}}, {@}property-read}},
- * {@}property-write}}, or {@}method}} tag does not have name
- */
-define("PDERROR_MISSING_PROPERTY_TAG_NAME", 79);
-/**
- * warning triggered when the PHP version being used has dangerous bug/behavior
- */
-define("PDERROR_DANGEROUS_PHP_BUG_EXISTS", 80);
-/**
- * warning triggered when the alias value in an page-level docblock's @name tag
- * is the same value as the target filename is it supposed to alias
- */
-define("PDERROR_NAME_ALIAS_SAME_AS_TARGET", 81);
-/**
- * warning triggered when the a loop recursion tripwire has been tripped
- */
-define("PDERROR_LOOP_RECURSION_LIMIT_REACHED", 82);
-
-/**
- * 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." . "\n" .
- "Choose -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 ' .
- 'when your PHP build has no tokenizer support'
- ,
- 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'
- ,
- PDERROR_NOTODO_INCLUDE =>
- '@todo on an include element is ignored (line %s, file %s)'
- ,
- PDERROR_UNDOCUMENTED_ELEMENT =>
- '%s "%s" has no %s-level DocBlock.'
- ,
- PDERROR_MISSING_PROPERTY_TAG_NAME =>
- '@%s magic tag does not have name, illegal. Ignoring tag "@%s %s %s"'
- ,
- PDERROR_NAME_ALIAS_SAME_AS_TARGET =>
- '@name value is the same as the filename it is supposed to alias'
- );
-
-
-
-//********************************************************
-
-
-
-/**
- * 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 built without tokenizer support, 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'
- ,
- PDERROR_DUMB_USES =>
- '@uses can only link to string data'
- ,
- PDERROR_UL_IN_UL =>
- 'ul/ol tags cannot be directly nested inside ul/ol, nest inside li'
- ,
- PDERROR_INVALID_VALUES =>
- 'command %s was passed "%s" but must be one of %s'
- ,
- PDERROR_NESTED_INTERNAL =>
- '{@internal}} cannot be nested inside {@internal}}'
- ,
- PDERROR_DANGEROUS_PHP_BUG_EXISTS =>
- 'Dangerous PHP Bug exists in PHP version %s that can be triggered ' .
- 'by this parse (see PHP Bug #%s and PEAR Bug #%s)'
- ,
- PDERROR_LOOP_RECURSION_LIMIT_REACHED =>
- 'An internal loop in PhpDocumentor has reached its preset ' .
- 'recursion limit, preventing a possible infinite loop condition.'
- );
-
-/**
- * encapsulates warning information
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Errors
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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;
- /**
- * Constructor
- *
- * @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,
- *
- * @todo CS Cleanup - do I need to add $data to the method signature?
- * 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
- *
- * @param string $string the warning to print
- *
- * @return void
- */
- 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Errors
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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
- *
- * @param string $string the error to print
- *
- * @return string
- */
- 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Errors
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @see $errors, $warnings
- */
-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
- *
- * @return void
- */
- 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;
-
- case 1000000635 : // debugging
- 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
- *
- * @return void
- * @todo CS Cleanup - do I need to add $data to the method signature?
- */
- 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
- *
- * @return void
- * @todo CS Cleanup - do I need to add $data to the method signature?
- */
- 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
- *
- * @return void
- * @todo CS Cleanup - do I need to add $data to the method signature?
- */
- 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;
- }
-
- /**
- * sort two errors
- *
- * @param RecordError|RecordWarning $a the first error/warning
- * @param RecordError|RecordWarning $b the second error/warning
- *
- * @return int
- * @access private
- */
- 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;
-
-/**
- * add an Error
- *
- * @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
- *
- * @return void
- * @see ErrorTracker::addError()
- * @todo CS Cleanup - do I need to add $data to the method signature?
- */
-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
- *
- * @return void
- * @global ErrorTracker repository for all errors generated by phpDocumentor
- * @see ErrorTracker::addError()
- * @todo CS Cleanup - do I need to add $data to the method signature?
- */
-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]);
- echo $phpDocumentor_errors->returnLastError();
- die(1);
-}
-
-/**
- * add a Warning
- *
- * @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
- *
- * @return void
- * @global ErrorTracker repository for all errors generated by phpDocumentor
- * @see ErrorTracker::addWarning()
- * @todo CS Cleanup - do I need to add $data to the method signature?
- */
-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 100755
index 4a75bba3..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/EventStack.inc
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * An Event Stack for inter-program communication, particularly for parsing
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2000-2007 Joshua Eichorn
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @copyright 2000-2007 Joshua Eichorn
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: EventStack.inc 243937 2007-10-10 02:27:42Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 0.1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * An event Stack
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to 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
- *
- * @return void
- */
- 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 100755
index a474f73c..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/HighlightParser.inc
+++ /dev/null
@@ -1,2603 +0,0 @@
-<?php
-/**
- * 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
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: HighlightParser.inc 253641 2008-02-24 02:35:44Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @tutorial tags.example.pkg, tags.filesource.pkg, tags.inlinesource.pkg
- * @since 1.2.0beta3
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * Retrieve tokens from an array of tokens organized by line numbers
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2.0beta3
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change class name to PhpDocumentor_*
- */
-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();
- /**
- * Initialize the parser object
- *
- * @param array &$input the input
- * @param phpDocumentor_HighlightParser &$parser the parser
- *
- * @return void
- */
- function setup(&$input, &$parser)
- {
- $this->_parser = &$parser;
- $this->data = &$input;
- $this->_all = $input;
- $this->_sourceline = 0;
- $this->pos = 0;
- $this->linenum = 0;
- }
-
- /**
- * debugging function
- *
- * @return void
- * @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 $last_token token, or output from {@link nextToken()}
- * @param bool $is_pos if true, backupPos interprets $last_token
- * to be the position in the internal token
- * array of the last token
- *
- * @return void
- */
- function backupPos($last_token, $is_pos = false)
- {
- if (!$last_token) {
- return;
- }
- 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()}
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2.0beta3
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change class name to PhpDocumentor_*
- */
-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',
- 'property' => 'propertyTagHandler',
- 'property-read' => 'propertyTagHandler',
- 'property-write' => 'propertyTagHandler',
- 'method' => 'propertyTagHandler'
- );
- /**#@-*/
-
- /**
- * wraps the current line (via the converter) and resets it to empty
- *
- * @return void
- * @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
- *
- * @param int $num line number
- *
- * @return void
- */
- 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.
- *
- * @param array &$parse_data the parse data
- * @param Converter &$converter the converter object
- * @param bool $inlinesourceparse whether this data is from an
- * inline {@}source} tag
- * @param string|false $class if a string, it is the name of the
- * class whose method we are parsing
- * containing a {@}source} tag
- * @param false|integer $linenum starting line number from
- * {@}source linenum}
- * @param false|string $filesourcepath full path to file with @filesource
- * tag, if this is a @filesource parse
- *
- * @staticvar int used for recursion limiting if a handler for
- * an event is not found
- * @return bool
- * @uses setupStates() initialize parser state variables
- * @uses configWordParser() pass $parse_data to prepare retrieval of tokens
- * @todo CS cleanup - rename tokenizer_ext constant to uppercase
- */
- 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 ||
- $word[0] == T_COMMENT) &&
- $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 (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 ($word !== false && isset($this->eventHandlers[$pevent])) {
- $handle = $this->eventHandlers[$pevent];
- $this->$handle($word, $pevent);
- } elseif ($word !== false) {
- 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.
- *
- * @param string|array $word token value
- * @param int $pevent parser event from {@link Parser.inc}
- *
- * @return void
- * @access private
- */
- /**
- * 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) {
- if (substr($word[1], 0, 2) == '/*' && strpos($word[1], '*/')) {
- $this->_pv_last_word = $word;
- if ($word[1] == '/**#@-*/') {
- $this->_pf_docblock_template = true;
- } else {
- $this->_pf_docblock = true;
- }
- return $this->handleDocBlock($word, PARSER_EVENT_DOCBLOCK);
- }
- $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.
- *
- * @return void
- * @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();
- // remove leading "/**"
- $linesi[1] = substr(trim($lines[$i]), 3);
- 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();
- // remove leading "* "
- $linesi[1] = substr(trim($lines[$i]), 1);
- 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.
- *
- * @param mixed $desc the description piece(s)
- *
- * @return void
- * @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 &&
- !(substr($line[0], 0, 2) == '/*' &&
- strpos($line[1], '*/') !== 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
- *
- * @param array $tags array of tags to handle
- *
- * @return void
- * @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.
- *
- * @param mixed $value the tag value
- * @param bool $endinternal indicates the end of an @internal tag
- *
- * @return void
- * @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
- *
- * @param string $name the tag name
- * @param mixed $value the tag value
- *
- * @return void
- * @access private
- */
- function handleDefaultInlineTag($name, $value)
- {
- $this->_addDocBlockoutput('inlinetag', '{@' . $name . ' ' . $value . '}');
- }
-
- /**#@+
- * phpDocumentor DocBlock tag handlers
- *
- * @param string $name tag name
- * @param array $value array of lines contained in the tag description
- *
- * @return void
- * @access private
- */
- /**
- * 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
- *
- * @param bool $coretag whether this tag is a core tag or not
- *
- * @uses getInlineTags() highlight a tag description
- */
- 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++;
- }
- }
- }
-
- /**
- * main handler for "core" tags
- *
- * @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 bool $checkforvar 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++;
- }
- }
- }
-
- /**
- * handles the @staticvar tag
- *
- * @see paramTagHandler()
- */
- function staticvarTagHandler($name, $value)
- {
- return $this->paramTagHandler($name, $value);
- }
-
- /**
- * handles the @var tag
- *
- * @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);
- }
-
- /**
- * Handles @property(-read or -write) and @method magic tags
- */
- function propertyTagHandler($name, $value)
- {
- return $this->paramTagHandler($name, $value, true);
- }
-
- /**#@-*/
-
- /**
- * 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 $value array of words that were separated by spaces
- * @param 0|1 $state 0 = find the type, 1 = find the var, if present
- * @param bool $checkforvar 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;
- }
-
- /**
- * used by {@link retrieveType()} in its work
- *
- * @param array $value array of words that were separated by spaces
- * @param 0|1 $state 0 = find the type, 1 = find the var, if present
- * @param bool $checkforvar flag to determine whether to check for the end of a
- * type is defined by a $varname
- *
- * @return array
- * @access private
- */
- 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);
- }
-
- /**
- * captures trailing whitespace
- *
- * @param array &$value array of string
- * @param int $index index to seek non-whitespace to
- *
- * @return string whitespace
- * @access private
- */
- 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
- *
- * @param string|array $word token to try to link
- *
- * @access private
- */
- /**
- * 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
- *
- * @param bool $justastring true if the $word is only a string
- */
- 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.
- *
- * @param mixed $word the string|array tag token and value
- * @param bool $preformatted whether or not the $word is already formatted
- *
- * @return void
- * @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 .= $this->_converter->postProcess($word);
- return;
- }
- if (is_array($word) && trim($word[1]) == '') {
- $this->_line .= $this->_converter->postProcess($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
- *
- * @param mixed $dbtype the docblock type
- * @param mixed $word the string|array tag token and value
- * @param bool $preformatted whether or not the $word is already formatted
- *
- * @return void
- */
- 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}
- *
- * @return void
- * @todo CS cleanup - rename to _flushSave() for camelCase rule
- */
- function _flush_save()
- {
- if (!empty($this->_save)) {
- $this->_save .= $this->_converter->flushHighlightCache();
- // clear the existing cache, reset it to the old value
- if (isset($this->_save_highlight_state)) {
- $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 &$data all tokens separated by line number
- *
- * @return void
- */
- function configWordParser(&$data)
- {
- $this->_wp->setup($data, $this);
- $this->_wp->setWhitespace(true);
- }
-
- /**
- * Initialize all parser state variables
- *
- * @param bool $inlinesourceparse true if we are highlighting an inline
- * {@}source} tag's output
- * @param false|string $class name of class we are going
- * to start from
- *
- * @return void
- * @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
- *
- * @return void
- */
- 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,
- '"' => PARSER_EVENT_QUOTE,
- '\'' => PARSER_EVENT_QUOTE,
- );
- /**************************************************************/
-
- $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 100755
index 0af2ea40..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/InlineTags.inc
+++ /dev/null
@@ -1,1044 +0,0 @@
-<?php
-/**
- * All abstract representations of inline tags are in this file
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: InlineTags.inc 286921 2009-08-08 05:01:24Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since separate file since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * Use this element to represent an {@}inline tag} like {@}link}
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @since 1.0rc1
- * @tutorial inlinetags.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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 = '';
-
- /**
- * sets up the tag
- *
- * @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);
- }
-
- /**
- * get length of the tag
- *
- * @return integer length of the tag
- * @todo CS cleanup - rename to strLen for camelCase rule
- */
- 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);
- }
-
- /**
- * always gets an empty string
- *
- * @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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @since 1.0rc1
- * @tutorial tags.inlinelink.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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 = '';
-
- /**
- * sets up the tag
- *
- * @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);
- }
-
- /**
- * calls the output conversion
- *
- * @param Converter &$c converter used to change the abstract link
- * into text for display
- *
- * @return false|string returns the converted link or false
- * if not converted successfully
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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);
- }
- }
-
- /**
- * convert part of the tag
- *
- * @param Converter &$c the output converter
- * @param string $value the tag value
- *
- * @return string
- * @todo CS cleanup - rename to convertPart for camelCase rule
- */
- 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, $descrip ? $descrip :
- str_replace('PHP_MANUAL#', '', $value));
- }
- return $value;
- }
- if (!$descrip) {
- $descrip = $c->type_adjust($savevalue);
- }
- if (is_object($value)) {
- return $c->returnSee($value, $descrip);
- }
- return $savevalue;
- }
- }
-}
-
-/**
- * Represents inline links to external tutorial documentation
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @tutorial tags.inlinetutorial.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserTutorialInlineTag extends parserLinkInlineTag
-{
- /**
- * constructor
- *
- * @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);
- }
-
- /**
- * convert part of the tag
- *
- * @param Converter &$c converter used to change the abstract link
- * into text for display
- *
- * @return mixed returns the converted link
- * or false if not converted successfully
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @tutorial tags.inlinesource.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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;
- /**#@-*/
-
- /**
- * constructor
- *
- * @param string $value 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
- *
- * @return int
- */
- function Strlen()
- {
- return 1;
- }
-
- /**
- * gets the source string
- *
- * @return string
- */
- function getString()
- {
- return '{@source}';
- }
-
- /**
- * sets the source tag's value
- *
- * @param string|array $source source code
- * @param string|bool $class class name if this is a method,
- * boolean in php 4.3.0,
- * if this is a method this will be true
- *
- * @return void
- */
- 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);
- }
- }
-
- /**
- * convert the tag
- *
- * @param Converter &$c the output converter object
- *
- * @return string
- * @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
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- function Convert(&$c)
- {
- if (is_string($this->source)) {
- return $this->stringConvert($c);
- }
- return $this->arrayConvert($c);
- }
-
- /**
- * converter helper used in PHP 4.3.0+
- *
- * @param Converter &$c the output converter object
- *
- * @return string
- * @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);
- }
-
- /**
- * converter helper used in PHP 4.2.3-
- *
- * @param Converter &$c the output converter object
- *
- * @return string
- * @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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @tutorial tags.inlineexample.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserExampleInlineTag extends parserSourceInlineTag
-{
- /**
- * constructor
- *
- * @param string $value format "filepath[ start [end]]"
- * where start and end are line numbers
- * with the end line number optional
- * @param string $current_path full path to the current file,
- * used to check relative directory locations
- * @param bool $isTutorial if true, then this is in a tutorial
- *
- * @return mixed
- * @todo replace tokenizer_ext constant with TOKENIZER_EXT for CS rule
- */
- 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];
- }
- }
- // Replace windows '\' the path.
- $pathTmp = str_replace('\\', '/', $match[1]);
-
- // 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 {
- // split the path on the last directory, find the filename
- $splitPos = strrpos($pathTmp, '/');
- $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) {
- // remove any weirdities like /../file.ext
- $tmp = realpath($original_path);
- 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);
- }
- }
- }
- }
-
- /**
- * sets the source
- *
- * @param string|array $source source code
- * @param string|bool $class class name if this is a method,
- * boolean in php 4.3.0,
- * if this is a method this will be true
- *
- * @return void
- */
- function setSource($source, $class = false)
- {
- $this->_class = $class;
- $this->source = $source;
- }
-
- /**
- * converter helper for PHP 4.3.0+
- *
- * @param Converter &$c output converter
- *
- * @return string
- * @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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @tutorial tags.inlineinheritdoc.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserInheritdocInlineTag extends parserInlineTag
-{
- /**
- * always 'inheritdoc'
- * @var string
- */
- var $inlinetype = 'inheritdoc';
-
- /**
- * Does nothing, overrides parent constructor
- */
- function parserInheritdocInlineTag()
- {
- }
-
- /**
- * only sets a warning and returns empty
- *
- * @return string
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- function Convert()
- {
- addWarning(PDERROR_INHERITDOC_DONT_WORK_HERE);
- return '';
- }
-}
-
-/**
- * Represents the inline {@}id} tag for tutorials
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @tutorial tags.inlineid.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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;
-
- /**
- * constructor
- *
- * @param string $category category name
- * @param string $package package name
- * @param string $subpackage subpackage name
- * @param string $tutorial tutorial name
- * @param string $id section/subsection name
- */
- function parserIdInlineTag($category,$package,$subpackage,$tutorial,$id = false)
- {
- $this->package = $package;
- $this->subpackage = $subpackage;
- $this->tutorial = $tutorial;
- $this->id = $id;
- $this->category = $category;
- }
-
- /**
- * converter
- *
- * @param Converter &$c output converter
- *
- * @return string
- * @uses Converter::getTutorialId() retrieve converter-specific ID
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage InlineTags
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserStringWithInlineTags
- * @tutorial tags.inlinetoc.pkg
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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;
-
- /**
- * constructor
- */
- function parserTocInlineTag()
- {
- parent::parserInlineTag('toc', '');
- }
-
- /**
- * set the TOC
- *
- * @param array $toc format:
- * <pre>
- * array(
- * array(
- * 'tag' => {@link parserXMLDocBookTag},
- * 'id' => {@link parserIdInlineTag},
- * 'title' => {@link parserXMLDocBookTag title}
- * ),
- * ...
- * )
- * </pre>
- *
- * @return void
- */
- function setTOC($toc)
- {
- $this->toc = $toc;
- }
-
- /**
- * set the path
- *
- * @param string $path the path
- *
- * @return void
- */
- function setPath($path)
- {
- $this->_path = $path;
- }
-
- /**
- * converter method
- *
- * <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
- *
- * @param Converter &$c converter object
- *
- * @return mixed
- * @uses Converter::getTutorialId() retrieve the tutorial ID for
- * @uses Converter::formatTutorialTOC() passes an array of format:
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- function Convert(&$c)
- {
- $newtoc = array();
- if (isset($this->toc) && is_array($this->toc)) {
- 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 100755
index 98b07159..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/IntermediateParser.inc
+++ /dev/null
@@ -1,1940 +0,0 @@
-<?php
-/**
- * The phpDocumentor_IntermediateParser Class
- *
- * The Intermediary Data Parser (intermediate between Parse and Converter)
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package phpDocumentor
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: IntermediateParser.inc 247821 2007-12-09 06:11:35Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.1
- */
-/** 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 247821 2007-12-09 06:11:35Z ashnazg $
- * @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;
-
- /**
- * set in {@link Setup.inc.php} to the value of the undocumentedElementWarnings commandline
- * option.
- *
- * If this option is true, warnings about certain elements (classes, methods)
- * that are not documented with DocBlocks will be shown while parsing,
- * and will also be displayed in the errors.html page
- * (other documentation is unaffected)
- * @var boolean
- * @tutorial phpDocumentor.howto.pkg#using.command-line.undocumentedelements
- */
- var $undocumentedElementWarnings = 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/require_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->getValue());
- if (!$this->_oldPageLevel)
- {
- unset($this->last);
- }
- }
- $this->_lastDocBlockWasPageLevel = false;
- $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 = false;
- $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 ($this->undocumentedElementWarnings)
- {
- addWarning(PDERROR_UNDOCUMENTED_ELEMENT,'Method',$data->getName(),'method');
- }
- 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 $key => $param)
- {
- $update_params[$key] = $param;
- }
- 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 = false;
- $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 $key => $param)
- {
- $update_params[$key] = $param;
- }
- 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 = false;
- $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 ($data->isInterface())
- {
- $objectType = 'interface';
- }
- else
- {
- $objectType = 'class';
- }
- 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);
- if ($this->last) {
- $this->last->cantSource();
- }
- }
- }
- $this->_lastDocBlockWasPageLevel = false;
- $this->data->clean = false;
- if (empty($this->last))
- {
- if ($this->undocumentedElementWarnings)
- {
- addWarning(PDERROR_UNDOCUMENTED_ELEMENT,'Class',$data->getName(),'Class');
- }
- 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,$objectType,$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,$objectType,$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.
- * 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] != $data->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;
- $this->data->setDocBlock($data);
- 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->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))
- {
- $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 (!empty($_phpDocumentor_setting['packageoutput']))
- $packages = explode(',',$_phpDocumentor_setting['packageoutput']);
- if (!empty($_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)
- {
- /*
- * if privatepages is still empty,
- * we need to initialize it with an empty
- * path=>ParserData element, so that it has
- * a top-level element... otherwise the setParent() call
- * below will crap out.
- */
- if (count($this->privatepages) == 0) {
- $this->privatepages[$path] = new ParserData();
- }
- $this->privatepages[$path]->setParent($page);
- if (isset($page->package) && $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 (isset($element->type) && $element->type == 'page')
- {
- $element = $this->pages[$element->path];
- }
- if (!$this->parsePrivate && isset($element->docblock->hasaccess) && $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]))
- {
- $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]))
- {
- $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();
- ksort($this->uses);
- 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' :
- $this->pages[$reallink->path]->docblock->addUsedBy(
- $element[0]->getLink($converter, false, true),
- $element[1]);
- break;
- 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 &&
- (!isset($reallink->class) ||
- $this->pages[$reallink->path]->classelements[$i]->getClass() == $reallink->class))
- {
- $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);
- $converter->cleanup();
- }
-
- /**
- * 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 ($this->templateBase) {
- $templateBase = str_replace('\\','/', $this->templateBase) . '/Converters';
- } else {
- if ('@PEAR-DIR@' != '@'.'PEAR-DIR@') {
- $templateBase = 'PhpDocumentor/phpDocumentor/Converters';
- } else {
- $templateBase = str_replace('\\','/',$GLOBALS['_phpDocumentor_install_dir']) . '/phpDocumentor/Converters';
- }
- }
- if (strpos($name,PATH_DELIMITER))
- {
- // include the parent template
- $parent = explode(PATH_DELIMITER,$name);
- $parent = $parent[0];
- if (!class_exists($output . $parent . 'Converter')) {
- $filename = $templateBase . '/' . $output . '/' . $parent . '/' . $output
- . $parent . 'Converter.inc';
- if (Io::isIncludeable($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 = $templateBase .
- PATH_DELIMITER . $output . PATH_DELIMITER . $name . PATH_DELIMITER . $output .
- str_replace(PATH_DELIMITER, '', $name) . "Converter" . ".inc";
- if (Io::isIncludeable($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;
- }
-
- /**
- * show warnings for undocumented elements
- *
- * If set to false, no warnings will be shown for undocumented elements.
- * Useful for identifying classes and methods that haven't yet been documented.
- * @param bool $undocumentedElementWarnings
- */
- function setUndocumentedElementWarningsMode($undocumentedElementWarnings)
- {
- $this->undocumentedElementWarnings = $undocumentedElementWarnings;
- }
-
- /**
- * 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 100755
index 17eb326b..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Io.inc
+++ /dev/null
@@ -1,992 +0,0 @@
-<?php
-/**
- * File and input handling routines
- *
- * This class parses command-line options, and works with files to
- * generate lists of files to parse based on the ignore/include options
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2000-2006 Joshua Eichorn, Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package phpDocumentor
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2000-2006 Joshua Eichorn, Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: Io.inc 286921 2009-08-08 05:01:24Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 0.1
- */
-/**
- * Class to handle file and user io opperations
- *
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Gregory Beaver <cellog@php.net>
- * @version $Id: Io.inc 286921 2009-08-08 05:01:24Z ashnazg $
- * @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;
- /**
- * A specific array of values that boolean-based arguments can understand,
- * aided by the {@link decideOnOrOff()} helper method.
- *
- * Use lowercase letters always, to simplify string comparisons
- * @var array
- */
- var $valid_booleans = array
- (
- '', ' ', 'on', 'y', 'yes', 'true', '1',
- 'off', 'n', 'no', 'false', '0'
-
- );
-
- /**
- * 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['ignoresymlinks']['tag'] = array("-is", "--ignoresymlinks");
- $this->phpDocOptions['ignoresymlinks']['desc'] = "ignore symlinks to other files or directories, default is off";
- $this->phpDocOptions['ignoresymlinks']['type'] = "set";
- $this->phpDocOptions['ignoresymlinks']['validvalues'] = $this->valid_booleans;
-
- $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'] = "set";
- $this->phpDocOptions['hidden']['validvalues'] = $this->valid_booleans;
-
- $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'] = "set";
- $this->phpDocOptions['quiet']['validvalues'] = $this->valid_booleans;
-
- $this->phpDocOptions['undocumentedelements']['tag'] = array("-ue", "--undocumentedelements");
- $this->phpDocOptions['undocumentedelements']['desc'] = "Control whether or not warnings will be shown for undocumented elements. Useful for identifying classes and methods that haven't yet been documented on/off default off";
- $this->phpDocOptions['undocumentedelements']['type'] = "set";
- $this->phpDocOptions['undocumentedelements']['validvalues'] = $this->valid_booleans;
-
- $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'] = "set";
- $this->phpDocOptions['parseprivate']['validvalues'] = array('on', 'off');
-
- $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'] = "set";
- $this->phpDocOptions['sourcecode']['validvalues'] = array('on', 'off');
-
- $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'] = "set";
- $this->phpDocOptions['javadocdesc']['validvalues'] = array('on', 'off');
-
- $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'] = "set";
- $this->phpDocOptions['pear']['validvalues'] = array('on', 'off');
-
- $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)
- {
- $test = realpath($filename);
- if ($test && is_readable($test)) {
- return true; // for absolute paths
- }
- $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
- * @todo replace with Console_* ?
- */
- function parseArgv()
- {
- global $argv;
-
- // defaults for setting
- $setting['hidden'] = "off";
- $setting['ignoresymlinks'] = 'off';
- $setting['template'] = 'templates' . PATH_DELIMITER .'default' . PATH_DELIMITER;
-
- $valnext = "junk";
- $data = array();
- if(isset($argv) && is_array($argv))
- {
- foreach ($argv as $cmd)
- {
- if ($cmd == '--') {
- continue;
- }
- if ($cmd == '-h' || $cmd == '--help')
- {
- echo $this->displayHelpMsg();
- die();
- }
-
- // at first, set the arg value as if we
- // already know it's formatted normally, e.g.
- // -q on
- $setting[$valnext] = $cmd;
-
- if (isset($data['type']) && $data['type'] == 'set') {
-
- if ($valnext !== 'junk' && strpos(trim($cmd),'-') === 0) {
- // if valnext isn't 'junk' (i.e it was an arg option)
- // then the first arg needs an implicit "" as its value, e.g.
- // ... -q -pp ... ===> ... -q '' -pp ...
- $setting[$valnext] = '';
-
- } else if (!in_array(strtolower($cmd), $data['validvalues'], true)) {
- // the arg value is not a valid value
- addErrorDie(PDERROR_INVALID_VALUES, $valnext, $cmd,
- '(' . implode(', ', $data['validvalues']) . ')');
- }
- }
-
- 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)) {
- // this indicates the last arg of the command
- // is an arg option (-) that was preceded by unrecognized "junk"
- addErrorDie(PDERROR_UNKNOWN_COMMANDLINE,$cmd);
-
- } else if ($valnext != 'junk' && (strpos(trim($cmd),'-') === 0)) {
- // this indicates the last arg of the command
- // is an arg option (-) without an arg value
-
- // add an empty arg "value" for this arg "option"
- $setting[$valnext] = '';
- }
-
-
- }
- } else
- {
- echo "Please use php-cli.exe in windows, or set register_argc_argv On";
- die;
- }
- /* $setting will always have at least 3 elements
- [hidden] => off
- [ignoresymlinks] => 'off'
- [template] => templates/default
- */
- if (count($setting) < 4) {
- 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 bool whether to list files that begin with . like .bash_history
- * @param bool whether to ignore symlinks
- */
- function dirList($orig_directory, $hidden = false, $ignore_symlinks = false)
- {
- $directory = realpath($orig_directory);
- $ret = false;
- if (! @is_dir($directory))
- {
- die("directory: '$directory' not found\n");
- }
- $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) {
- continue;
- }
-
- // skip hidden files, if we're supposed to
- if (!$hidden)
- {
- if (substr($entry,0,1) == ".")
- {
- phpDocumentor_out("Hidden " . $directory . PATH_DELIMITER . $entry . " Ignored\n");
- continue;
- }
- }
-
- // skip symlink files, if we're supposed to
- if ($ignore_symlinks)
- {
- if (is_link($directory . PATH_DELIMITER . $entry))
- {
- phpDocumentor_out("Symlink " . $directory . PATH_DELIMITER . $entry . " Ignored\n");
- continue;
- }
- }
-
- 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, $ignore_symlinks);
- if (is_array($tmp)) {
- foreach($tmp as $ent) {
- $ret[] = $ent;
- }
- }
- }
- }
- if ($d) $d->close();
- 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);
- }
-
- /**
- * @param string directory
- * @param string base directory
- * @param array array of ignored items
- * @param boolean the "hidden" flag
- * @param boolean the "ignoresymlinks" flag
- * @uses dirList
- * @uses checkIgnore
- * @uses setup_dirs
- */
- function getDirTree($dir, $base_dir, $ignore = array(), $hidden = false, $ignoresymlinks = false)
- {
- $allfiles = $this->dirList($dir,$hidden,$ignoresymlinks);
- $struc = array();
- foreach($allfiles as $file)
- {
- if ($this->checkIgnore(basename($file),dirname(realpath($file)),$ignore,$ignoresymlinks)) continue;
- if (PHPDOCUMENTOR_WINDOWS) {
- $path = substr(dirname($file),strlen(str_replace('\\','/',realpath($base_dir))));
- } else {
- $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();
- if (function_exists('file_get_contents')) {
- return file_get_contents($path);
- }
- $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();
- if (function_exists('file_get_contents')) {
- $ret = file_get_contents($path);
- } else {
- $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@php.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 path to consider (should be checked by
- * realpath() before, and may be relative)
- * @param array $ignore
- * @param bool
- * @param bool Ignore symlinks?
- * @return bool true if $path should be ignored, false if it should not
- */
- function checkIgnore($file,$path,$ignore,$ignore_no_ext = true,$ignoresymlinks = false)
- {
- global $_phpDocumentor_RIC_files;
-
- if ($ignoresymlinks && is_link($path . PATH_DELIMITER . $file)) return false;
-
- if (!count($ignore)) return false;
-
- if (!isset($this->ignore))
- {
- $this->_setupIgnore($ignore);
- }
- if (!$this->ignore)
- {
- return false;
- }
-
- if ($ignore_no_ext &&
- !in_array(strtoupper($file), $_phpDocumentor_RIC_files))
- {
- if (!is_numeric(strpos($file,'.'))) return true;
- }
- 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@php.net>
- * @param array strings of files/paths/wildcards to ignore
- * @access protected
- */
- function _setupIgnore($ignore)
- {
- $ig = array();
- if ( ! is_array($ignore))
- {
- $this->ignore = false;
- return;
- }
- for($i=0; $i<count($ignore);$i++)
- {
- if (empty($ignore[$i]))
- continue;
-
- $ignore[$i] = strtr($ignore[$i], '\\', '/');
- $ignore[$i] = str_replace('//','/',$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;
- }
-
- /**
- * Converts $s into a string that can be used with preg_match
- * @param string $s string with wildcards ? and *
- * @author Greg Beaver <cellog@php.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@php.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@php.net>
- * @uses dirList
- * @uses removeNonMatches
- */
- 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 100755
index ceeca4ad..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/LinkClasses.inc
+++ /dev/null
@@ -1,361 +0,0 @@
-<?php
-/**
- * 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()}
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: LinkClasses.inc 253641 2008-02-24 02:35:44Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2.0
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * linking classes parent
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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 = '';
- /**#@-*/
-
- /**
- * sets up the link
- *
- * @param string $path full path to file containing element
- * @param string $fileAlias page name, as configured by {@link Parser::parse}
- * @param string $name element name
- * @param string $package package element is in
- * @param string $subpackage subpackage element is in
- * @param string $category optional category that documentation is in
- *
- * @return void
- */
- 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class pageLink extends abstractLink
-{
- /**
- * @var string
- */
- var $type = 'page';
-}
-
-/**
- * function link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class functionLink extends abstractLink
-{
- /**
- * @var string
- */
- var $type = 'function';
-}
-
-/**
- * define link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class defineLink extends abstractLink
-{
- /**
- * @var string
- */
- var $type = 'define';
-}
-
-/**
- * global variable link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class globalLink extends abstractLink
-{
- /**
- * @var string
- */
- var $type = 'global';
-}
-
-/**
- * class link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class classLink extends abstractLink
-{
- /**
- * @var string
- */
- var $type = 'class';
-}
-
-/**
- * method link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class methodLink extends abstractLink
-{
- /**
- * @var string
- */
- var $type = 'method';
- /**
- * @var string
- */
- var $class = '';
-
- /**
- * sets up the link
- *
- * @param string $class class name
- * @param string $path full path to file containing element
- * @param string $fileAlias page name, as configured by {@link Parser::parse}
- * @param string $name element name
- * @param string $package package element is in
- * @param string $subpackage subpackage element is in
- * @param string $category optional category that documentation is in
- *
- * @return void
- */
- function addLink($class, $path , $fileAlias, $name, $package, $subpackage,
- $category = false)
- {
- $this->class = $class;
- abstractLink::addLink($path, $fileAlias, $name, $package, $subpackage,
- $category);
- }
-}
-
-/**
- * class variable link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class varLink extends methodLink
-{
- /**
- * @var string
- */
- var $type = 'var';
-}
-
-/**
- * class constant link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class constLink extends methodLink
-{
- /**
- * @var string
- */
- var $type = 'const';
-}
-
-/**
- * tutorial link
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Links
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class tutorialLink extends abstractLink
-{
- /**#@+
- * @var string
- */
- var $type = 'tutorial';
- var $section = '';
- var $title = false;
- /**#@-*/
-
- /**
- * sets up the link
- *
- * @param string $section section/subsection name
- * @param string $path full path to file containing element
- * @param string $name page name, as configured by {@link Parser::parse}
- * @param string $package package element is in
- * @param string $subpackage subpackage element is in
- * @param string $title title of tutorial
- * @param string $category optional category that documentation is in
- *
- * @return void
- */
- function addLink($section, $path, $name, $package, $subpackage, $title = false,
- $category = false)
- {
- $this->section = $section;
- $this->title = $title;
- parent::addLink($path, '', $name, $package, $subpackage, $category);
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc b/buildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc
deleted file mode 100755
index 24e991ee..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/PackagePageElements.inc
+++ /dev/null
@@ -1,513 +0,0 @@
-<?php
-/**
- * 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.
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Tutorial
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: PackagePageElements.inc 253643 2008-02-24 04:27:54Z ashnazg $
- * @tutorial tutorials.pkg
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2.0
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * Represents <![CDATA[ ]]> sections.
- *
- * These sections are interpreted as plain text
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Tutorial
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @tutorial tutorials.pkg
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserCData extends parserStringWithInlineTags
-{
- /**
- * calls the output conversion
- *
- * @param Converter &$c the output converter
- * @param bool $postprocess if postprocessing is needed
- *
- * @return string
- * @uses Converter::getCData() convert contents to text
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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>
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Tutorial
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @tutorial tutorials.pkg
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- * @todo CS cleanup - rename to parserXmlDocBookTag for camelCase rule
- */
-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;
- /**#@-*/
-
- /**
- * sets up the tag
- *
- * @param string $name tag name
- *
- * @todo CS cleanup - rename to parserXmlDocBookTag for camelCase rule
- */
- function parserXMLDocBookTag($name)
- {
- $this->name = $name;
- }
-
- /**
- * calls the output conversion
- *
- * @param Converter &$c the output converter
- * @param bool $postprocess if postprocessing is needed
- *
- * @return string
- * @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
- *
- * @return void
- * @see addCData()
- */
- function startCData()
- {
- $this->_cdata = new parserCData;
- }
-
- /**
- * Adds {@link $_cdata} to {@link $value}
- *
- * @return void
- */
- function endCData()
- {
- $this->value[] = $this->_cdata;
- unset($this->_cdata);
- }
-
- /**
- * Retrieve either the table of contents index,
- * or the location that the TOC will go
- *
- * @param false|integer $state either an index of the {@}toc} tag in $this->value
- * or false, if the next index value of $this->value
- * is needed
- *
- * @return int
- * @see setTOC()
- */
- function getTOC($state = false)
- {
- if ($state !== false) {
- return $this->value[$state];
- }
- return count($this->value);
- }
-
- /**
- * sets the TOC value
- *
- * @param integer $state index of the TOC in $this->value
- * @param parserTocInlineTag $val tag value
- *
- * @return void
- */
- function setTOC($state, $val)
- {
- $this->value[$state] = $val;
- }
-
- /**
- * add a word to CData
- *
- * @param string $word word to add
- *
- * @return void
- */
- 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 $name attribute name
- * @param string|parserIdInlineTag $value value of attribute
- *
- * @return void
- */
- 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 $title the title element
- *
- * @return void
- */
- function setTitle($title)
- {
- $this->_title = $title;
- }
-
- /**
- * If the id attribute is present, this method will set its id
- *
- * @param parserIdInlineTag $id the id value
- *
- * @return void
- */
- function setId($id)
- {
- $this->_id = $id;
- }
-
- /**
- * Return converter-specific formatting of ID.
- *
- * Passes $c to {@link parserIdInlineTag::Convert()}
- *
- * @param Converter &$c the output 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
- *
- * @param Converter &$c the output converter
- *
- * @return string
- */
- 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) && is_a($tag, 'parserXMLDocBookTag')
- && $tag->name == 'refname') {
- $t = new parserStringWithInlineTags;
- foreach ($tag->value as $val) {
- $t->add($val);
- }
- $this->_title = $t;
- }
- if (is_object($tag) && is_a($tag, 'parserXMLDocBookTag')
- && $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]) && is_a($tag, 'parserXMLDocBookTag')) {
- return $this->value[0]->getTitle($c);
- }
- if (isset($this->value[1])) {
- if (is_object($this->value[1]) && is_a($tag, 'parserXMLDocBookTag')) {
- 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 &$c the output converter
- * @param string $subsection converter-specific subsection
- *
- * @return bool|string
- */
- 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 $el nested tag,
- * entity, or text
- *
- * @return mixed
- */
- 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.
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Tutorial
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @tutorial tutorials.pkg
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class parserEntity
-{
- /**
- * sets up the entity
- *
- * @param string $name entity name
- */
- function parserEntity($name)
- {
- $this->value = $name;
- }
-
- /**
- * calls the output conversion
- *
- * @param Converter &$c the output converter
- * @param bool $postprocess if postprocessing is needed
- *
- * @return string
- * @uses Converter::TranslateEntity() convert contents to text
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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;
- }
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Parser.inc b/buildscripts/PhpDocumentor/phpDocumentor/Parser.inc
deleted file mode 100755
index 99fdd57a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Parser.inc
+++ /dev/null
@@ -1,3252 +0,0 @@
-<?php
-/**
- * Base parser for all parsers
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2000-2006 Joshua Eichorn, Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2000-2006 Joshua Eichorn, Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: Parser.inc 238276 2007-06-22 14:58:30Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 0.1
- */
-/** 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);
-
-/** used when a $param is encountered in a function definition */
-define("PARSER_EVENT_FUNCTION_PARAM_VAR", 144);
-/** currently parsing a $param in a function definition */
-define("STATE_FUNCTION_PARAM_VAR", 244);
-
-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_ML_COMMENT'))
-{
- define('T_ML_COMMENT', T_COMMENT);
-}
-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@php.net>
- * @version $Id: Parser.inc 238276 2007-06-22 14:58:30Z ashnazg $
- * @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' => '', 'property_name' => false,
- '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',
- 'property' => 'propertyTagHandler',
- 'property-read' => 'propertyTagHandler',
- 'property-write' => 'propertyTagHandler',
- 'method' => 'propertyTagHandler'
- );
-
- 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' => '', 'property_name' => false,
- '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( ':', '', dirname($path) . PATH_DELIMITER . $page->getFile() );
- $tmp = explode( PATH_DELIMITER, $name );
- $name = 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 (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;
- }
- }
-
- /**
- * Handles @property(-read or -write) and @method magic tag
- */
- function propertyTagHandler( $word )
- {
- if ( $word !== false )
- {
- if ( !$this->p_vars['returntype'] )
- $this->p_vars['returntype'] = trim( $word );
- else
- {
- if ( !$this->p_vars['property_name'] )
- {
- if ( substr( trim( $word ), 0, 1 ) == "$"
- || substr(trim($word), 0, 2) == "&$"
- || substr(trim($word), -2, 2) == "()"
- )
- $this->p_vars['property_name'] = trim( $word );
- else
- $this->p_vars['tag_value']->add( $word );
- }
- else
- {
- $this->p_vars['tag_value']->add( $word );
- }
- }
- }
- else
- {
- $this->p_vars[$this->p_vars['docblock_type']]->addProperty( $this->p_vars['tagname'],
- $this->p_vars['property_name'],
- $this->p_vars['returntype'],
- $this->p_vars['tag_value'] );
- $this->p_vars['property_name'] = false;
- $this->p_vars['returntype'] = 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 (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 100755
index 31e7e9f6..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserData.inc
+++ /dev/null
@@ -1,970 +0,0 @@
-<?php
-/**
- * Parser Data Structures
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: ParserData.inc 253814 2008-02-26 12:15:56Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * Contains information about a PHP file, used to group procedural elements
- * together.
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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 = '';
- /**
- * original phpdoc-safe name (only letters, numbers and _)
- *
- * This fixes [ 1391432 ] Too many underscores in include links.
- * @var string
- */
- var $origName = '';
- /**
- * @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'];
- }
-
- /**
- * gets the tag type
- *
- * @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 $source the token array/string
- *
- * @return void
- */
- function setSource($source)
- {
- $this->source = $source;
- }
-
- /**
- * Sets the name to display in documentation (can be an alias set with @name)
- *
- * @param string $file the file name
- *
- * @return void
- */
- function setFile($file)
- {
- $this->file = $file;
- }
-
- /**
- * gets the file name
- *
- * @return string|bool filename.ext or @name alias,
- * or FALSE if it's not set
- */
- function getFile()
- {
- if (!isset($this->file)) {
- return false;
- }
- return $this->file;
- }
-
- /**
- * sets the path to the file
- *
- * @param string $path full path to file
- *
- * @return void
- */
- function setPath($path)
- {
- // look for special windows case
- if (SMART_PATH_DELIMITER === '\\') {
- $this->path = strtr($path, '/', '\\');
- } else {
- $this->path = $path;
- }
- }
-
- /**
- * gets the path
- *
- * @return string fully delimited path (OS-dependent format),
- * or FALSE if it's not set
- */
- function getPath()
- {
- if (!isset($this->path)) {
- return false;
- }
- return $this->path;
- }
-
- /**
- * loads the package output array
- *
- * @param array $packages array of packages to display in documentation
- * (package1,package2,...)
- *
- * @return void
- * @see phpDocumentor_IntermediateParser::$packageoutput
- */
- function setPackageOutput($packages)
- {
- $this->packageOutput = $packages;
- }
-
- /**
- * gets the package output array
- *
- * @return array array of packages (package1,package2,...)
- * @see phpDocumentor_IntermediateParser::$packageoutput
- */
- function getPackageOutput()
- {
- return $this->packageOutput;
- }
-
- /**
- * sets the name
- *
- * @param string $name phpdoc-safe name (only _, numbers and letters)
- * set by Parser::parse()
- *
- * @return void
- * @see Parser::parse()
- */
- function setName($name)
- {
- $this->origName = $name;
- $this->name = $name;
- }
-
- /**
- * gets the name
- *
- * @return string phpdoc-safe name (only _, numbers and letters),
- * or FALSE if it's not set
- */
- function getName()
- {
- if (!isset($this->name)) {
- return false;
- }
- return $this->name;
- }
-
- /**
- * sets the source location
- *
- * @param string $source path of this file relative to program root
- *
- * @return void
- */
- function setSourceLocation($source)
- {
- $this->sourceLocation = $source;
- }
-
- /**
- * gets the source location
- *
- * @param Converter $c the output converter
- * @param bool $pearize 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
- * @todo determine if the str_replace in the 'pear/' ELSE branch should be
- * removed (see Documentation/tests/bug1574043.php). It does NOT exist
- * in the similar function parserClass->getSourceLocation() in
- * ParserElements.inc.
- */
- function getSourceLocation ($c, $pearize = false)
- {
- global $_phpDocumentor_options;
- if (!isset($this->sourceLocation)) {
- $sl = false;
- } else {
- $sl = $this->sourceLocation;
- if ($pearize) {
- if (strpos($sl, 'pear/')) {
- $sl = substr($sl, strpos($sl, 'pear/') + 5);
- } else {
- $sl = str_replace($_phpDocumentor_options['Program_Root']
- . PATH_DELIMITER, '', $sl);
- }
- }
- }
- return $sl;
- }
-
- /**
- * Not implemented in this version
- *
- * @return bool 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})
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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();
- /**
- * @var boolean
- * @access private
- */
- var $_hasclasses = false;
- /**
- * @var boolean
- * @access private
- */
- var $_hasinterfaces = false;
- /**
- * 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';
-
- /**
- * add a new element to the tracking array
- *
- * @param parserElement &$element add a parsed element to the
- * {@link $elements} array,
- * also sets {@link $clean} to false
- *
- * @return void
- */
- function addElement(&$element)
- {
- $element->setPath($this->parent->path);
- if ($element->getType() == 'class'
- || $element->getType() == 'method'
- || $element->getType() == 'var'
- || $element->getType() == 'const'
- ) {
- if ($element->getType() == 'class') {
- if ($element->isInterface()) {
- $this->_hasinterfaces = true;
- } else {
- $this->_hasclasses = true;
- }
- }
- $this->classelements[] = $element;
- } else {
- $this->elements[] = $element;
- }
- $this->clean = false;
- }
-
- /**
- * Does this package have interfaces?
- *
- * @return bool
- */
- function hasInterfaces()
- {
- return $this->_hasinterfaces;
- }
-
- /**
- * Does this package have classes?
- *
- * @return boolean
- */
- function hasClasses()
- {
- return $this->_hasclasses;
- }
-
- /**
- * adds a tutorial parser
- *
- * @param parserTutorial $t a tutorial parser
- * @param Converter &$c the output converter
- *
- * @return void
- */
- 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 bool
- */
- function hasExplicitDocBlock()
- {
- return $this->_explicitdocblock;
- }
-
- /**
- * Tells this page that its DocBlock was not implicit
- *
- * @return bool
- */
- function explicitDocBlock()
- {
- $this->_explicitdocblock = true;
- }
-
- /**
- * adds a link
- *
- * @param parserElement &$element element to add a new link (descended from
- * {@link abstractLink}) to the
- * {@link $links} array
- * @param string $classorpackage 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 subpackage name for page elements
- *
- * @return string
- */
- 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;
- }
- }
-
- /**
- * returns a link
- *
- * @param Converter &$c the output converter
- * @param bool $text a text flag
- *
- * @return string
- */
- function &getLink(&$c, $text = false)
- {
- $a = $c->getPageLink($this->parent->file, $this->docblock->package,
- $this->parent->path, $text);
- return $a;
- }
-
- /**
- * returns a list of all classes declared in a file
- *
- * @param Converter &$c output converter
- *
- * @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();
- }
- }
-
- /**
- * sets the parent
- *
- * @param parserPage &$parent parent element of this parsed data
- *
- * @return void
- */
- function setParent(&$parent)
- {
- $this->parent = $parent;
- }
-
- /**
- * checks if the element is "cleaned" already
- *
- * @return bool returns the value of {@link $clean}
- */
- function isClean()
- {
- return $this->clean;
- }
-
- /**
- * sets the docblock
- *
- * @param parserDocBlock &$docblock docblock element
- *
- * @return void
- * @see parserDocBlock
- */
- function setDocBlock(&$docblock)
- {
- $this->docblock = $docblock;
- }
-}
-
-/**
- * Base class for all elements
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- * @abstract
- */
-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;
-
- /**
- * gets the type
- *
- * @return string returns value of {@link $type}
- */
- function getType()
- {
- return $this->type;
- }
-
- /**
- * sets the given value
- *
- * @param mixed $value set the value of this element
- *
- * @return void
- */
- function setValue($value)
- {
- $this->value = $value;
- }
-
- /**
- * gets the 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage ParserData
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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 $stringOrInlineTag either a string or a {@link parserInlineTag}
- *
- * @return void
- */
- 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
- *
- * @return bool
- * @tutorial inlinetags.pkg
- */
- 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 source code ready to be highlighted
- *
- * @return void
- */
- 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)
- *
- * @param bool $trim whether to trim the string
- *
- * @return string trimmed value
- * @uses parserInlineTag::getString() removes inline tag length, as it is
- * indeterminate until conversion.
- */
- 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
- *
- * @param Converter &$converter the output converter
- * @param bool $postprocess true if one needs to postprocess
- * @param bool $trim false if the output should not be trimmed
- *
- * @return string
- * @see Converter::returnSee()
- * @todo CS cleanup - rename to convert for camelCase rule
- */
- 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;
- }
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc b/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc
deleted file mode 100755
index f58be00e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc
+++ /dev/null
@@ -1,1488 +0,0 @@
-<?php
-/**
- * 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
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: ParserDescCleanup.inc 286923 2009-08-08 06:00:39Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see Parser, WordParser
- * @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@php.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@php.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;
-
- // beware of infinite loops
- $infiniteLoopCatcher = 0;
- do
- {
- $infiniteLoopCatcher++;
- 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 (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)
- {
- addErrorDie(PDERROR_LOOP_RECURSION_LIMIT_REACHED);
- }
- }
- if (is_object($word) || trim($word) != '')
- {
- $this->p_vars['start'] = false;
- }
-
- if ($infiniteLoopCatcher > 10000) {
- echo PHP_EOL . "FATAL ERROR: Somehow we got into an infinite loop in parserDescCleanup->parse()'s do-while loop...";
- echo PHP_EOL . " The line being parsed was: " . $word . PHP_EOL . PHP_EOL;
- addErrorDie(PDERROR_LOOP_RECURSION_LIMIT_REACHED);
- }
- } 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_string($word) && is_string($this->p_vars['last_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);
- if (!is_object($this->p_vars['list_item'][$this->p_vars['list_count']])) {
- addErrorDie(PDERROR_UL_IN_UL);
- }
- $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->addText('<<');
- $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 (is_string($word) && $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
- if (!isset($this->p_vars['list_item'][$this->p_vars['list_count'] - 1])) {
- addErrorDie(PDERROR_UL_IN_UL);
- }
- $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 (is_string($word) && $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) && (substr($ltrimword,0,2) === '1.' || substr($ltrimword,0,2) === '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>>', 'li>>', '/li>>',
- '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 100755
index 15eb7602..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserDocBlock.inc
+++ /dev/null
@@ -1,1227 +0,0 @@
-<?php
-/**
- * DocBlock Parser Classes
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package phpDocumentor
- * @subpackage ParserDocBlock
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: ParserDocBlock.inc 287886 2009-08-30 05:31:05Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see Parser, WordParser
- * @since 1.0rc1
- */
-/**
- * represents a short or long description in a DocBlock ({@link parserDocBlock})
- * @package phpDocumentor
- * @subpackage ParserDocBlock
- * @author Greg Beaver <cellog@php.net>
- * @since 1.0rc1
- * @version $Id: ParserDocBlock.inc 287886 2009-08-30 05:31:05Z ashnazg $
- */
-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@php.net>
- * @since 1.0rc1
- * @version $Id: ParserDocBlock.inc 287886 2009-08-30 05:31:05Z ashnazg $
- */
-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();
- /**
- * array of {@link parserPropertyTag}, {@link parserPropertyReadTag}, {@link parserPropertyWriteTag}, {@link parserMethodTag} magic tags
- */
- var $properties = 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);
- }
-
- function resetParams()
- {
- $this->params = array();
- }
- /**
- * @param integer $index index of parameter in the {@link $params} array
- * @param string $name name of the parameter to set in the $params array
- * @param string|null $type type of the parameter
- */
- function changeParam($index, $name, $type)
- {
- if ($name === $index) {
- return;
- }
- $this->params[$name] = $this->params[$index];
- unset($this->params[$index]);
- }
-
- /**
- * replaces nameless parameters in the {@link $params} array with their names
- * add @param tags for params in the function with no entry
- * @param array $params Format: array(parameter key =>
- * array(0 => parameter name[,1 => default value][,2 => type hint]),...)
- */
- function updateParams($params)
- {
- $countparams = array_values($params);
- reset($params);
- for($i=0;$i<count($countparams);$i++, next($params))
- {
- if (isset($this->params[$i]))
- {
- $info = current($params);
- $type = isset($info[2]) ? $info[2] : null;
- $this->changeParam($i, key($params), $type);
- $params[key($params)] = false;
- }
- }
- $blank = new parserStringWithInlineTags;
- foreach ($params as $key => $info) {
- if (!$info) {
- continue;
- }
- $type = isset($info[2]) ? $info[2] : null;
- if (!isset($this->params[$info[0]])) {
- $this->addParam($info[0], $type, $blank);
- }
- }
- reset($params);
-
- 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 = empty($value[0]) ? '' : $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;
- $keyword = trim($keyword);
- 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 = trim($value[0]);
- unset($rest[0]);
- $rest = implode($rest,' ');
- } else
- {
- $value = explode("\t",$value[0]);
- if (count($value) - 1)
- {
- $rest = $value;
- $value = trim($value[0]);
- unset($rest[0]);
- $rest = implode($rest,"\t");
- } else $value = trim($value[0]);
- }
- $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\.\x7f-\xff]/', '-', $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))
- {
- $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\.\x7f-\xff]/', '-', $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();
- $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\.\x7f-\xff]/', '-', $value);
- $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);
- usort($this->tags['uses'], array($this, '_sortUses'));
- }
-
- /**
- * Adds a @property(-read or -write) or @method magic tag to the DocBlock
- */
- function addProperty( $tagName, $propertyName, $propertyType, $value )
- {
- if ( empty( $propertyName ) )
- {
- addWarning ( PDERROR_MISSING_PROPERTY_TAG_NAME, $tagName, $tagName, $propertyType, $value->getString() );
- }
- else
- {
- switch ( $tagName )
- {
- case 'property':
- $this->properties[ $propertyName ] = new parserPropertyTag( $propertyType, $value );
- break;
- case 'property-read':
- $this->properties[ $propertyName ] = new parserPropertyReadTag( $propertyType, $value );
- break;
- case 'property-write':
- $this->properties[ $propertyName ] = new parserPropertyWriteTag( $propertyType, $value );
- break;
- case 'method':
- $this->properties[ $propertyName ] = new parserMethodTag( $propertyType, $value );
- break;
- }
- }
- }
-
- /**
- * Custom sorting function for sorting @uses tags
- *
- * @param parserTag $a
- * @param parserTag $b
- * @access private
- * @return int
- */
- function _sortUses($a, $b)
- {
- return strnatcasecmp($a->getString(), $b->getString());
- }
-
- /**
- * @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();
- }
- }
-
- /**
- * @return array Format: array('var' => tag name, 'data' => unconverted tag value)
- */
- function listProperties()
- {
- $ret = array();
- if (isset($this->properties))
- {
- foreach($this->properties as $key => $val)
- {
- $ret[] = array("var" => ucfirst($key),"data" => $val);
- }
- }
- return $ret;
- }
-
- /**
- * @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';
- }
-}
-
-/**
- * Determines the arbitrary tag rank value for a given tag
- * @access private
- */
-function getTagRanking($tag)
-{
- switch(phpDocumentor_get_class($tag))
- {
- case 'parserreturntag' :
- $o = 0;
- break;
- case 'parservartag' :
- $o = 1;
- break;
- case 'parsertutorialtag' :
- $o = 2;
- break;
- case 'parserstaticvartag' :
- $o = 3;
- break;
- case 'parserseetag' :
- $o = 10;
- break;
- case 'parserlinktag' :
- $o = 11;
- break;
- case 'parsertag' :
- switch ($tag->keyword)
- {
- case 'author' :
- $o = 4;
- break;
- case 'version' :
- $o = 5;
- break;
- case 'copyright' :
- $o = 6;
- break;
- case 'deprecated' :
- case 'deprec' :
- $o = 12;
- break;
- case 'todo' :
- case 'TODO' :
- $o = 13;
- break;
- case 'abstract' :
- $o = 14;
- break;
- default :
- $o = 15;
- break;
- }
- break;
- case 'parseraccesstag' :
- $o = 18;
- break;
- case 'parsernametag' :
- $o = 19;
- break;
- default :
- $o = 20;
- break;
- }
- return $o;
-}
-
-/**
- * Utilizes the getTagRanking method to determine tag sort order of two given tags
- * @access private
- */
-function tagsort($a, $b)
-{
- $returnval = 0;
- $o = getTagRanking($a);
- $p = getTagRanking($b);
- 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 100755
index b0cdf50e..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ParserElements.inc
+++ /dev/null
@@ -1,2287 +0,0 @@
-<?php
-/**
- * Parser Elements, all classes representing documentable elements
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see Parser, WordParser
- * @since 1.1
- */
-
-/**
- * all elements except {@link parserPackagePage} descend from this abstract class
- * @abstract
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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;
- }
-
- /**
- * @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@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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@php.net>
- * @since 1.1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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,'|'))
- {
- $my_types = '';
- $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@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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
- * @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;
- }
- }
-
- /**
- * 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[$key] = $arr;
- } else
- {
- $arr = array($key,false);
- if (isset($val[2]))
- {
- $arr[2] = $val[2];
- }
- $ret[$key] = $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]))
- {
- $link = $converter->getLink('object ' . $param[2]);
- if ($link) {
- $link = $converter->returnSee($link, $param[2], true);
- $b['type'] = $link;
- } else {
- $b['type'] = $param[2];
- }
- }
- $b['name'] = $param[0];
- $b['default'] = $converter->postProcess($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@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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;
-
- /**
- * Get the PHP5+ modifiers for this class
- * (abstract/final/static/private/protected/public)
- * @return array|false
- */
- function getModifiers()
- {
- return $this->_modifiers;
- }
-
- /**
- * Set the PHP5+ modifiers for this class
- * (abstract/final/static/private/protected/public)
- * @param string $m
- */
- 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
- * @param boolean determines whether to search inherited methods as well
- */
- function getMethod(&$c, $name, $inherited = false)
- {
- $ret = $c->classes->getMethod($this->name, $this->curfile, $name);
- if ($ret) return $ret;
- if ($inherited) {
- $x = $this;
- while ($x->parent && is_array($x->parent)) {
- $par = $x->getParent($c);
- $x = $par;
- if ($meth = $x->getMethod($c, $name)) return $meth;
- }
- }
- return false;
- }
-
- /**
- * @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
- * @param boolean determines whether to search inherited methods as well
- * @return boolean whether this class has a method of name $name
- */
- function hasMethod(&$c, $name, $inherited = false)
- {
- $ret = $c->classes->hasMethod($this->name, $this->curfile, $name);
- if ($ret) return $ret;
- if ($inherited) {
- $x = $this;
- while ($x->parent && is_array($x->parent)) {
- $par = $x->getParent($c);
- $x = $par;
- if ($x->hasMethod($c, $name)) return true;
- }
- }
- return false;
- }
-
- /**
- * @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 = $oldx = $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;
- }
- }
- $oldx = $x;
- $x = &$par;
- }
- if (is_a($oldx, 'parserClass') && is_a($oldx->getExtends(true), 'ReflectionClass')) {
- $extends = $oldx->getExtends(true);
- foreach ($extends->getMethods() as $method) {
- $var = new parserMethod($oldx->getExtends());
- if ($method->returnsReference()) {
- $var->setReturnsReference();
- }
- $doc = new parserDocBlock;
- foreach ($method->getParameters() as $param) {
- $value = $param->isDefaultValueAvailable() ? var_export($param->getDefaultValue(), true) : null;
- if ($param->isPassedByReference()) {
- $var->addParam('&$' . $param->getName(), $value, $param->isOptional(),
- $param->getClass());
- } else {
- $var->addParam('$' . $param->getName(), $value, $param->isOptional(),
- $param->getClass());
- }
- }
- $var->setName($method->getName());
- $doc->addPackage('package', $oldx->getPackage());
- $var->setDocBlock($doc);
- $par = $method->getDeclaringClass();
- $var->setLineNumber($par->getStartLine());
- $modifiers = array();
- if ($method->isPrivate()) {
- $modifiers[] = 'private';
- }
- if ($method->isAbstract()) {
- $modifiers[] = 'abstract';
- }
- if ($method->isFinal()) {
- $modifiers[] = 'final';
- }
- if ($method->isProtected()) {
- $modifiers[] = 'protected';
- }
- if ($method->isPublic()) {
- $modifiers[] = 'public';
- }
- if ($method->isStatic()) {
- $modifiers[] = 'static';
- }
- if ($method->isConstructor()) {
- $var->setConstructor();
- }
- $var->setModifiers($modifiers);
- $arr[$oldx->getExtends()]['methods'][] = $var;
- $arr[$oldx->getExtends()]['file'] = '(internal)';
- }
- }
- 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 = $oldx = $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;
- }
- }
- $oldx = $x;
- $x = &$par;
- }
- if (is_a($oldx, 'parserClass') && is_a($oldx->getExtends(true), 'ReflectionClass')) {
- $extends = $oldx->getExtends(true);
- foreach ($extends->getProperties() as $property) {
- $var = new parserVar($oldx->getExtends());
- $doc = new parserDocBlock;
- $var->setName('$' . $property->getName());
- $doc->addPackage('package', $oldx->getPackage());
- $par = $property->getDeclaringClass();
- $var->setLineNumber($par->getStartLine());
- $modifiers = array();
- if ($property->isPrivate()) {
- $modifiers[] = 'private';
- $doc->addAccess('private');
- }
- if ($property->isProtected()) {
- $modifiers[] = 'protected';
- $doc->addAccess('protected');
- }
- if ($property->isPublic()) {
- $modifiers[] = 'public';
- $doc->addAccess('public');
- }
- $var->setDocBlock($doc);
- $var->setModifiers($modifiers);
- $arr[$oldx->getExtends()]['vars'][] = $var;
- $arr[$oldx->getExtends()]['file'] = '(internal)';
- }
- }
- 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 = $oldx = $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;
- }
- }
- $oldx = $x;
- $x = &$par;
- }
- if (is_a($oldx, 'parserClass') && is_a($oldx->getExtends(true), 'ReflectionClass')) {
- $extends = $oldx->getExtends(true);
- if (!$extends->getConstants()) {
- return $arr;
- }
- foreach ($extends->getConstants() as $property => $value) {
- $var = new parserConst($oldx->getExtends());
- $doc = new parserDocBlock;
- $var->setName($property);
- $var->setValue(var_export($value, true));
- $doc->addPackage('package', $oldx->getPackage());
- $var->setLineNumber($extends->getStartLine());
- $var->setDocBlock($doc);
- $arr[$oldx->getExtends()]['consts'][] = $var;
- $arr[$oldx->getExtends()]['file'] = '(internal)';
- }
- }
- 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))
- {
- $sl = false;
- }
- else
- {
- $sl = $this->sourceLocation;
- if ($pearize)
- {
- if (strpos($sl,'pear/'))
- {
- $sl = substr($sl,strpos($sl,'pear/') + 5);
- }
- }
- }
- return $sl;
- }
-
- /**
- * @param string
- * @see $extends
- */
- function setExtends($extends)
- {
- $this->extends = $extends;
- if (!class_exists('ReflectionClass') || !class_exists($extends)) {
- return;
- }
- // this may throw an exception. Hopefully it won't if the class exists
- $parent = new ReflectionClass($extends);
- if (!$parent->isInternal()) {
- return;
- }
- $this->extends = $parent;
- }
-
- /**
- * @param string
- */
- function addImplements($implements)
- {
- $this->_implements[] = $implements;
- }
-
- /**
- * @return array
- */
- function getImplements()
- {
- return $this->_implements;
- }
-
- /**
- * @return boolean
- * @see $extends
- */
- function getExtends($raw = false)
- {
- if (!isset($this->extends)) return false;
- if (!$raw) {
- if (is_a($this->extends, 'ReflectionClass')) {
- return $this->extends->getName();
- }
- }
- return $this->extends;
- }
-}
-
-/**
- * @package phpDocumentor
- * @subpackage ParserElements
- * @author Greg Beaver <cellog@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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 a list of access modifiers (static/private/etc.)
- * @return array
- */
- 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);
-
- if (!is_object($par)) {
- if (is_a($class->getExtends(true), 'ReflectionClass')) {
- $pare = $class->getExtends(true);
- if (method_exists($pare, 'hasProperty') &&
- $pare->hasProperty(substr($this->name, 1))) {
- $par = $pare;
- $property = $par->getProperty(substr($this->name, 1));
- $ret = new parserVar($par->getName());
- $doc = new parserDocBlock;
- $ret->setName('$' . $property->getName());
- $doc->addPackage('package', $class->getPackage());
- $ret->setLineNumber($par->getStartLine());
- $modifiers = array();
- if ($property->isPrivate()) {
- if ($c->parseprivate) {
- return false;
- }
- $modifiers[] = 'private';
- $doc->addAccess('private');
- }
- if ($property->isProtected()) {
- $modifiers[] = 'protected';
- $doc->addAccess('protected');
- }
- if ($property->isPublic()) {
- $modifiers[] = 'public';
- $doc->addAccess('public');
- }
- $ret->setDocBlock($doc);
- $ret->setModifiers($modifiers);
- return $ret;
- }
- }
- }
- 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@php.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@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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);
- if (!is_object($par)) {
- if (is_a($class->getExtends(true), 'ReflectionClass')) {
- $pare = $class->getExtends(true);
- if (method_exists($pare, 'hasMethod') && $pare->hasMethod($this->name)) {
- $par = $pare;
- $method = $par->getMethod($this->name);
- $var = new parserMethod($par->getName());
- if ($method->returnsReference()) {
- $var->setReturnsReference();
- }
- $doc = new parserDocBlock;
- foreach ($method->getParameters() as $param) {
- $value = ($param->isOptional() && !$method->isInternal()) ? var_export($param->getDefaultValue(), true) : null;
- if ($param->isPassedByReference()) {
- $var->addParam('&$' . $param->getName(), $value, $param->isOptional(),
- $param->getClass());
- } else {
- $var->addParam('$' . $param->getName(), $value, $param->isOptional(),
- $param->getClass());
- }
- }
- $var->setName($method->getName());
- $doc->addPackage('package', $this->getPackage());
- $par = $method->getDeclaringClass();
- $var->setLineNumber($par->getStartLine());
- $modifiers = array();
- if ($method->isPrivate()) {
- $modifiers[] = 'private';
- $doc->addAccess('private');
- }
- $blank = new parserStringWithInlineTags;
- if ($method->isAbstract()) {
- $modifiers[] = 'abstract';
- $doc->addKeyword('abstract', $blank);
- }
- if ($method->isFinal()) {
- $modifiers[] = 'final';
- $doc->addKeyword('final', $blank);
- }
- if ($method->isProtected()) {
- $modifiers[] = 'protected';
- $doc->addAccess('protected');
- }
- if ($method->isPublic()) {
- $modifiers[] = 'public';
- $doc->addAccess('public');
- }
- if ($method->isStatic()) {
- $modifiers[] = 'static';
- $doc->addKeyword('static', $blank);
- }
- if ($method->isConstructor()) {
- $var->setConstructor();
- }
- $var->setDocBlock($doc);
- $var->setModifiers($modifiers);
- return $var;
- }
- }
- }
-
- 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;
- }
- /**
- * @param Converter
- * @return mixed {@link parserMethod} representing method this method implements
- * from an interface, or false if none
- */
- function getImplements(&$c)
- {
- $class = $c->classes->getClass($this->class,$this->path);
-
- $implements = $class->getImplements();
- if (!count($implements)) {
- return false;
- }
- $ret = array();
- $haveAlready = array();
- foreach ($implements as $interface) {
- $interface_link = $c->getLink('object ' . $interface);
- if (is_a($interface_link, 'classlink')) {
- $par = $c->classes->getClass($interface_link->name,
- $interface_link->path);
- if (is_object($par)) {
- if ($par->hasMethod($c, $this->name, true))
- {
- $meth = $par->getMethod($c, $this->name);
- if (!$meth) {
- $meth = $par->getMethod($c, $this->name, true);
- }
- if (!($meth->docblock && $meth->docblock->hasaccess &&
- !$c->parseprivate && $meth->docblock->tags['access'][0]->value == 'private')) {
- if (isset($haveAlready[$meth->getClass()])) {
- // this ensures extended interfaces don't cause
- // 2 links to the same method
- if ($haveAlready[$meth->getClass()] == $this->name) {
- continue;
- }
- }
- $ret[] = $meth;
- $haveAlready = array($meth->getClass() => $this->name);
- }
- }
- }
- continue;
- }
- if (class_exists('ReflectionClass')) {
- if (interface_exists($interface)) {
- $info = new ReflectionClass($interface);
- if (method_exists($info, 'hasMethod') && $info->hasMethod($this->name)) {
- $par = $info;
- $method = $par->getMethod($this->name);
- $var = new parserMethod($par->getName());
- if ($method->returnsReference()) {
- $var->setReturnsReference();
- }
- $doc = new parserDocBlock;
- foreach ($method->getParameters() as $param) {
- $value = $param->isOptional() ? var_export($param->getDefaultValue(), true) : null;
- if ($param->isPassedByReference()) {
- $var->addParam('&$' . $param->getName(), $value, $param->isOptional(),
- $param->getClass());
- } else {
- $var->addParam('$' . $param->getName(), $value, $param->isOptional(),
- $param->getClass());
- }
- }
- $var->setName($method->getName());
- $doc->addPackage('package', $this->getPackage());
- $par = $method->getDeclaringClass();
- $var->setLineNumber($par->getStartLine());
- $modifiers = array();
- if ($method->isPrivate()) {
- $modifiers[] = 'private';
- $doc->addAccess('private');
- }
- $blank = new parserStringWithInlineTags;
- if ($method->isAbstract()) {
- $modifiers[] = 'abstract';
- $doc->addKeyword('abstract', $blank);
- }
- if ($method->isFinal()) {
- $modifiers[] = 'final';
- $doc->addKeyword('final', $blank);
- }
- if ($method->isProtected()) {
- $modifiers[] = 'protected';
- $doc->addAccess('protected');
- }
- if ($method->isPublic()) {
- $modifiers[] = 'public';
- $doc->addAccess('public');
- }
- if ($method->isStatic()) {
- $modifiers[] = 'static';
- $doc->addKeyword('static', $blank);
- }
- if ($method->isConstructor()) {
- $var->setConstructor();
- }
- $var->setDocBlock($doc);
- $var->setModifiers($modifiers);
- $ret[] = $var;
- continue;
- }
- }
- }
- }
-
- return $ret;
- }
-
- /**
- * 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@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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@php.net>
- * @since 1.0rc1
- * @version $Id: ParserElements.inc 248547 2007-12-19 02:16:49Z ashnazg $
- */
-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));
- }
-
- /**
- * Determine if this parserTutorial object is a child of another
- *
- * WARNING: This method can enter an infinite loop when run on PHP v5.2.1...
- * see {@link http://bugs.php.net/bug.php?id=40608 PHP Bug #40608}
- * and {@link http://pear.php.net/bugs/bug.php?id=10289 PEAR Bug #10289}
- * @param array $parents array of parserTutorials that have child tutorials
- * @return boolean whether or not this tutorial is a child of the any of the parents
- */
- function isChildOf($parents)
- {
- // avoid infinite loop PHP bug #40608 in PHP v5.2.1, see PEAR #10289
- checkForBugCondition('5.2.1', '40608', '10289');
-
- 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);
- }
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc b/buildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc
deleted file mode 100755
index 21cd4f18..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/ProceduralPages.inc
+++ /dev/null
@@ -1,1067 +0,0 @@
-<?php
-/**
- * Intermediate procedural page parsing structure.
- * This structure parses defines, functions, and global variables by file,
- * and then iterates over the elements to document conflicts.
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: ProceduralPages.inc 253641 2008-02-24 02:35:44Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * Intermediate procedural page parsing structure.
- * This structure parses defines, functions, and global variables by file,
- * and then iterates over the elements to document conflicts.
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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:
- * <pre>
- * array(
- * name => array(
- * fullpath => parserPage,
- * fullpath => parserPage2 [if there are name conflicts],
- * ...
- * )
- * )
- * </pre>
- *
- * @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:
- * <pre>
- * array(
- * name => array(
- * fullpath => parserPage,
- * fullpath => parserPage2 [if there are name conflicts],
- * ...
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $ignorepages = array();
- /**
- * array of all procedural page names ordered by full path to the file
- * Format:
- * <pre>
- * array(
- * fullpath => name
- * )
- * </pre>
- *
- * @var array
- */
- var $pathpages = array();
- /**
- * array of parsed includes organized by the full path
- * of the file that contains the include.
- * Format:
- * <pre>
- * array(
- * full path => array(
- * includename => {@link parserInclude}
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $includesbyfile = array();
- /**
- * array of parsed functions organized by the full path
- * of the file that contains the function.
- * Format:
- * <pre>
- * array(
- * full path => array(
- * functionname => {@link parserFunction}
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $functionsbyfile = array();
- /**
- * array of parsed defines organized by the full path
- * of the file that contains the define.
- * Format:
- * <pre>
- * array(
- * full path => array(
- * definename => {@link parserDefine}
- * )
- * )
- * </pre>
- *
- * @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:
- * <pre>
- * array(
- * full path => array(
- * globalname => {@link parserGlobal}
- * )
- * )
- * </pre>
- *
- * @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:
- * <pre>
- * array(
- * functionname => array(
- * full path of file containing functionname,
- * full path of file 2 containing functionname,
- * ...
- * )
- * )
- * </pre>
- *
- * @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:
- * <pre>
- * array(
- * definename => array(
- * full path of file containing definename,
- * full path of file 2 containing definename,
- * ...
- * )
- * )
- * </pre>
- *
- * @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:
- * <pre>
- * array(
- * global variablename => array(
- * full path of file containing global variablename,
- * full path of file 2 containing global variablename,
- * ...
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $globalsbynamefile = array();
- /**
- * array of packages ordered by full path
- * Format:
- * <pre>
- * array(
- * fullpath => array(
- * packagename,
- * subpackagename
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $pagepackages = array();
- /**
- * array of packages assigned to classes in a file, ordered by fullpath
- * Format:
- * <pre>
- * array(
- * fullpath => array(
- * packagename => array(
- * subpackagename => 1,
- * subpackagename => 1,
- * ..
- * ),
- * packagename2 => array(...
- * )
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $pageclasspackages = array();
- /**
- * Namespace conflicts within all documented packages of functions
- * Format:
- * <pre>
- * array(
- * functionname => array(
- * full path,
- * full path,
- * ...
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $functionconflicts = array();
- /**
- * Namespace conflicts within all documented pages
- * Format:
- * <pre>
- * array(
- * pagename => array(
- * fullpath,
- * fullpath,
- * ...
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $pageconflicts = array();
- /**
- * Namespace conflicts within all documented packages of functions
- * Format:
- * <pre>
- * array(
- * functionname => array(
- * full path,
- * full path,
- * ...
- * )
- * )
- * </pre>
- *
- * @var array
- */
- var $defineconflicts = array();
- /**
- * Namespace conflicts within all documented packages of functions
- * Format:
- * <pre>
- * array(
- * functionname => array(
- * full path,
- * full path,
- * ...
- * )
- * )
- * </pre>
- *
- * @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 the parser page element
- *
- * @return void
- */
- 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 the parser page element
- *
- * @return void
- */
- function ignorePage(&$element)
- {
- $this->ignorepages[$element->getFile()][$element->getPath()]
- = $this->pages[$element->getFile()][$element->getPath()];
- unset($this->pages[$element->getFile()][$element->getPath()]);
- }
-
- /**
- * gathers path-related info about a given element
- *
- * @param string $path path to the element
- * @param mixed &$c ???
- *
- * @return array|bool an array of path info,
- * or FALSE
- * @todo figure out what &$c is and update the param tag
- */
- 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];
- // fixes [ 1391432 ] Too many underscores in include links.
- $p->name = $p->origName;
- $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);
- $p->name = $p->origName;
-
- 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 the alias
- *
- * @return void
- */
- function setName($name)
- {
- if ($this->pages[$name][$this->curfile]->file == $name) {
- addWarning(PDERROR_NAME_ALIAS_SAME_AS_TARGET,'');
-
- } else {
- $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 the package name
- * @param string $subpackage the subpackage name
- *
- * @return void
- */
- 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 the "include" element object
- *
- * @return void
- */
- function addInclude(&$element)
- {
- $this->includesbyfile[$this->curfile][] = $element;
- }
-
- /**
- * sets up the {@link $functionsbyfile} array using {@link $curfile}
- *
- * @param parserFunction &$element the "function" object
- *
- * @return void
- */
- 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 the "global" element
- *
- * @return void
- */
- 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 the "define" element
- *
- * @return void
- */
- 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 the element to align
- *
- * @return void
- */
- 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
- * @param string $subpackage subpackage name
- *
- * @return void
- */
- function addClassPackageToFile($file, $package, $subpackage)
- {
- 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
- *
- * @return void
- */
- 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.
- *
- * @param mixed &$render the renderer object
- *
- * @return void
- * @access private
- * @todo functions, defines, and globals are coded,
- * but pages section is empty... does it need to be coded?
- */
- 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;
- }
- }
-
- /*
- * @todo does this section still need to be coded???
- */
- 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
- *
- * @param string $name the function name to check
- *
- * @access private
- * @return array|bool Format: (package => {@link parserFunction}
- * of conflicting function)
- * or FALSE if the function is not recorded as a conflict
- */
- 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
- *
- * @param string $name the global name to check
- *
- * @access private
- * @return array|bool Format: (package => {@link parserGlobal}
- * of conflicting global variable)
- * or FALSE if the global is not recorded as a conflict
- */
- 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
- *
- * @param string $name the define name to check
- *
- * @access private
- * @return array|bool Format: (package => {@link parserDefine}
- * of conflicting define)
- * or FALSE if the define is not recorded as a conflict
- */
- 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 the parser
- *
- * @return void
- */
- 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);
- }
- }
- }
- }
-
- /**
- * sets the parser base
- *
- * @param mixed $pbase the parser base
- *
- * @return void
- */
- function setParseBase($pbase)
- {
- $this->_parsedbase = $pbase;
- }
-
- /**
- * checks to see if the parsed file matches the given path
- *
- * @param string $path the path to look for
- * @param string $infile the file to check
- *
- * @return parserPage|bool matched parserPage if found,
- * or FALSE if not 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;
- }
-
- /**
- * Ensures the path to the file is an absolute path
- *
- * @param string $path path to the file
- * @param string $file the file name
- *
- * @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)));
- // remove the current directory
- array_pop($dirfile);
- if (!count($dirfile)) {
- // we were at a top-level dir!
- return false;
- }
- // replace .. with parent dirname
- $path[0] = join($dirfile, '/');
- return join($path, '/');
- } else {
- $path = join($path, '/');
- return array($curdir . PATH_DELIMITER . $path,
- str_replace('\\', '/', PHPDOCUMENTOR_BASE)
- . PATH_DELIMITER . $path);
- }
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc b/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc
deleted file mode 100755
index f0c78eb2..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Publisher.inc
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-/**
- * a class for handling the publishing of data
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2000-2007 Kellin, Joshua Eichorn
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Kellin <passionplay@hotmail.com>
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @copyright 2000-2007 Kellin, Joshua Eichorn
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: Publisher.inc 244033 2007-10-11 03:30:34Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 0.1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * a class for handling the publishing of data
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Kellin <passionplay@hotmail.com>
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @copyright 2000-2007 Kellin, Joshua Eichorn
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to 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()}
- *
- * @return void
- * @todo CS Cleanup - there's no way I can get the &$object desc under 85 chars
- */
- function subscribe($event, &$object)
- {
- $this->subscriber[$event] =& $object;
- }
-
- /**
- * Publish an event
- *
- * @param integer $event see {@link Parser.inc} PARSER_EVENT_* constants
- * @param mixed $data anything the subscribed event handler is expecting
- *
- * @return void
- */
- 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 100755
index db5b722f..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php
+++ /dev/null
@@ -1,978 +0,0 @@
-<?php
-/**
- * This was all in {@link phpdoc.inc}, and now encapsulates the complexity
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @package phpDocumentor
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: Setup.inc.php 258122 2008-04-22 15:48:55Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- */
-error_reporting(E_ALL);
-
-/** ensure top-level PhpDocumentor dir is in include path */
-set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(__FILE__)));
-
-/** 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();
- /**
- * contents of --ignoresymlinks commandline
- * @var boolean
- */
- var $ignoresymlinks = false;
-
- /**
- * 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, $_phpDocumentor_setting;
- if (!function_exists('is_a'))
- {
- print "phpDocumentor requires PHP version 4.2.0 or greater to function";
- exit;
- }
-
- $this->setup = new Io;
- 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'])) {
- $this->readConfigFile($_phpDocumentor_setting['useconfig']);
- }
-
- // 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");
- }
-
- $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();
- $this->setMemoryLimit();
-
- /*
- * NOTE:
- * It is possible for the tokenizer extension to be loaded,
- * but actually be broken in the OS, and therefore not working...
- * the conditional below will NOT recognize this scenario.
- * You can separately run the {@link tokenizer_test.php} to
- * verify that the tokenizer library is working correctly
- * from the OS perspective.
- */
- if (tokenizer_ext) {
- phpDocumentor_out("using tokenizer Parser\n");
- $this->parse = new phpDocumentorTParser;
- } else {
- phpDocumentor_out("No Tokenizer support detected, so using default (slower) Parser..." . PHP_EOL);
-
- if (version_compare(phpversion(), '4.3.0', '<')) {
- phpDocumentor_out(" for faster parsing, recompile PHP with --enable-tokenizer." . PHP_EOL );
- } else {
- phpDocumentor_out(" for faster parsing, recompile PHP without --disable-tokenizer." . PHP_EOL );
- }
-
- $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']);
- }
-
- /**
- * 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($_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();
- }
-
- // set to parse hidden files
- $this->hidden = (isset($_phpDocumentor_setting['hidden'])) ? decideOnOrOff($_phpDocumentor_setting['hidden']) : false;
-
- // set to parse through symlinks
- $this->ignoresymlinks = (isset($_phpDocumentor_setting['ignoresymlinks'])) ? decideOnOrOff($_phpDocumentor_setting['ignoresymlinks']) : false;
-
- // set to parse elements marked private with @access private
- $this->render->setParsePrivate((isset($_phpDocumentor_setting['parseprivate'])) ? decideOnOrOff($_phpDocumentor_setting['parseprivate']) : false);
-
- // set to print warnings when undocumented elements are spotted
- $this->render->setUndocumentedElementWarningsMode((isset($_phpDocumentor_setting['undocumentedelements'])) ? decideOnOrOff($_phpDocumentor_setting['undocumentedelements']) : false);
-
- 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)
- $this->render->setQuietMode((isset($_phpDocumentor_setting['quiet'])) ? decideOnOrOff($_phpDocumentor_setting['quiet']) : false);
-
- // Setup the different classes
- if (isset($_phpDocumentor_setting['templatebase']))
- {
- $this->render->setTemplateBase(trim($_phpDocumentor_setting['templatebase']));
- }
- if (isset($_phpDocumentor_setting['target']) && !empty($_phpDocumentor_setting['target']))
- {
- $this->render->setTargetDir(trim($_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(",",trim($_phpDocumentor_setting['packageoutput']));
- foreach($this->packages as $p => $v)
- {
- $this->packages[$p] = trim($v);
- }
- }
- if (!empty($_phpDocumentor_setting['filename'])) {
- $this->files = trim($_phpDocumentor_setting['filename']);
- }
- if (!empty($_phpDocumentor_setting['directory'])) {
- $this->dirs = trim($_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']);
- }
-
- /**
- * Allow a memory_limit setting in phpDocumentor.ini to override php.ini or default memory limit
- * @todo recognize "K" and "G" in memory_limit settings, rather than just "M"
- */
- function setMemoryLimit() {
- global $_phpDocumentor_options;
- $DEFAULT_MEMORY_SIZE_MINIMUM = 256;
-
- // PhpDoc memory_limit from phpDocumentor.ini overrides all other considerations
- if (isset($_phpDocumentor_options['memory_limit'])) {
- $phpdoc_ini_setting = str_replace('M', '', $_phpDocumentor_options['memory_limit']);
-
- // allow phpdoc.ini to DISABLE the setting via "= -1"
- if ($phpdoc_ini_setting == -1)
- {
- $memory_setting_to_use = $phpdoc_ini_setting;
- $max_mem_log_message = "setting disabled by phpDocumentor.ini...\n";
- }
- else
- {
- $memory_setting_to_use = $phpdoc_ini_setting . "M";
- $max_mem_log_message = "set at " . $memory_setting_to_use . " by phpDocumentor.ini...\n";
- }
- } else {
- $php_ini_setting = str_replace('M', '', ini_get('memory_limit'));
-
- // allow php.ini to DISABLE the setting via "= -1"
- if ($php_ini_setting == -1)
- {
- // allow it to remain disabled
- $memory_setting_to_use = $php_ini_setting;
- $max_mem_log_message = "setting disabled by php.ini...\n";
- }
- else
- {
- // memory_limit from php.ini must be at least the default minimum
- $memory_setting_to_use = ($php_ini_setting > $DEFAULT_MEMORY_SIZE_MINIMUM) ? $php_ini_setting . "M" : $DEFAULT_MEMORY_SIZE_MINIMUM . "M";
- $max_mem_log_message = "set at " . $memory_setting_to_use . " after considering php.ini...\n";
- }
- }
- if (ini_set("memory_limit", $memory_setting_to_use))
- {
- // PHP had to have been compiled with "--enable-memory-limit" to allow setting the value explicitly
- phpDocumentor_out("Maximum memory usage " . $max_mem_log_message);
- }
- else
- {
- // PHP must not have been compiled with "--enable-memory-limit", so we cannot modify it...
- // no need to notify user of this unless they tried using memory_limit in their phpDocumentor.ini...
- if (isset($phpdoc_ini_setting))
- {
- phpDocumentor_out("Unable to alter memory_limit via your phpDocumentor.ini... perhaps PHP wasn't compiled with \"--enable-memory-limit\"?\n");
- }
- }
- }
-
- function setJavadocDesc()
- {
- $this->parse->eventHandlers[PARSER_EVENT_DOCBLOCK] = 'JavaDochandleDocblock';
- }
-
- function setParsePrivate($flag = true)
- {
- $this->render->setParsePrivate($flag);
- }
-
- function setQuietMode($flag = true)
- {
- $this->render->setQuietMode($flag);
- }
-
- function setUndocumentedElementWarnings($flag = true)
- {
- $this->render->setUndocumentedElementWarnings($flag);
- }
-
- function setTargetDir($target)
- {
- $this->render->setTargetDir($target);
- }
-
- function setTemplateBase($dir)
- {
- $this->render->setTemplateBase($dir);
- }
-
- function setPackageOutput($po)
- {
- $this->packages = explode(",",$po);
- array_map('trim', $this->packages);
- }
-
- function setTitle($ti)
- {
- $this->render = new phpDocumentor_IntermediateParser($ti);
- }
-
- function setFilesToParse($files)
- {
- $this->files = $files;
- }
-
- function setDirectoriesToParse($dirs)
- {
- $this->dirs = $dirs;
- }
-
- function parseHiddenFiles($flag = true)
- {
- $this->hidden = $flag;
- }
-
- 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,true,$this->ignoresymlinks))
- {
- $filelist[] = str_replace('\\','/',$file);
- } else {
- phpDocumentor_out("File $file Ignored\n");
- flush();
- }
- }
- } else
- {
- $dir = 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,true,$this->ignoresymlinks))
- {
- $filelist[] = str_replace('\\','/',$file);
- } else {
- phpDocumentor_out("File $file Ignored\n");
- flush();
- }
- }
- }
- }
- if (!empty($this->dirs))
- {
- $dirs = explode(",",$this->dirs);
- foreach($dirs as $dir)
- {
- $olddir = $dir;
- $dir = realpath($dir);
- if (!$dir) {
- phpDocumentor_out('ERROR: "' . $olddir . '" does not exist, skipping');
- continue;
- }
- $dir = trim($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,$this->ignoresymlinks);
- if (is_array($files))
- {
- foreach($files as $file)
- {
- $file = strtr($file, '\\', '/');
- // file's subpath, relative to $dir
- $file_subpath = str_replace('\\', '/', realpath(dirname($file)));
- $file_subpath = preg_replace('[\\/]', DIRECTORY_SEPARATOR, $file_subpath);
- $file_subpath = preg_replace('~^' . preg_quote($dir, '~') . '~', '', $file_subpath);
-
- if (!$this->setup->checkIgnore(basename($file), $file_subpath, $this->ignore_files,true,$this->ignoresymlinks))
- {
- $filelist[] = $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 "\nERROR: nothing parsed\n";
- exit;
- }
- }
- /**
- * Parse configuration file phpDocumentor.ini
- */
- function parseIni()
- {
- phpDocumentor_out("Parsing configuration file phpDocumentor.ini...\n");
- flush();
- if ('@DATA-DIR@' != '@'.'DATA-DIR@')
- {
- $options = phpDocumentor_parse_ini_file(str_replace('\\','/', '@DATA-DIR@/PhpDocumentor') . PATH_DELIMITER . 'phpDocumentor.ini',true);
- phpDocumentor_out(" (found in " . '@DATA-DIR@/PhpDocumentor' . PATH_DELIMITER . ")...\n");
- } else {
- $options = phpDocumentor_parse_ini_file(str_replace('\\','/',$GLOBALS['_phpDocumentor_install_dir']) . PATH_DELIMITER . 'phpDocumentor.ini',true);
- phpDocumentor_out(" (found in " . $GLOBALS['_phpDocumentor_install_dir'] . PATH_DELIMITER . ")...\n");
- }
-
- 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 */
- if (!defined('PHPDOCUMENTOR_DEBUG')) define("PHPDOCUMENTOR_DEBUG",$options['DEBUG']['PHPDOCUMENTOR_DEBUG']);
- if (!defined('PHPDOCUMENTOR_KILL_WHITESPACE')) 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);
- }
- }
-
- /**
- * Performs character-based validation of Output Converter Template name pieces
- * @param string the name piece (just ONE of either Output, Converter, or Template piece)
- * @param string any extra characters to allow beyond the default character set
- * @return string|bool the clean name, or FALSE if piece is deemed invalid
- * @access private
- */
- function cleanConverterNamePiece($name, $extra_characters_to_allow = '')
- {
- $name = str_replace("\\", "/", $name);
- // security: ensure no opportunity exists to use "../.." pathing in this value
- $name = preg_replace('/[^a-zA-Z0-9' . $extra_characters_to_allow . '_-]/', "", $name);
-
- // absolutely positively do NOT allow two consecutive dots ".."
- if (strpos($name, '..') > -1) $name = false;
- return $name;
- }
-
- /**
- * Figures out what output converter to use
- * @param string Output Converter Template name
- * @access private
- * @global array
- * @uses cleanConverterNamePieces
- * @uses phpDocumentor_out
- */
- 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];
- if (isset($c[$i][0]))
- {
- $a = $this->cleanConverterNamePiece($c[$i][0]);
- }
- else
- {
- $a = false;
- }
- if (isset($c[$i][1]))
- {
- /*
- * must allow "/" due to options like "DocBook/peardoc2"
- */
- $b = $this->cleanConverterNamePiece($c[$i][1], '\/');
- }
- else
- {
- $b = false;
- }
- if (isset($c[$i][2]))
- {
- /*
- * must allow "." due to options like "phpdoc.de"
- * must allow "/" due to options like "DOM/default"
- */
- $d = $this->cleanConverterNamePiece($c[$i][2], '.\/');
- 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);
- }
-}
-
-/**
- * Fuzzy logic to interpret the boolean args' intent
- * @param string the command-line option to analyze
- * @return boolean our best guess of the value's boolean intent
- */
-function decideOnOrOff($value_to_guess = 'NO VALUE WAS PASSED')
-{
- $these_probably_mean_yes = array(
- '', // "--hidden" with no value
- 'on', // "--hidden on"
- 'y', 'yes', // "--hidden y"
- 'true', // "--hidden true"
- '1' // "--hidden 1"
- );
- $best_guess = false; // default to "false", "off", "no", "take a hike"
-
- if (in_array(strtolower(trim($value_to_guess)), $these_probably_mean_yes))
- {
- $best_guess = true;
- }
- return $best_guess;
-}
-
-/**
- * Print parse information if quiet setting is off
- */
-function phpDocumentor_out($string)
-{
- global $_phpDocumentor_setting;
- if ((isset($_phpDocumentor_setting['quiet'])) ? !decideOnOrOff($_phpDocumentor_setting['quiet']) : true)
- {
- print $string;
- }
-
-}
-
-/**
- * Crash in case of known, dangerous bug condition
- *
- * Checks the PHP version that is executing PhpDocumentor,
- * in case a known PHP/PEAR bug condition could be triggered
- * by the PhpDocumentor execution.
- * @param string $php_version the PHP version that contains the bug
- * @param string $php_bug_number the PHP bug number (if any)
- * @param string $pear_bug_number the PEAR bug number (if any)
- */
-function checkForBugCondition($php_version, $php_bug_number = 'none', $pear_bug_number = 'none')
-{
- if (version_compare(phpversion(), $php_version) == 0)
- {
- addErrorDie(PDERROR_DANGEROUS_PHP_BUG_EXISTS, $php_version, $php_bug_number, $pear_bug_number);
- }
-}
-?>
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 9f1a80f3..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/ChangeLog b/buildscripts/PhpDocumentor/phpDocumentor/Smarty-2.6.0/ChangeLog
deleted file mode 100644
index 4dc232e8..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@php.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 234145 2007-04-19 20:20:57Z ashnazg $
-
-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 1860678e..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 f622ee8f..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 6de5e691..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 2f44088c..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 d5e95f5a..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 4699b021..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 e6e82b00..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 198623 2005-10-17 18:37:50Z jeichorn $ */
-/**
- * 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 1c954ffc..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 198623 2005-10-17 18:37:50Z jeichorn $ */
-
-/**
- * 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 a3592001..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 198623 2005-10-17 18:37:50Z jeichorn $ */
-
-/**
- * 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 ec44f8e4..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 7e65a73e..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 999cf593..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 c509ff72..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 eb7188cd..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 f1a28e04..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 8121acf8..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 877886b8..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 452e8dc6..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 6db1dc51..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 a7d37d1a..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 0e368fdd..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 3e1d4c15..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 2ab42811..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 b7cdaf8c..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 38df822c..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 aa391ab3..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 4b316480..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 7429ad98..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 9c6a4919..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 09b50d3b..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 c92454d4..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 01265fb4..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 b03ce78c..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 7ddccc70..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 ad23f043..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 c281ce87..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 12b74620..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 2536c14e..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 d5909a61..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 2452d625..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 3a4b8b2b..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 264e78d2..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 = explode("\r\n\r\n", $content, 2);
-
- $content = $csplit[1];
-
- if(!empty($params['assign_headers'])) {
- $smarty->assign($params['assign_headers'], explode("\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 c146fc19..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 2fcdb4e1..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 1b10653c..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 b80e9bc2..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 dd90e921..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 969c13e6..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 33be01aa..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 f6e3de0c..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 c080d4df..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 d1030a7a..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 d9b42bd0..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 4278b378..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 41d63eda..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 8dc73240..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 49ce655e..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 6a9833c9..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 0c210f08..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 42c8a741..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 dbe26a55..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 35283113..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 8268e396..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 f9d0eed9..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 0a106b03..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 552c3e19..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 ee374233..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 5a9b7445..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 dca02d1b..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 b9cc865e..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 2a43515f..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 dad057f9..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 efd62150..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 0db2f8ae..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 45f1ec14..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 c82b14a3..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 9d9ef356..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 55b4a1df..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 e82acc1c..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 090ee9cd..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 acdd7773..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 a5b4d05c..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 1300e748..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/TutorialHighlightParser.inc
+++ /dev/null
@@ -1,620 +0,0 @@
-<?php
-/**
- * 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
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2003-2007 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2003-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: TutorialHighlightParser.inc 246148 2007-11-14 01:57:04Z ashnazg $
- * @tutorial tags.example.pkg, tags.filesource.pkg
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.3.0
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - PHPCS needs to ignore CVS Id length
- */
-
-/**
- * Highlights source code using {@link parse()}
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2003-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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',
- );
- /**#@-*/
-
- /**
- * advances output to a new line
- *
- * @return void
- * @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
- *
- * @param int $num the line number
- *
- * @return void
- */
- 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.
- *
- * @param string $parse_data blah
- * @param Converter &$converter blah
- * @param false|string $filesourcepath full path to file with @filesource tag,
- * if this is a @filesource parse
- * @param false|integer $linenum starting line number from
- * {@}source linenum}
- *
- * @staticvar integer used for recursion limiting if a handler for
- * an event is not found
- * @return bool
- * @uses setupStates() initialize parser state variables
- * @uses configWordParser() pass $parse_data to prepare retrieval of tokens
- * @todo CS cleanup - unable to get function signature below 85char wide
- */
- 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 (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";
- //DEBUG echo "LINE: " . $this->_line . "\n";
- //DEBUG 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.
- *
- * @param string|array $word token value
- * @param integer $pevent parser event from {@link Parser.inc}
- *
- * @return void
- * @access private
- */
- /**
- * Most tokens only need highlighting, and this method handles them
- *
- * @todo CS cleanup - PHPCS needs to recognize docblock template tags
- */
- 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
- *
- * @todo CS cleanup - PHPCS needs to recognize docblock template tags
- */
- 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.
- *
- * @param string $word the output to add
- * @param bool $preformatted whether or not its preformatted
- *
- * @return void
- * @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 .= $this->_converter->postProcess($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 integer $e an event number
- *
- * @return void
- * @see WordParser
- */
- function configWordParser($e)
- {
- $this->_wp->setSeperator($this->tokens[($e + 100)]);
- }
-
- /**#@+
- * @param string|array $word token value
- * @param integer $pevent parser event from {@link Parser.inc}
- *
- * @return mixed returns false, or the event number
- */
- /**
- * This function checks whether parameter $word is a token
- * for pushing a new event onto the Event Stack.
- *
- * @todo CS cleanup - PHPCS needs to recognize docblock template tags
- */
- 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.
- *
- * @todo CS cleanup - PHPCS needs to recognize docblock template tags
- */
- 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 bool|string $parsedata true if we are highlighting an inline {@}source}
- * tag's output, or the name of class we are going
- * to start from
- *
- * @return void
- * @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('}');
- /**************************************************************/
- }
-
- /**
- * searches for a parser event name based on its number
- *
- * @param int $value the event number
- *
- * @return string|int the event name, or the original value
- */
- 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 100755
index a755d24a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/WordParser.inc
+++ /dev/null
@@ -1,365 +0,0 @@
-<?php
-/**
- * a generic lexer
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2000-2007 Joshua Eichorn
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage WordParsers
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @copyright 2000-2007 Joshua Eichorn
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: WordParser.inc 246145 2007-11-14 01:37:03Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 0.1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * Retrieves tokens from source code for use by the Parser
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage WordParsers
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @copyright 2000-2007 Joshua Eichorn
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see Parser
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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 &$input source code
- *
- * @return void
- */
- 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
- *
- * @param string $word source code
- *
- * @return void
- * @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
- *
- * @return int the position
- */
- function getPos()
- {
- return $this->pos;
- }
-
- /**
- * Unused
- *
- * {@source}
- *
- * @param integer $start starting position
- * @param integer $len length of block to retrieve
- *
- * @return string the requested block of characters
- */
- function getBlock($start, $len)
- {
- return substr($this->data, $start, $len);
- }
-
- /**
- * Sets the list of possible separator tokens
- *
- * @param array &$seps array of strings that separate tokens
- *
- * @return void
- * @uses $wordseperators
- */
- function setSeperator(&$seps)
- {
- $this->wordseperators = &$seps;
- }
-
- /**
- * Set the internal cursor within the source code
- *
- * @param integer $pos the position
- *
- * @return void
- */
- 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 $word token to back up to
- *
- * @return void
- */
- 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 $val flag to return or strip whitespace
- *
- * @return void
- */
- function setWhitespace($val = false)
- {
- $this->returnWhiteSpace = $val;
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc
deleted file mode 100755
index 95740f2a..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/XMLpackagePageParser.inc
+++ /dev/null
@@ -1,644 +0,0 @@
-<?php
-/**
- * Parser for XML DocBook-based phpDocumentor tutorials
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2007 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: XMLpackagePageParser.inc 246143 2007-11-14 01:31:24Z ashnazg $
- * @tutorial tutorials.pkg
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - PHPCS needs to ignore CVS Id length
- */
-/**
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- */
-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 the parse data
- * @param array $tutorial for format, see {@link Io::getTutorials()}
- *
- * @return bool
- * @staticvar integer used for recursion limiting
- * if a handler for an event is not found
- * @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 (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;
- }
-
- /**#@+
- * @param string|parserInlineTag $word token
- * @param integer $token parser event
- * @return void
- * @access private
- * @todo CS cleanup - PHPCS needs to recognize docblock template tags
- */
- /**
- * handler for default events
- */
- function defaultHandler($word, $pevent)
- {
- if (is_string($word) && $this->checkEventPush($word, $pevent)) {
- return;
- }
- }
-
- /**
- * handler for ignore events
- */
- 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 (is_object($word)) {
- $this->p_vars['quote_data'] = $word;
- } else {
- if ($word != "\"") {
- if (!is_object($this->p_vars['quote_data'])) {
- $this->p_vars['quote_data'] .= $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
- *
- * @todo replace commented-out debug lines with debug() func
- */
- 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);
- //DEBUG 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 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 debug("added " . $this->curtag->name .
- //DEBUG " to " . $curtag->name . ' ' . $curtag->id);
- $this->curtag = $curtag;
- } else {
- //DEBUG 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 (is_string($word) && $word == '<![CDATA[') {
- $this->curtag->startCData();
- $this->p_flags['in_cdata'] = true;
- } elseif ($this->p_flags['in_cdata'] &&
- is_string($word) && $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"
- *
- * @todo replace commented-out debug lines with debug() func
- */
- 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
-
- // <!-- id is 'test' -->
- // <refsect1 id="{@id test"}>
- // ...
- // <!-- id is 'test.me' -->
- // <refsect2 id="{@id me}">
- // ...
- // <!-- id is 'test.me.out' -->
- // <refsect3 id="{@id out}">
- // ...
- // <!-- id is 'test.me.out.withexample' -->
- // <example id="{@id 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 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 debug("set gettoc to " . $this->curtag->name .
- //DEBUG ' ' . $value->id);
- $this->_gettoc = $this->curtag;
- }
- }
- $this->curtag->addAttribute($this->p_vars['attrname'], $value);
- unset($this->p_vars['attrname']);
- 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));
- } else {
- $this->wp->setPos($this->wp->getPos() - strlen($word));
- }
- return;
- }
- }
- }
- 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
- *
- * @return void
- * @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(
- '<!--' => PARSER_EVENT_COMMENTBLOCK,
- '<!' => PARSER_EVENT_OUTPHP,
- "</" => PHPDOCUMENTOR_PDP_EVENT_TAG,
- '<?' => PARSER_EVENT_OUTPHP,
- "<" => PHPDOCUMENTOR_PDP_EVENT_TAG,
- '&' => 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}
- *
- * @param mixed $value a value
- *
- * @return mixed the looked up value if found,
- * else the original value
- * @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",
- PHPDOCUMENTOR_PDP_EVENT_COMMENT
- => "PHPDOCUMENTOR_PDP_EVENT_COMMENT",
- PHPDOCUMENTOR_PDP_EVENT_PI
- => "PHPDOCUMENTOR_PDP_EVENT_PI",
- );
- if (isset($lookup[$value])) {
- return $lookup[$value];
- } else {
- return $value;
- }
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php b/buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php
deleted file mode 100644
index 57084493..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/clone.inc.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Object clone method
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: clone.inc.php 243202 2007-09-30 02:08:08Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * Clone an object in PHP 4
- *
- * @param object $obj the object to be cloned
- *
- * @return object the new clone
- * @todo CS cleanup - rename function to PhpDocumentor_clone
- */
-function phpDocumentor_clone($obj)
-{
- return $obj;
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php b/buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php
deleted file mode 100644
index 20dbc898..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/clone5.inc.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * Object clone method
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2006 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: clone5.inc.php 243202 2007-09-30 02:08:08Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- */
-/**
- * Clone an object in PHP 5
- *
- * @param object $obj the object to be cloned
- *
- * @return object the new clone
- * @ignore
- * @todo CS cleanup - rename function to PhpDocumentor_clone
- */
-function phpDocumentor_clone($obj)
-{
- return clone $obj;
-}
-
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/common.inc.php b/buildscripts/PhpDocumentor/phpDocumentor/common.inc.php
deleted file mode 100755
index 10c62568..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/common.inc.php
+++ /dev/null
@@ -1,312 +0,0 @@
-<?php
-/**
- * Common information needed by all portions of the application
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Greg Beaver <cellog@php.net>
- * @copyright 2001-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: common.inc.php 288074 2009-09-05 02:16:26Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @see parserDocBlock, parserInclude, parserPage, parserClass
- * @see parserDefine, parserFunction, parserMethod, parserVar
- * @since 1.0rc1
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - rename constant to TOKENIZER_EXT
- */
-
-/* phpDocumentor version */
-if ('@PEAR-DIR@' != '@'.'PEAR-DIR@') {
- /** @ignore */
- define("PHPDOCUMENTOR_VER", "@VER@");
-} else {
- define("PHPDOCUMENTOR_VER", "1.4.3");
-}
-
-/* phpDocumentor URL */
-define("PHPDOCUMENTOR_WEBSITE", "http://www.phpdoc.org");
-
-// set the correct path delimiter
-define('SMART_PATH_DELIMITER', DIRECTORY_SEPARATOR);
-
-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'));
-
-// determine which "clone" class to set, based on PHP major version
-$cloneClassDir = 'PhpDocumentor' . DIRECTORY_SEPARATOR . 'phpDocumentor';
-$cloneClassFile = 'clone.inc.php';
-if ('@VER@' == '@'.'VER@') {
- // we're _not_ in a PEAR installation
- $cloneClassDir = dirname(__FILE__);
-}
-if (_IN_PHP5) {
- // we _are_ in PHP5
- $cloneClassFile = 'clone5.inc.php';
-}
-require_once $cloneClassDir . DIRECTORY_SEPARATOR . $cloneClassFile;
-
-// make arg arrays available
-if (isset($_SERVER['argv'])) {
- $argv = $_SERVER['argv'];
- $argc = $_SERVER['argc'];
-}
-
-/**
- * used in phpdoc.php and new_phpdoc.php
- *
- * @param string $directory a directory string
- *
- * @return array an array of directory contents
- * @todo CS cleanup - rename function to PhpDocumentor_ConfigFileList
- */
-function phpDocumentor_ConfigFileList($directory)
-{
- $ret = array();
- if (@is_dir($directory)) {
- $ret = array();
-
- // thanks to Jason E Sweat (jsweat@users.sourceforge.net) for fix
- $d = @dir($directory);
-
- 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))
- *
- * @param string $filename full path to the ini file
- * @param bool $process_sections add an associative index
- * for each section [in brackets]
- *
- * @return array
- * @todo CS cleanup - rename function to PhpDocumentor_parse_ini_file
- */
-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;
-}
-
-
-/**
- * construct an "array_key_exists()" method
- * if the runtime PHP version doesn't have one
- *
- * @todo CS Cleanup - can't avoid "prefixed by package" error
- * @todo depend on PHP_Compat for this?
- */
-if (!function_exists('array_key_exists')) {
- /**
- * Determines if a given key exists in a given array
- *
- * @param mixed $key key to search for
- * @param array $search the array of keys to search
- *
- * @return bool whether or not the key was found
- * @ignore
- */
- function array_key_exists($key, $search)
- {
- foreach ($search as $keys => $nul) {
- if ($key == $keys) return true;
- }
- return false;
- }
-}
-
-/**
- * construct an "is_a()" method
- * if the runtime PHP version doesn't have one
- *
- * @todo CS Cleanup - can't avoid "prefixed by package" error
- * @todo depend on PHP_Compat for this?
- */
-if (!function_exists('is_a')) {
- /**
- * Determines if one item "is" an object of the other item
- *
- * @param string $classname the class in question
- * @param string $classquery the "is it a" class
- *
- * @return bool whether or not the class "is" one
- * @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
- *
- * @param string $s the "debug message" string to echo out
- *
- * @return void
- * @todo CS Cleanup - can't avoid "prefixed by package" error
- */
-function debug($s)
-{
- echo "$s\n";
-}
-
-/**
- * Returns a formatted var_dump for debugging purposes.
- *
- * @param string $s string to display
- * @param mixed $v unlimited number of variables to display with var_dump()
- *
- * @return void
- */
-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
- *
- * @param object $object the object to get the classname for
- *
- * @return string the class name of the given object
- * @todo CS cleanup - rename function to PhpDocumentor_get_class
- */
-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 100755
index 5ca7d2de..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/find_phpdoc.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Utility file to locate phpDocumentor for a non-PEAR installation
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2007 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage setup
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: find_phpdoc.php 246330 2007-11-17 03:09:41Z ashnazg $
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change subpackage to Setup
- */
-/**
- * Dummy value
- * @internal CS Exception - logic here necessitates using an unconditional "include"
- */
-@include '';
-// value used to test whether include worked
-return 6;
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc
deleted file mode 100755
index 5f901232..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc
+++ /dev/null
@@ -1,2946 +0,0 @@
-<?php
-/**
- * tokenizer extension-based parser for PHP code
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: phpDocumentorTParser.inc 286921 2009-08-08 05:01:24Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * Tokenizer-based parser for PHP source code
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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_func_param;
- 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_include_value = false;
- var $_pf_in_var = false;
- var $_pf_interface = 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_FUNCTION_PARAM_VAR => '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',
- );
-
- /**
- * Constructor
- *
- */
- 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 the parse data
- * @param string $path the path
- * @param int $base number of directories to drop off the bottom
- * when creating names using path
- * @param bool $packages ???
- *
- * @staticvar int 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(':', '', dirname($path)
- . PATH_DELIMITER . $page->getFile());
- $tmp = explode(PATH_DELIMITER, $name);
- $name = 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 (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";
- }
-
- // $this->_pf_getting_source &&
- // ($pevent == PARSER_EVENT_DOCBLOCK) ||
- // ($pevent == PARSER_EVENT_NOEVENTS))
- if (0) {
- 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);
- }
-
- /**#@+
- * @param string $word the string word
- * @param int $pevent the token constant
- * @access private
- * @return void
- */
-
- /**
- * 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 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;
- }
-
- /**
- * 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 || $e == PARSER_EVENT_LOGICBLOCK
- ) {
- 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;
- unset($this->_accessModifiers);
- }
- 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;
-
- // subtle bug fixed by this, sometimes string from function body
- unset($this->_pv_quote_data); // was picked up by the next function
- // as a default value for a parameter!
- }
- }
-
- /**
- * 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 (($pop = $this->checkEventPop($word, $pevent)) &&
- $pevent == PARSER_EVENT_FUNCTION_PARAM_VAR
- ) {
- // end of [typehint ]$param[= defaultval]
- if (is_string($word) && $word == ')') {
- $this->_wp->backupPos();
- }
- $this->endFunctionParam($word);
- } elseif ($word == '=') {
- // about to parse the default value
- $this->_pf_funcparam_val = true;
- } else {
- if ($this->_pf_funcparam_val) {
- // parsing default value
- 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 {
- // pre-param
- if ($pop) {
- return;
- }
- if (!isset($this->_pv_function_param)) {
- $this->_pv_function_param = '';
- }
- if (is_array($word) && $pevent == PARSER_EVENT_FUNCTION_PARAMS
- ) {
- if ($word[0] == T_STRING || $word[0] == T_ARRAY) {
- // object or array type hint
- $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);
- } elseif ($e1 == PARSER_EVENT_FUNCTION_PARAM_VAR) {
- if (!isset($this->_pv_function_param)) {
- $this->_pv_function_param = '';
- }
- // we just got the $var part of the param
- $this->_pv_function_param .= $word[1];
- }
- }
-
- /**
- * 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 {
- if ($this->_pf_in_include_value && $a == PARSER_EVENT_INCLUDE_PARAMS
- ) {
- /* we're already inside the include value,
- * so an open paren does NOT mean the beginning
- * of "include parameters"...
- * it's just a part of the include's value string...
- * but we've already pushed PARSER_EVENT_INCLUDE_PARAMS
- * onto the stack...
- * we need to pop it off
- * before handleIncludeParams gets called...
- */
- $this->_event_stack->popEvent();
- // also need to keep that open parens...
- $this->_pv_include_value .= $word;
- }
- $this->_pv_include_params_data = '';
- }
- }
-
- if (!empty($this->_pv_include_value)) {
- $this->_pf_in_include_value = true;
- }
-
- 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;
- $this->_pf_in_include_value = false;
- unset($this->_pv_include);
- unset($this->_pv_include_name);
- unset($this->_pv_include_value);
- unset($this->_pv_include_params_data);
- } elseif ($this->_last_pevent == PARSER_EVENT_INCLUDE_PARAMS) {
- // include is part of a larger statement
- // force ending of include
- $this->_event_stack->popEvent();
- $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;
- $this->_pf_in_include_value = 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);
- }
- $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.
- *
- * @todo CS cleanup - rename to javaDoc* for camelCasing rule
- */
- function JavaDochandleDocblock($word, $pevent)
- {
- $this->commonDocBlock($word, $pevent, 'handleJavaDocDesc');
- }
-
- /**
- * Handler for normal DocBlocks
- */
- function handleDocBlock($word, $pevent)
- {
- $this->commonDocBlock($word, $pevent, 'handleDesc');
- }
- /**#@-*/
-
- /**
- * Helper function for {@link handleFunctionParams()}
- *
- * This function adds a new parameter to the parameter list
- *
- * @param string $word the parameter word
- *
- * @return void
- * @access private
- */
- 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;
- }
- }
-
- /**
- * Common DocBlock Handler for both JavaDoc-format and normal DocBlocks
- *
- * @param string $word the word
- * @param int $pevent the parser event
- * @param string $deschandler the handler to use
- *
- * @return void
- * @access private
- */
- 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 {
- // remove leading "* "
- $lines[$i] = substr(trim($lines[$i]), 1);
- }
- }
- // remove empty lines
- if ($lines == array(false)) {
- // prevent PHP 5.2 segfault (see http://bugs.php.net/bug.php?id=39350)
- $lines = array('');
- }
- $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
- *
- * @param string $desc the description
- *
- * @return void
- * @access private
- */
- function handleJavaDocDesc($desc)
- {
- unset($this->_pv_periodline);
- $this->_pf_useperiod = false;
- if (empty($desc)) {
- $desc = array('');
- }
- 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 $desc array of lines containing the description
- * with leading asterisk "*" stripped off.
- *
- * @return void
- * @access private
- */
- 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;
- }
- if (!$this->_pv_docblock->return) {
- $this->_pv_docblock->return = $this->_pv_dtemplate->return;
- }
- if (!$this->_pv_docblock->var) {
- $this->_pv_docblock->var = $this->_pv_dtemplate->var;
- }
- $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 $tags array of lines that contain all @tags
- *
- * @return void
- * @access private
- */
- 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 = trim(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 $value complete code to search for inline tags,
- * if an array, it's an array of strings
- *
- * @return parserStringWithInlineTags
- * @access private
- */
- 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();
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add($value[0]);
- }
- for ($i=1; $i < count($value); $i++) {
- if (substr($value[$i], 0, 1) == '}') {
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add('{@' . substr($value[$i], 1));
- }
- } elseif (substr($value[$i], 0, 2) == '*}') {
- // used for inserting */ in code examples
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $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') {
- if ($this->_pf_internal) {
- addErrorDie(PDERROR_NESTED_INTERNAL);
- }
- $this->_pf_internal = true;
- $value[$i] = substr($save, strlen('internal') + 1);
- if (!$value[$i]) {
- // substr can set this to false
- $value[$i] = '';
- }
- 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);
- if ($priv) {
- $a->add($startval);
- }
- $value[$i] = substr($value[$i], $x + 2);
- 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 ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- 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);
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add($val);
- }
- if ($this->_pf_internal) {
- if (($x = strpos($rest, '}}')) !== false) {
- $value[$i] = $rest;
- $startval = substr($value[$i], 0, $x);
- if ((false !== $startval) && $priv) {
- $a->add($startval);
- }
- $value[$i] = substr($value[$i], $x + 2);
- if (!$value[$i]) {
- $value[$i] = '';
- }
- $this->_pf_internal = false;
- $a->add($value[$i]);
- } else {
- $rest = explode('}}', $rest);
- if ($priv) {
- $a->add(array_shift($rest));
- }
- $this->_pf_internal = false;
- // try this line again without internal
- $value[$i--] = join('}}', $rest);
- continue;
- }
- } else {
- $a->add($rest);
- }
- } else {
- $val = $word . ' ' . $val;
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add('{@' . $val);
- }
- }
- }
- }
- return $a;
- }
-
- /**#@+
- * @param string $name name of the tag
- * @param string $value any parameters passed to the inline tag
- * @access private
- */
- /**
- * Most inline tags require no special processing
- *
- * @return mixed some type of parser_*_InlineTag object
- */
- function handleDefaultInlineTag($name, $value)
- {
- $tag = 'parser' . ucfirst($name) . 'InlineTag';
- return new $tag($value, $value);
- }
-
- /**
- * Handle the inline {@}link} tag
- *
- * @return parserLinkInlineTag
- * @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 name of tag
- * @param array $value all words in the tag that were separated by a space ' '
- * @return void
- */
- /**
- * Most tags only need the value as a string
- *
- * @uses getInlineTags() all tag handlers check their values for inline tags
- * @uses parserDocBlock::addKeyword()
- */
- function defaultTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addKeyword($name, $this->getInlineTags(join(' ', $value)));
- }
-
- /**
- * handles the @example tag
- *
- * @tutorial tags.example.pkg
- * @uses parserDocBlock::addExample()
- */
- function exampleTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addExample($this->getInlineTags(join(' ', $value)),
- $this->_path);
- }
-
- /**
- * handles the @filesource tag
- *
- * @tutorial tags.filesource.pkg
- * @uses phpDocumentorTWordParser::getFileSource() retrieves the source for
- * use in the @filesource tag
- * @uses parserDocBlock::addFileSource()
- */
- function filesourceTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addFileSource($this->_path, $this->_wp->getFileSource());
- }
-
- /**
- * handles the @uses tag
- *
- * @tutorial tags.uses.pkg
- * @uses parserDocBlock::addUses()
- */
- 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)));
- }
-
- /**
- * handles the @author tag
- *
- * @tutorial tags.author.pkg
- * @uses parserDocBlock::addKeyword()
- */
- 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));
- }
-
- /**
- * handles the @package tag
- *
- * @tutorial tags.package.pkg
- * @uses parserDocBlock::setExplicitPackage()
- */
- function packageTagHandler($name, $value)
- {
- if (count($value) && empty($value[0])) {
- $found = false;
- // CRB - I believe this loop is correct in not having a body...
- // I think it is only to determine the $i value needed
- // by the one array_splice() call...
- 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();
- }
-
- /**
- * handles the @category tag
- *
- * @tutorial tags.category.pkg
- * @uses parserDocBlock::setExplicitCategory()
- */
- function categoryTagHandler($name, $value)
- {
- if (count($value) && empty($value[0])) {
- $found = false;
- // CRB - I believe this loop is correct in not having a body...
- // I think it is only to determine the $i value needed
- // by the one array_splice() call...
- 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();
- }
-
- /**
- * handles the @global tag
- *
- * @tutorial tags.global.pkg
- * @uses parserDocBlock::addFuncGlobal()
- */
- function globalTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(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);
- }
- }
-
- /**
- * handles the @staticvar tag
- *
- * @tutorial tags.staticvar.pkg
- * @uses parserDocBlock::addStaticVar()
- */
- function staticvarTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(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));
- }
- }
- }
-
- /**
- * handles the @param tag
- *
- * @tutorial tags.param.pkg
- * @uses parserDocBlock::addParam()
- */
- function paramTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- 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));
- }
- }
- }
-
- /**
- * handles the @return tag
- *
- * @tutorial tags.return.pkg
- * @uses parserDocBlock::addReturn()
- */
- function returnTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- 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));
- }
-
- /**
- * handles the @var tag
- *
- * @tutorial tags.var.pkg
- * @uses parserDocBlock::addVar()
- */
- function varTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@var');
- }
- $type = $info['type'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- $this->$dtype->addVar($type, $this->getInlineTags($desc));
- }
-
- /**
- * Handles @property(-read or -write) and @method magic tags
- *
- * @tutorial tags.method.pkg
- * @tutorial tags.property.pkg
- * @uses parserDocBlock::addProperty()
- */
- function propertyTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@' . $name);
- }
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- $this->$dtype->addProperty($name, $var, $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 $value array of words that were separated by spaces
- * @param bool $checkforvar flag to determine whether to check for the end of a
- * type is defined by a $varname
- *
- * @return bool|array FALSE if there is no value,
- * or an array of Format:
- * <pre>
- * array(
- * 'type' => string,
- * 'var' => false|string variable name,
- * 'desc' => rest of the tag
- * )
- * </pre>
- */
- 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'] = trim($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'] = trim($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 {
- /*
- * check for:
- * variable name ($)
- * var passed by reference (&$)
- * method name (only used by magic method)
- */
- if (substr($value[0], 0, 1) == '$' ||
- substr($value[0], 0, 2) == '&$' ||
- substr($value[0], -2, 2) == '()'
- ) {
- $result['var'] = trim($value[0]);
- array_shift($value);
- } else {
- $result['var'] = false;
- }
- }
- }
- $result['desc'] = join(' ', $value);
- return $result;
- }
-
- /**
- * remove whitespace from a value
- *
- * @param array &$value array of string
- * @param integer $index index to seek non-whitespace to
- *
- * @return void
- */
- function _removeWhiteSpace(&$value, $index)
- {
- if (count($value) > $index && empty($value[$index])) {
- $found = false;
- // CRB - I believe this loop is correct in not having a body...
- // I think it is only to determine the $i value needed
- // by the one array_splice() call...
- 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}
- *
- * @param string $name the global variable to find
- *
- * @return void
- */
- function findGlobal($name)
- {
- $tokens = token_get_all('<?php ' . $name);
- $tokens = array_slice($tokens, 1);
- $this->_wp->findGlobal($tokens);
- $this->_pv_findglobal = $name;
- }
-
- /**
- * this function checks whether parameter $word
- * is a token for pushing a new event onto the Event Stack.
- *
- * @param string $word the word to check
- * @param int $pevent the event to push
- *
- * @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.
- *
- * @param string $word the word to check
- * @param int $pevent the event to pop
- *
- * @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;
- }
- }
-
- /**
- * returns the token from the $word array
- *
- * @param mixed $word the token array
- *
- * @return mixed the token from the array,
- * or FALSE if it's not an array
- */
- function getToken($word)
- {
- if (is_array($word)) {
- return $word[0];
- }
- return false;
- }
-
- /**
- * setup the parser tokens, and the pushEvent/popEvent arrays
- *
- * @return void
- * @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
- *
- * @return void
- */
- 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_VARIABLE => PARSER_EVENT_FUNCTION_PARAM_VAR,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpopEvent[PARSER_EVENT_FUNCTION_PARAMS] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION_PARAM_VAR] =
- 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_FUNCTION_PARAM_VAR] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_FUNCTION_PARAM_VAR] = 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(";");
- }
-
- /**
- * initializes all the setup
- *
- * @param mixed &$data the data parser (?)
- *
- * @return void
- */
- 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 100755
index fb513df7..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTWordParser.inc
+++ /dev/null
@@ -1,386 +0,0 @@
-<?php
-/**
- * tokenizer extension-based lexer for PHP code
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2006 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: phpDocumentorTWordParser.inc 287887 2009-08-30 06:10:55Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - PHPCS needs to ignore CVS Id length
- */
-
-/**
- * Like WordParser, but expects an array of tokens from the tokenizer
- * instead of a string.
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage WordParsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2007 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-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_CONSTANT_ENCAPSED_STRING,
- T_COMMENT,
- T_DOC_COMMENT,
- T_OPEN_TAG,
- T_CLOSE_TAG,
- T_INLINE_HTML,
- T_START_HEREDOC,
- );
- /**
- * @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}}}
- *
- * @param string &$input source code
- *
- * @return void
- */
- 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;
- }
-
- /**
- * loads up next set of source code
- *
- * @return array source code array
- */
- function getSource()
- {
- $source = $this->source;
- $this->source = array();
- $this->getsource = false;
- return $source;
- }
-
- /**
- * gets the source code tokens
- *
- * @return array source code tokens split up by line number
- */
- function getFileSource()
- {
- return $this->_file_source;
- }
-
- /**
- * Begin retrieving source code
- *
- * @param string $word word to add the beginning of source code
- *
- * @return void
- * @access private
- * @todo CS cleanup - rename to retrieveSource for camelCase rule
- */
- 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
- *
- * @param mixed $a first token
- * @param mixed $b second token
- *
- * @return bool whether or not the tokens 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
- *
- * @param array $a array of tokens
- *
- * @return string the resulting 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 (isset($this->_all[$pos]) &&
- !$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 $word full file source code
- *
- * @return void
- */
- 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 $word token to add
- * @param bool $file true if this should be added
- * to {@link $_file_source}
- *
- * @return void
- * @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}
- *
- * @param bool $type true if this is file source,
- * otherwise it is function source
- * @param string|array $word token to add
- *
- * @return void
- * @access private
- * @todo CS cleanup - rename to _setSars for camelCasing rule
- */
- 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.
- *
- * @param array $tokens tokens that represent the global variable definition
- *
- * @return void
- * @uses $_global_search
- */
- function findGlobal($tokens)
- {
- if (!$tokens) {
- unset($this->_global_search);
- } else {
- $this->_global_search = $tokens;
- }
- }
-
- /**
- * backs the parser up to the previous position
- *
- * @return int|void can return a word
- */
- 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");
- }
- }
- }
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc b/buildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc
deleted file mode 100755
index 7fdbaba4..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/phpdoc.inc
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-/**
- * startup file
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2000-2007 Joshua Eichorn, Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2000-2007 Joshua Eichorn, Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: phpdoc.inc 243933 2007-10-10 01:18:25Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 0.1
- * @filesource
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-
-// 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
- */
-require_once "phpDocumentor/Setup.inc.php";
-
-$phpdoc = new phpDocumentor_setup;
-$phpdoc->readCommandLineSettings();
-$phpdoc->setupConverters();
-$phpdoc->createDocs();
-?>
diff --git a/buildscripts/PhpDocumentor/phpdoc b/buildscripts/PhpDocumentor/phpdoc
deleted file mode 100644
index f492c186..00000000
--- a/buildscripts/PhpDocumentor/phpdoc
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * PHP auto documentor, like javadoc
- * If you get an error uses this as a shell script then its been dosified
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2001-2007 Gregory Beaver
- *
- * LICENSE:
- *
- * 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
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @copyright 2000-2007 Joshua Eichorn
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @filesource
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-@ob_end_clean(); // make output from autofind php code disapear
-
-/**
- * utility: determine whether we're in PEAR or not
- * @internal CS Exception- logic here necessitates using an unconditional "include"
- */
-$test = @include "phpDocumentor/find_phpdoc.php";
-if ($test == 6) {
- // find_phpdoc.php returns 6
- include "phpDocumentor/phpdoc.inc";
-} else {
- echo "Error: phpDocumentor not found" . PHP_EOL;
-}
-?>
diff --git a/buildscripts/PhpDocumentor/phpdoc.php b/buildscripts/PhpDocumentor/phpdoc.php
deleted file mode 100644
index a6e8699f..00000000
--- a/buildscripts/PhpDocumentor/phpdoc.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<?php
-/**
- * Original Web Interface to phpDocumentor
- *
- * PHP versions 4 and 5
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @author Juan Pablo Morales <ju-moral@uniandes.edu.co>
- * @author Joshua Eichorn <jeichorn@phpdoc.org>
- * @author Gregory Beaver <cellog@php.net>
- * @author Chuck Burgess <ashnazg@php.net>
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @link http://pear.php.net/package/PhpDocumentor
- * @filesource
- * @todo CS cleanup - change package to PhpDocumentor
- * @deprecated redirects automatically to docbuilder
- * (see {@link docbuilder/index.html})
- */
-?>
-
-<html>
-<head>
-<title>PhpDocumentor (deprecated web interface)</title>
-<META HTTP-EQUIV="Refresh" CONTENT="5; URL=docbuilder/"/>
-</head>
-<body>
-This PhpDocumentor web interface is deprecated...
-you will be redirected to the DocBuilder interface.
-</body>
-</html>
diff --git a/buildscripts/PhpDocumentor/poweredbyphpdoc.gif b/buildscripts/PhpDocumentor/poweredbyphpdoc.gif
deleted file mode 100644
index 80e47255..00000000
--- a/buildscripts/PhpDocumentor/poweredbyphpdoc.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/PhpDocumentor/prado_patch_chm_builder_fix.patch b/buildscripts/PhpDocumentor/prado_patch_chm_builder_fix.patch
deleted file mode 100644
index 4889d501..00000000
--- a/buildscripts/PhpDocumentor/prado_patch_chm_builder_fix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc
-===================================================================
---- phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc (revisione 3068)
-+++ phpDocumentor/Converters/CHM/default/CHMdefaultConverter.inc (copia locale)
-@@ -560,7 +560,7 @@
- */
- function returnSee(&$element, $eltext = false, $with_a = true)
- {
-- if (!$element) return false;
-+ if (!is_object($element) || !$element) return false;
- if (!$with_a) return $this->getId($element, false);
- if (!$eltext)
- {
diff --git a/buildscripts/PhpDocumentor/prado_patch_dot_in_package_name.patch b/buildscripts/PhpDocumentor/prado_patch_dot_in_package_name.patch
deleted file mode 100644
index 8fa78de8..00000000
--- a/buildscripts/PhpDocumentor/prado_patch_dot_in_package_name.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Index: phpDocumentor/ParserDocBlock.inc
-===================================================================
---- phpDocumentor/ParserDocBlock.inc (revisione 3068)
-+++ phpDocumentor/ParserDocBlock.inc (copia locale)
-@@ -752,7 +752,7 @@
- $rest = implode($rest,"\t");
- } else $value = trim($value[0]);
- }
-- $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\x7f-\xff]/', '-', $value);
-+ $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\.\x7f-\xff]/', '-', $value);
- $this->packagedescrip = $this->package = trim($value);
- if (!empty($rest)) $this->packagedescrip = $rest;
- } else
-@@ -789,7 +789,7 @@
- }
- if (!empty($value))
- {
-- $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\x7f-\xff]/', '-', $value);
-+ $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\.\x7f-\xff]/', '-', $value);
- }
- $this->subpackage = trim($value);
- if (!empty($rest)) $this->subpackagedescrip = $rest;
-@@ -806,7 +806,7 @@
- {
- if (!is_string($value))
- $value = $value->getString();
-- $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\x7f-\xff]/', '-', $value);
-+ $value = preg_replace('/[^\[\]0-9\-a-zA-Z_\.\x7f-\xff]/', '-', $value);
- $this->category = $value;
- } else
- {
diff --git a/buildscripts/PhpDocumentor/scripts/add_cvs.php b/buildscripts/PhpDocumentor/scripts/add_cvs.php
deleted file mode 100644
index 8b1145d0..00000000
--- a/buildscripts/PhpDocumentor/scripts/add_cvs.php
+++ /dev/null
@@ -1,153 +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/PhpDocumentor |
-// +------------------------------------------------------------------------+
-// | 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. |
-// +------------------------------------------------------------------------+
-//
-/**
- * CVS file adding iterator
- *
- * This file iterates over a directory, and adds everything to CVS that is
- * found, ignoring any error messages, until all files in each directory
- * and subdirectory have been added to cvs. It then commits the files to cvs
- * @package phpDocumentor
- * @author Greg Beaver <cellog@php.net>
- * @copyright Copyright 2003, Greg Beaver
- * @version 1.0
- */
-/**#@+
- * phpDocumentor include files. If you don't have phpDocumentor, go get it!
- * Your php life will be changed forever
- */
-$dir = realpath(dirname(__FILE__).'/..');
-require_once("$dir/phpDocumentor/common.inc.php");
-require_once("$dir/phpDocumentor/Io.inc");
-/**#@-*/
-
-/**
-* Physical location on this computer of the package to parse
-* @global string $cvsadd_directory
-*/
-$cvsadd_directory = realpath('.');
-/**
-* Comma-separated list of files and directories to ignore
-*
-* This uses wildcards * and ? to remove extra files/directories that are
-* not part of the package or release
-* @global string $ignore
-*/
-$ignore = array('CVS/');
-
-/******************************************************************************
-* Don't change anything below here unless you're adventuresome *
-*******************************************************************************/
-
-/**
- * @global Io $files
- */
-$files = new Io;
-
-$allfiles = $files->dirList($cvsadd_directory);
-/**#@+
- * Sorting functions for the file list
- * @param string
- * @param string
- */
-function sortfiles($a, $b)
-{
- return strnatcasecmp($a['file'],$b['file']);
-}
-
-function 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);
-}
-/**#@-*/
-
-$struc = array();
-foreach($allfiles as $file)
-{
- if ($files->checkIgnore(basename($file),dirname($file),$ignore, false))
- {
-// print 'Ignoring '.$file."<br>\n";
- continue;
- }
- $path = substr(dirname($file),strlen(str_replace('\\','/',realpath($cvsadd_directory)))+1);
- if (!$path) $path = '/';
- $file = basename($file);
- $ext = array_pop(explode('.',$file));
- if (strlen($ext) == strlen($file)) $ext = '';
- $struc[$path][] = array('file' => $file,'ext' => $ext);
-}
-uksort($struc,'strnatcasecmp');
-foreach($struc as $key => $ind)
-{
- usort($ind,'sortfiles');
- $struc[$key] = $ind;
-}
-$tempstruc = $struc;
-$struc = array('/' => $tempstruc['/']);
-$bv = 0;
-foreach($tempstruc as $key => $ind)
-{
- $save = $key;
- if ($key != '/')
- {
- $struc['/'] = setup_dirs($struc['/'], explode('/',$key), $tempstruc[$key]);
- }
-}
-uksort($struc['/'],'mystrucsort');
-/**
- * Recursively add files to cvs
- * @param array the sorted directory structure
- */
-function addToCVS($struc)
-{
- foreach($struc as $dir => $files)
- {
- if ($dir === '/')
- {
- print 'processing '.$dir . "\n";
- addToCVS($struc[$dir]);
- return;
- } else
- {
- if (!isset($files['file']))
- {
- print 'adding '.$dir . "\n";
- system('cvs add '.$dir);
- chdir($dir);
- addToCVS($files);
- chdir('..');
- } else
- {
- print 'adding '.$files['file'] . "\n";
- system('cvs add '.$files['file']);
- system('cvs commit -m "" '.$files['file']);
- }
- }
- }
-}
-addToCVS($struc);
-print "\n".'done';
-?> \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/scripts/create_examples.php b/buildscripts/PhpDocumentor/scripts/create_examples.php
deleted file mode 100644
index ff1863b7..00000000
--- a/buildscripts/PhpDocumentor/scripts/create_examples.php
+++ /dev/null
@@ -1,70 +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/PhpDocumentor |
-// +------------------------------------------------------------------------+
-// | 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. |
-// +------------------------------------------------------------------------+
-//
-// ./phpdoc -d /home/jeichorn/phpdoc -dn phpDocumentor -ti "phpDocumentor generated docs" -td templates/DOM/l0l33t -t /tmp/phpdoc_DOM_l0l33t
-/**
-* This file creates example documentation output of all templates.
-* @package phpDocumentor
-*/
-
-/**
-* Directory the output should go to.
-* Change this variable to an output directory on your computer
-* @global string $output_directory
-*/
-$output_directory = "/tmp";
-/**
-* default package name, used to change all non-included files to this package
-* @global string $base_package
-*/
-$base_package = "phpDocumentor";
-/**
-* Title of the generated documentation
-* @global string $title
-*/
-$title = "phpDocumentor Generated Documentation";
-/**
-* location of the files to parse. Change to a location on your computer.
-* Example:
-* <code>
-* $parse_directory = "/home/jeichorn/phpdoc";
-* </code>
-* @global string $parse_directory
-*/
-$parse_directory = "/you-MUST/change-me/to-fit/your-environment";
-
-/**
-* directories to output examples into.
-* @global array $output
-*/
-$output = array(
- $output_directory.'/docs/phpdoc_default' => 'HTML:default:default',
- $output_directory.'/docs/phpdoc_l0l33t' => 'HTML:default:l0l33t',
- $output_directory.'/docs/phpdoc_phpdoc_de' => 'HTML:default:phpdoc.de',
- $output_directory.'/docs/phpdoc_DOM_default' => 'HTML:default:DOM/default',
- $output_directory.'/docs/phpdoc_DOM_l0l33t' => 'HTML:default:DOM/l0l33t',
- $output_directory.'/docs/phpdoc_DOM_phpdoc_de' => 'HTML:default:DOM/phpdoc.de',
- $output_directory.'/docs/phpdoc_smarty_default' => 'HTML:Smarty:default',
- $output_directory.'/docs/phpdoc_pdf_default' => 'PDF:default:default',
- $output_directory.'/docs/phpdoc_chm_default' => 'CHM:default:default',
- );
-
-foreach($output as $output => $template)
-{
- passthru("./phpdoc -d /home/jeichorn/phpdoc -dn $base_package -ti \"$title\" -td $template -t $output");
-}
diff --git a/buildscripts/PhpDocumentor/scripts/create_package.xml.php b/buildscripts/PhpDocumentor/scripts/create_package.xml.php
deleted file mode 100644
index afc6ddbd..00000000
--- a/buildscripts/PhpDocumentor/scripts/create_package.xml.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-set_time_limit(0);
-require_once('PEAR/PackageFileManager.php');
-require_once('PEAR/PackageFileManager2.php');
-PEAR::setErrorHandling(PEAR_ERROR_DIE);
-
-$packagedir = dirname(dirname(__FILE__));
-$notes = '
-Includes these PEAR items:
- * Bug #11654: @static in DocBlock Template can cause PHP Notice [ashnazg|mvriel]
- * Bug #11813: @link URL short description does&apos;nt work [ashnazg]
- * Bug #13800: Invalid tutorials tree generation [ashnazg|wrzasq]
- * Bug #14191: earthli template contains bad HTML [ashnazg|jorrit]
- * Bug #14472: Incorrect line numbers with heredoc [ashnazg|indigo]
- * Bug #15517: Wrong table of contents in tutorials [ashnazg]
- * Bug #16431: Warning: get_class() expects parameter 1 to be object, string given [ashnazg|aharvey]
- * Bug #16441: Parse error when parsing &lt;&lt;foo&gt;&gt; [ashnazg|marcusson]
- * Bug #16446: Use of split() causes E_DEPRECATED warnings [ashnazg|aharvey]
- * Feature #13599: Third Gotcha on Bare Minimum Tutorial example [ashnazg]
- * Feature #14312: @param tag with additional arguments doesn&apos;t work as expected [ashnazg]
- * Feature #14461: Data Type Confusion for Some Tags [ashnazg]
-
-
-Includes these Sourceforge items:
-* [2692032] use of templatebase - missing information [ashnazg]
-* [2669256] get_class() expects parameter 1 to be object, string given [ashnazg]
-* [2669110] ereg / split is deprecated [ashnazg]
-* [1940914] Tutorials tree is added to tutorials which have no children [ashnazg|wrzasq]
-* [1929926] Default version number not updated [ashnazg]
-* [1918851] @toc render is wrong in earthli tutorial_toc.tpl [ashnazg]
-* [1903136] Constant Link not worked [ashnazg|scholesmafia]
-* [1771553] @link URL short description does\'nt work [ashnazg]
-
-';
-$version = '1.4.3';
-$release_stability = 'stable';
-$api = '1.4.0';
-$api_stability = 'stable';
-$options = array(
-'baseinstalldir' => 'PhpDocumentor',
-'version' => $version,
-'packagedirectory' => $packagedir,
-'filelistgenerator' => 'cvs',
-'notes' => $notes,
-'package' => 'PhpDocumentor',
-'dir_roles' => array(
- 'Documentation' => 'doc',
- 'docbuilder' => 'data',
- 'HTML_TreeMenu-1.1.2' => 'data',
- 'tutorials' => 'doc',
- 'tests' => 'test',
- ),
-'simpleoutput' => true,
-'exceptions' =>
- array(
- 'index.html' => 'data',
- 'README' => 'doc',
- 'ChangeLog' => 'doc',
- 'LICENSE' => 'doc',
- 'poweredbyphpdoc.gif' => 'data',
- 'INSTALL' => 'doc',
- 'FAQ' => 'doc',
- 'Authors' => 'doc',
- 'Release-1.4.3' => 'doc',
- 'pear-phpdoc' => 'script',
- 'pear-phpdoc.bat' => 'script',
- 'HTML_TreeMenu-1.1.2/TreeMenu.php' => 'php',
- 'phpDocumentor/Smarty-2.6.0/libs/debug.tpl' => 'php',
- 'new_phpdoc.php' => 'data',
- 'phpdoc.php' => 'data',
- 'scripts/makedoc.sh' => 'php',
- ),
-'ignore' =>
- array('package.xml',
- '*templates/PEAR/*',
- ),
-'installexceptions' => array('pear-phpdoc' => '/', 'pear-phpdoc.bat' => '/'),
-);
-$pfm2 = PEAR_PackageFileManager2::importOptions(dirname(dirname(__FILE__))
- . DIRECTORY_SEPARATOR . 'package.xml', array_merge($options, array('packagefile' => 'package.xml')));
-$pfm2->setReleaseVersion($version);
-$pfm2->setReleaseStability($release_stability);
-$pfm2->setAPIVersion($api);
-$pfm2->setAPIStability($api_stability);
-$pfm2->setLicense('LGPL', 'http://www.opensource.org/licenses/lgpl-license.php');
-$pfm2->setNotes($notes);
-$pfm2->clearDeps();
-$pfm2->setPhpDep('4.2.0');
-$pfm2->setPearinstallerDep('1.4.6');
-$pfm2->addPackageDepWithChannel('optional', 'XML_Beautifier', 'pear.php.net', '1.1');
-$pfm2->addReplacement('pear-phpdoc', 'pear-config', '@PHP-BIN@', 'php_bin');
-$pfm2->addReplacement('pear-phpdoc.bat', 'pear-config', '@PHP-BIN@', 'php_bin');
-$pfm2->addReplacement('pear-phpdoc.bat', 'pear-config', '@BIN-DIR@', 'bin_dir');
-$pfm2->addReplacement('pear-phpdoc.bat', 'pear-config', '@PEAR-DIR@', 'php_dir');
-$pfm2->addReplacement('pear-phpdoc.bat', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('README', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('README', 'package-info', '@STABILITY@', 'state');
-$pfm2->addReplacement('docbuilder/includes/utilities.php', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('docbuilder/builder.php', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('docbuilder/file_dialog.php', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('docbuilder/file_dialog.php', 'pear-config', '@WEB-DIR@', 'data_dir');
-$pfm2->addReplacement('docbuilder/actions.php', 'pear-config', '@WEB-DIR@', 'data_dir');
-$pfm2->addReplacement('docbuilder/top.php', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('docbuilder/config.php', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('docbuilder/config.php', 'pear-config', '@WEB-DIR@', 'data_dir');
-$pfm2->addReplacement('phpDocumentor/Setup.inc.php', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('phpDocumentor/Converter.inc', 'pear-config', '@DATA-DIR@', 'data_dir');
-$pfm2->addReplacement('phpDocumentor/Classes.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/DescHTML.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/DocBlockTags.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/Errors.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/EventStack.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/common.inc.php', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/common.inc.php', 'pear-config', '@PEAR-DIR@', 'php_dir');
-$pfm2->addReplacement('phpDocumentor/HighlightParser.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/InlineTags.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/IntermediateParser.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/IntermediateParser.inc', 'pear-config', '@PEAR-DIR@', 'php_dir');
-$pfm2->addReplacement('phpDocumentor/LinkClasses.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/PackagePageElements.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/ParserData.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/phpDocumentorTParser.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/phpDocumentorTWordParser.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/ProceduralPages.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/Publisher.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/TutorialHighlightParser.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/WordParser.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('phpDocumentor/XMLpackagePageParser.inc', 'package-info', '@VER@', 'version');
-$pfm2->addReplacement('user/pear-makedocs.ini', 'pear-config', '@PEAR-DIR@', 'php_dir');
-$pfm2->addReplacement('user/pear-makedocs.ini', 'pear-config', '@DOC-DIR@', 'doc_dir');
-$pfm2->addReplacement('user/pear-makedocs.ini', 'package-info', '@VER@', 'version');
-$pfm2->addRole('inc', 'php');
-$pfm2->addRole('sh', 'script');
-$pfm2->addUnixEol('pear-phpdoc');
-$pfm2->addUnixEol('phpdoc');
-$pfm2->addWindowsEol('pear-phpdoc.bat');
-$pfm2->addWindowsEol('phpdoc.bat');
-$pfm2->generateContents();
-$pfm2->setPackageType('php');
-$pfm2->addRelease();
-$pfm2->setOsInstallCondition('windows');
-// these next few files are only used if the archive is extracted as-is
-// without installing via "pear install blah"
-$pfm2->addIgnoreToRelease("phpdoc");
-$pfm2->addIgnoreToRelease('phpdoc.bat');
-$pfm2->addIgnoreToRelease('user/makedocs.ini');
-$pfm2->addIgnoreToRelease('scripts/makedoc.sh');
-$pfm2->addInstallAs('pear-phpdoc', 'phpdoc');
-$pfm2->addInstallAs('pear-phpdoc.bat', 'phpdoc.bat');
-$pfm2->addInstallAs('user/pear-makedocs.ini', 'user/makedocs.ini');
-$pfm2->addRelease();
-// these next two files are only used if the archive is extracted as-is
-// without installing via "pear install blah"
-$pfm2->addIgnoreToRelease("phpdoc");
-$pfm2->addIgnoreToRelease('phpdoc.bat');
-$pfm2->addIgnoreToRelease('user/makedocs.ini');
-$pfm2->addIgnoreToRelease('pear-phpdoc.bat');
-$pfm2->addInstallAs('pear-phpdoc', 'phpdoc');
-$pfm2->addInstallAs('user/pear-makedocs.ini', 'user/makedocs.ini');
-if (isset($_GET['make']) || (isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == 'make')) {
- $pfm2->writePackageFile();
-} else {
- $pfm2->debugPackageFile();
-}
-if (!isset($_GET['make']) && !(isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == 'make')) {
- echo '<a href="' . $_SERVER['PHP_SELF'] . '?make=1">Make this file</a>';
-}
-?>
diff --git a/buildscripts/PhpDocumentor/scripts/makedoc.sh b/buildscripts/PhpDocumentor/scripts/makedoc.sh
deleted file mode 100644
index 4a0e51de..00000000
--- a/buildscripts/PhpDocumentor/scripts/makedoc.sh
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/bash
-# $Id: makedoc.sh,v 1.2 2007-12-10 01:11:19 ashnazg Exp $
-
-#/**
-# * makedoc - PHPDocumentor script to save your settings
-# *
-# * Put this file inside your PHP project homedir, edit its variables and run whenever you wants to
-# * re/make your project documentation.
-# *
-# * The version of this file is the version of PHPDocumentor it is compatible.
-# *
-# * It simples run phpdoc with the parameters you set in this file.
-# * NOTE: Do not add spaces after bash variables.
-# *
-# * @copyright makedoc.sh is part of PHPDocumentor project {@link http://freshmeat.net/projects/phpdocu/} and its LGPL
-# * @author Roberto Berto <darkelder (inside) users (dot) sourceforge (dot) net>
-# * @version Release-1.1.0
-# */
-
-
-##############################
-# should be edited
-##############################
-
-#/**
-# * title of generated documentation, default is 'Generated Documentation'
-# *
-# * @var string TITLE
-# */
-TITLE="Your Project Documentation"
-
-#/**
-# * name to use for the default package. If not specified, uses 'default'
-# *
-# * @var string PACKAGES
-# */
-PACKAGES="yourProject"
-
-#/**
-# * name of a directory(s) to parse directory1,directory2
-# * $PWD is the directory where makedoc.sh
-# *
-# * @var string PATH_PROJECT
-# */
-PATH_PROJECT=$PWD
-
-#/**
-# * path of PHPDoc executable
-# *
-# * @var string PATH_PHPDOC
-# */
-PATH_PHPDOC=~/phpdoc/phpdoc
-
-#/**
-# * where documentation will be put
-# *
-# * @var string PATH_DOCS
-# */
-PATH_DOCS=$PWD/docs
-
-#/**
-# * what outputformat to use (html/pdf)
-# *
-# * @var string OUTPUTFORMAT
-# */
-OUTPUTFORMAT=HTML
-
-#/**
-# * converter to be used
-# *
-# * @var string CONVERTER
-# */
-CONVERTER=Smarty
-
-#/**
-# * template to use
-# *
-# * @var string TEMPLATE
-# */
-TEMPLATE=default
-
-#/**
-# * parse elements marked as private
-# *
-# * @var bool (on/off) PRIVATE
-# */
-PRIVATE=off
-
-# make documentation
-"$PATH_PHPDOC" -d "$PATH_PROJECT" -t "$PATH_DOCS" -ti "$TITLE" -dn $PACKAGES \
--o $OUTPUTFORMAT:$CONVERTER:$TEMPLATE -pp $PRIVATE
-
-
-# vim: set expandtab :
diff --git a/buildscripts/PhpDocumentor/scripts/tokenizer_test.php b/buildscripts/PhpDocumentor/scripts/tokenizer_test.php
deleted file mode 100644
index e7c5748a..00000000
--- a/buildscripts/PhpDocumentor/scripts/tokenizer_test.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * @package tests
- */
-/**
-$fp = fopen("../phpDocumentor/Converter.inc","r");
-$file = fread($fp,filesize("../phpDocumentor/Converter.inc"));
-fclose($fp);
-*/
-$file = "
-<?php
- function &newSmarty()
- {
- 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 = new Smarty;
- \$templ->template_dir = \$this->smarty_dir . PATH_DELIMITER . 'templates';
- \$templ->compile_dir = \$this->smarty_dir . PATH_DELIMITER . 'templates_c';
- \$templ->config_dir = \$this->smarty_dir . PATH_DELIMITER . 'configs';
- \$templ->assign(\"packageindex\",\$this->package_index);
- \$templ->assign(\"phpdocversion\",PHPDOCUMENTOR_VER);
- \$templ->assign(\"phpdocwebsite\",PHPDOCUMENTOR_WEBSITE);
- \$templ->assign(\"package\",\$this->package);
- \$templ->assign(\"subdir\",'');
- return \$templ;
- }
-?>
-";
-$tokens = token_get_all($file);
-
-$nl_check = array(T_WHITESPACE,T_ENCAPSED_AND_WHITESPACE,T_COMMENT,T_DOC_COMMENT,T_OPEN_TAG,T_CLOSE_TAG,T_INLINE_HTML);
-print '<pre>';
-$line = 0;
-foreach($tokens as $key => $val)
-{
- if (is_array($val))
- {
- // seeing if we can get line numbers out of the beast
- if (in_array($val[0],$nl_check))
- {
- $line+=substr_count($val[1],"\n");
- }
- echo token_name($val[0])." => ".htmlentities($val[1])."\n";
- }
- else
- {
- echo "*** $val\n";
- }
-}
-echo "$line\n";
-print '</pre>';
-?>
diff --git a/buildscripts/PhpDocumentor/user/default.ini b/buildscripts/PhpDocumentor/user/default.ini
deleted file mode 100644
index 9b5714f2..00000000
--- a/buildscripts/PhpDocumentor/user/default.ini
+++ /dev/null
@@ -1,101 +0,0 @@
-;; phpDocumentor parse configuration file
-;;
-;; This file is designed to cut down on repetitive typing on the command-line or web interface
-;; You can copy this file to create a number of configuration files that can be used with the
-;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web
-;; interface will automatically generate a list of .ini files that can be used.
-;;
-;; default.ini is used to generate the online manual at http://www.phpdoc.org/docs
-;;
-;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
-;;
-;; Copyright 2002, Greg Beaver <cellog@php.net>
-;;
-;; WARNING: do not change the name of any command-line parameters, phpDocumentor will ignore them
-
-[Parse Data]
-;; title of all the documentation
-;; legal values: any string
-title = phpDocumentor Manual
-
-;; parse files that start with a . like .bash_profile
-;; legal values: true, false
-hidden = false
-
-;; show elements marked @access private in documentation by setting this to on
-;; legal values: on, off
-parseprivate = off
-
-;; parse with javadoc-like description (first sentence is always the short description)
-;; legal values: on, off
-javadocdesc = off
-
-;; add any custom @tags separated by commas here
-;; legal values: any legal tagname separated by commas.
-;customtags = mytag1,mytag2
-
-;; This is only used by the XML:DocBook/peardoc2 converter
-defaultcategoryname = Documentation
-
-;; what is the main package?
-;; legal values: alphanumeric string plus - and _
-defaultpackagename = phpDocumentor
-
-;; output any parsing information? set to on for cron jobs
-;; legal values: on
-;quiet = on
-
-;; parse a PEAR-style repository. Do not turn this on if your project does
-;; not have a parent directory named "pear"
-;; legal values: on/off
-;pear = on
-
-;; where should the documentation be written?
-;; legal values: a legal path
-;target = /home/cellog/output
-target = /you-MUST/change-me/to-fit/your-environment
-
-;; Which files should be parsed out as special documentation files, such as README,
-;; INSTALL and CHANGELOG? This overrides the default files found in
-;; phpDocumentor.ini (this file is not a user .ini file, but the global file)
-readmeinstallchangelog = README, INSTALL, FAQ, LICENSE, Release-1.4.0
-
-;; limit output to the specified packages, even if others are parsed
-;; legal values: package names separated by commas
-;packageoutput = package1,package2
-
-;; comma-separated list of files to parse
-;; legal values: paths separated by commas
-;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory
-
-;; comma-separated list of directories to parse
-;; legal values: directory paths separated by commas
-;directory = /path1,/path2,.,..,subdirectory
-;directory = /home/jeichorn/cvs/pear
-;directory = /home/cellog/workspace/phpdoc
-directory = /you-MUST/also-change-me/to-fit/your-environment
-
-;; template base directory (the equivalent directory of <installdir>/phpDocumentor)
-;templatebase = /path/to/my/templates
-
-;; directory to find any example files in through @example and {@example} tags
-;examplesdir = /path/to/my/templates
-
-;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
-;; legal values: any wildcard strings separated by commas
-;; remember, this pathing is RELATIVE to the top-most directory in your "directory" value
-;ignore = path/to/ignore*,*list.php,myfile.php,subdirectory/
-ignore = pear-*,templates/,Documentation/,test*.php,Lexer.inc
-
-;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
-;; legal values: HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib,
-;; HTML:frames:earthli,
-;; HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,
-;; HTML:frames:DOM/phphtmllib,HTML:frames:DOM/earthli
-;; HTML:Smarty:default,HTML:Smarty:PHP,HTML:Smarty:HandS
-;; PDF:default:default,CHM:default:default,XML:DocBook/peardoc2:default
-output=HTML:frames:earthli,HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib,HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,HTML:frames:DOM/earthli,HTML:frames:DOM/phphtmllib,HTML:frames:phpedit,HTML:Smarty:default,HTML:Smarty:PHP,HTML:Smarty:HandS
-
-;; turn this option on if you want highlighted source code for every file
-;; legal values: on/off
-sourcecode = on
diff --git a/buildscripts/PhpDocumentor/user/demo.ini b/buildscripts/PhpDocumentor/user/demo.ini
deleted file mode 100644
index fc4f5baf..00000000
--- a/buildscripts/PhpDocumentor/user/demo.ini
+++ /dev/null
@@ -1,86 +0,0 @@
-;; phpDocumentor demonstration parse configuration file
-;;
-;; RUN THIS FILE FROM THE INSTALL DIRECTORY
-;; CHANGE HERE:
-
-;; where should the documentation be written?
-;; legal values: a legal path
-;target = /home/CelloG/output
-target = /you-MUST/change-me/to-fit/your-environment
-
-
-;; DONT CHANGE BELOW HERE
-;;
-;; This file is designed to cut down on repetitive typing on the command-line or web interface
-;; You can copy this file to create a number of configuration files that can be used with the
-;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web
-;; interface will automatically generate a list of .ini files that can be used.
-;;
-;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
-;;
-;; Copyright 2002, Greg Beaver <cellog@php.net>
-;;
-;; WARNING: do not change the
-
-[Parse Data]
-;; title of all the documentation
-;; legal values: any string
-title = Generated Documentation
-
-;; parse files that start with a . like .bash_profile
-;; legal values: true, false
-hidden = false
-
-;; show elements marked @access private in documentation by setting this to on
-;; legal values: on, off
-parseprivate = off
-
-;; parse with javadoc-like description (first sentence is always the short description)
-;; legal values: on, off
-javadocdesc = off
-
-target=/dev/null
-
-;; add any custom @tags separated by commas here
-;; legal values: any legal tagname separated by commas.
-;customtags = mytag1,mytag2
-
-;; what is the main package?
-;; legal values: alphanumeric string plus - and _
-defaultpackagename = phpDocumentor
-
-;; output any parsing information? set to on for cron jobs
-;; legal values: on
-;quiet = on
-
-;; limit output to the specified packages, even if others are parsed
-;; legal values: package names separated by commas
-;packageoutput = package1,package2
-
-;; comma-separated list of files to parse
-;; legal values: paths separated by commas
-;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory
-filename = test.php
-
-;; comma-separated list of directories to parse
-;; legal values: directory paths separated by commas
-;directory = /path1,/path2,.,..,subdirectory
-;directory = /home/jeichorn/cvs/pear
-;directory = /you-MUST/change-me/to-fit/your-environment
-;directory = .
-
-;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
-;; legal values: any wildcard strings separated by commas
-;; remember, this pathing is RELATIVE to the top-most directory in your "directory" value
-;ignore = path/to/ignore*,*list.php,myfile.php,subdirectory/
-ignore = templates_c/,*HTML/default/*,spec/
-
-;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
-;; legal values: HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib
-;; HTML:frames:phpedit,HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de
-;; HTML:Smarty:default,HTML:Smarty:PHP,PDF:default:default,CHM:default:default,XML:DocBook:default
-output=HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib,HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,HTML:frames:phpedit,HTML:Smarty:default,HTML:Smarty:HandS,HTML:Smarty:PHP,PDF:default:default,XML:DocBook/peardoc2:default,CHM:default:default
-
-;; turn this option on if you want highlighted source code for every file
-;; legal values: on/off
-;sourcecode = on
diff --git a/buildscripts/PhpDocumentor/user/error.ini b/buildscripts/PhpDocumentor/user/error.ini
deleted file mode 100644
index 7fcd7539..00000000
--- a/buildscripts/PhpDocumentor/user/error.ini
+++ /dev/null
@@ -1,84 +0,0 @@
-;; phpDocumentor parse configuration file
-;;
-;; This file is designed to cut down on repetitive typing on the command-line or web interface
-;; You can copy this file to create a number of configuration files that can be used with the
-;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web
-;; interface will automatically generate a list of .ini files that can be used.
-;;
-;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
-;;
-;; Copyright 2002, Greg Beaver <cellog@php.net>
-;;
-;; WARNING: do not change the name of any command-line parameters, phpDocumentor will halt
-
-[Parse Data]
-;; title of all the documentation
-;; legal values: any string
-title = SlateLib Manual
-
-;; parse files that start with a . like .bash_profile
-;; legal values: true, false
-hidden = false
-
-;; show elements marked @access private in documentation by setting this to on
-;; legal values: on, off
-parseprivate = on
-
-;; parse with javadoc-like description (first sentence is always the short description)
-;; legal values: on, off
-javadocdesc = off
-
-;; add any custom @tags separated by commas here
-;; legal values: any legal tagname separated by commas.
-;customtags = mytag1,mytag2
-
-;; This is only used by the XML:DocBook/peardoc2 converter
-defaultcategoryname = Documentation
-
-;; what is the main package?
-;; legal values: alphanumeric string plus - and _
-defaultpackagename = junk
-
-;; output any parsing information? set to on for cron jobs
-;; legal values: on
-;quiet = on
-
-;; parse a PEAR-style repository. Do not turn this on if your project does
-;; not have a parent directory named "pear"
-;; legal values: on/off
-;pear = on
-
-;; where should the documentation be written?
-;; legal values: a legal path
-target = /tmp/docs
-
-;; limit output to the specified packages, even if others are parsed
-;; legal values: package names separated by commas
-;packageoutput = package1,package2
-
-;; comma-separated list of files to parse
-;; legal values: paths separated by commas
-;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory
-
-;; comma-separated list of directories to parse
-;; legal values: directory paths separated by commas
-;directory = /path1,/path2,.,..,subdirectory
-;directory = /home/jeichorn/cvs/pear
-;directory = /home/jeichorn/cvs/slatelib
-directory = /you-MUST/change-me/to-fit/your-environment
-
-;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
-;; legal values: any wildcard strings separated by commas
-;; remember, this pathing is RELATIVE to the top-most directory in your "directory" value
-;ignore = path/to/ignore*,*list.php,myfile.php,subdirectory/
-ignore =
-
-;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
-;; legal values: HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib
-;; HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,HTML:Smarty:default
-;; HTML:Smarty:PHP,PDF:default:default,CHM:default:default,XML:DocBook/peardoc2:default
-output=HTML:Smarty:default,HTML:Smarty:PHP
-
-;; turn this option on if you want highlighted source code for every file
-;; legal values: on/off
-sourcecode = on
diff --git a/buildscripts/PhpDocumentor/user/makedocs.ini b/buildscripts/PhpDocumentor/user/makedocs.ini
deleted file mode 100755
index 229758d5..00000000
--- a/buildscripts/PhpDocumentor/user/makedocs.ini
+++ /dev/null
@@ -1,91 +0,0 @@
-;; phpDocumentor parse configuration file
-;;
-;; This file is designed to cut down on repetitive typing on the command-line or web interface
-;; You can copy this file to create a number of configuration files that can be used with the
-;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web
-;; interface will automatically generate a list of .ini files that can be used.
-;;
-;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
-;;
-;; Copyright 2002, Greg Beaver <cellog@php.net>
-;;
-;; WARNING: do not change the
-
-[Parse Data]
-;; title of all the documentation
-;; legal values: any string
-title = phpDocumentor Manual
-
-;; parse files that start with a . like .bash_profile
-;; legal values: true, false
-hidden = false
-
-;; follow symlinks
-;; legal values: true, false, on, off
-;ignoresymlinks = false
-
-;; show elements marked @access private in documentation by setting this to on
-;; legal values: on, off
-parseprivate = off
-
-;; parse with javadoc-like description (first sentence is always the short description)
-;; legal values: on, off
-javadocdesc = off
-
-;; add any custom @tags separated by commas here
-;; legal values: any legal tagname separated by commas.
-;customtags = mytag1,mytag2
-
-;; what is the main package?
-;; legal values: alphanumeric string plus - and _
-defaultpackagename = phpDocumentor
-
-;; what is main category?
-;; legal values: one alphanumeric "word"
-defaultcategoryname = ToolsAndUtilities
-
-;; output any parsing information? set to on for cron jobs
-;; legal values: on
-;quiet = on
-
-;; capture undocumented elements and list in errors.html
-;; legal values: true, false, on, off
-;undocumentedelements = on
-
-;; where should the documentation be written?
-;; legal values: a legal path
-target = ./Documentation/new
-
-;; limit output to the specified packages, even if others are parsed
-;; legal values: package names separated by commas
-;packageoutput = package1,package2
-
-;; comma-separated list of files to parse
-;; legal values: paths separated by commas
-;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory
-
-;; comma-separated list of directories to parse
-;; legal values: directory paths separated by commas
-;directory = /path1,/path2,.,..,subdirectory
-;directory = /home/jeichorn/cvs/pear
-;directory = /you-MUST/change-me/to-fit/your-environment
-directory = .
-
-;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
-;; legal values: any wildcard strings separated by commas
-;; remember, this pathing is RELATIVE to the top-most directory in your "directory" value
-;ignore = path/to/ignore*,*list.php,myfile.php,subdirectory/
-ignore = templates_c/,*HTML/default/*,spec/,*DocBlock/*,*scripts/*,*AllTests*
-
-;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
-;; legal values: HTML:frames:default,HTML:frames:earthli,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phpedit,HTML:frames:phphtmllib,
-;; HTML:frames:DOM/default,HTML:frames:DOM/earthli,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,HTML:frames:DOM/phphtmllib,
-;; HTML:Smarty:default,HTML:Smarty:PHP,HTML:Smarty:HandS,
-;; PDF:default:default,
-;; CHM:default:default,
-;; XML:DocBook/peardoc2:default
-output=HTML:Smarty:HandS
-
-;; turn this option on if you want highlighted source code for every file
-;; legal values: on/off
-;sourcecode = on
diff --git a/buildscripts/PhpDocumentor/user/pear-makedocs.ini b/buildscripts/PhpDocumentor/user/pear-makedocs.ini
deleted file mode 100644
index 5c5081bc..00000000
--- a/buildscripts/PhpDocumentor/user/pear-makedocs.ini
+++ /dev/null
@@ -1,94 +0,0 @@
-;; phpDocumentor parse configuration file
-;;
-;; This file is designed to cut down on repetitive typing on the command-line or web interface
-;; You can copy this file to create a number of configuration files that can be used with the
-;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web
-;; interface will automatically generate a list of .ini files that can be used.
-;;
-;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
-;;
-;; Copyright 2002, Greg Beaver <cellog@php.net>
-;;
-;; WARNING: do not change the
-
-[Parse Data]
-;; title of all the documentation
-;; legal values: any string
-title = phpDocumentor Manual
-
-;; parse files that start with a . like .bash_profile
-;; legal values: true, false
-hidden = false
-
-;; follow symlinks
-;; legal values: true, false, on, off
-;ignoresymlinks = false
-
-;; show elements marked @access private in documentation by setting this to on
-;; legal values: on, off
-parseprivate = off
-
-;; parse with javadoc-like description (first sentence is always the short description)
-;; legal values: on, off
-javadocdesc = off
-
-;; add any custom @tags separated by commas here
-;; legal values: any legal tagname separated by commas.
-;customtags = mytag1,mytag2
-
-;; what is the main package?
-;; legal values: alphanumeric string plus - and _
-defaultpackagename = phpDocumentor
-
-;; what is main category?
-;; legal values: one alphanumeric "word"
-defaultcategoryname = ToolsAndUtilities
-
-;; output any parsing information? set to on for cron jobs
-;; legal values: on
-;quiet = on
-
-;; capture undocumented elements and list in errors.html
-;; legal values: true, false, on, off
-;undocumentedelements = on
-
-;; where should the documentation be written?
-;; legal values: a legal path
-target = @DOC-DIR@/PhpDocumentor/Documentation/new
-
-;; limit output to the specified packages, even if others are parsed
-;; legal values: package names separated by commas
-;packageoutput = package1,package2
-
-;; comma-separated list of files to parse
-;; legal values: paths separated by commas
-;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory
-;filename = @DOC-DIR@/PhpDocumentor/README,@DOC-DIR@/PhpDocumentor/ChangeLog,@DOC-DIR@/PhpDocumentor/Release-@VER@,@DOC-DIR@/PhpDocumentor/FAQ
-
-;; comma-separated list of directories to parse
-;; legal values: directory paths separated by commas
-;directory = /path1,/path2,.,..,subdirectory
-;directory = /home/jeichorn/cvs/pear
-;directory = /you-MUST/change-me/to-fit/your-environment
-directory = @PEAR-DIR@/PhpDocumentor,@DOC-DIR@/PhpDocumentor
-
-releaseinstallchangelog = Release-@VER@,ChangeLog,README,FAQ,INSTALL,LICENSE,Authors
-
-;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
-;; legal values: any wildcard strings separated by commas
-;; remember, this pathing is RELATIVE to the top-most directory in your "directory" value
-;ignore = path/to/ignore*,*list.php,myfile.php,subdirectory/
-ignore = scripts/,Documentation/
-
-;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
-;; legal values: HTML:frames:default,HTML:frames:earthli,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phpedit,HTML:frames:phphtmllib,
-;; HTML:frames:DOM/default,HTML:frames:DOM/earthli,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,HTML:frames:DOM/phphtmllib,
-;; HTML:Smarty:default,HTML:Smarty:PHP,HTML:Smarty:HandS,
-;; PDF:default:default,
-;; CHM:default:default,
-;; XML:DocBook/peardoc2:default
-output=HTML:Smarty:HandS
-
-;; turn this option on if you want highlighted source code for every file
-;; legal values: on/off
-;sourcecode = on
diff --git a/buildscripts/PhpDocumentor/user/prado.ini b/buildscripts/PhpDocumentor/user/prado.ini
deleted file mode 100644
index f009f873..00000000
--- a/buildscripts/PhpDocumentor/user/prado.ini
+++ /dev/null
@@ -1,79 +0,0 @@
-;; phpDocumentor demonstration parse configuration file
-;;
-;; RUN THIS FILE FROM THE INSTALL DIRECTORY
-;; CHANGE HERE:
-
-;; where should the documentation be written?
-;; legal values: a legal path
-target = d:/wwwroot/prado3-doc
-
-;; DONT CHANGE BELOW HERE
-;;
-;; This file is designed to cut down on repetitive typing on the command-line or web interface
-;; You can copy this file to create a number of configuration files that can be used with the
-;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web
-;; interface will automatically generate a list of .ini files that can be used.
-;;
-;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
-;;
-;; Copyright 2002, Greg Beaver <cellog@users.sourceforge.net>
-;;
-;; WARNING: do not change the
-
-[Parse Data]
-;; title of all the documentation
-;; legal values: any string
-title = PRADO 3.0.1 API Manual
-
-;; parse files that start with a . like .bash_profile
-;; legal values: true, false
-hidden = false
-
-;; show elements marked @access private in documentation by setting this to on
-;; legal values: on, off
-parseprivate = off
-
-;; parse with javadoc-like description (first sentence is always the short description)
-;; legal values: on, off
-javadocdesc = off
-
-target=d:/wwwroot/prado3-doc/manual
-
-;; add any custom @tags separated by commas here
-;; legal values: any legal tagname separated by commas.
-;customtags = mytag1,mytag2
-
-;; what is the main package?
-;; legal values: alphanumeric string plus - and _
-defaultpackagename = default
-
-;; output any parsing information? set to on for cron jobs
-;; legal values: on
-;quiet = on
-
-;; limit output to the specified packages, even if others are parsed
-;; legal values: package names separated by commas
-;packageoutput = package1,package2
-
-;; comma-separated list of files to parse
-;; legal values: paths separated by commas
-;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory
-;filename =
-
-;; comma-separated list of directories to parse
-;; legal values: directory paths separated by commas
-directory = D:/wwwroot/prado3-doc/prado-3.0.1/framework
-;directory = /home/jeichorn/cvs/pear
-;directory = .
-
-;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
-;; legal values: any wildcard strings separated by commas
-;ignore = /path/to/ignore*,*list.php,myfile.php,subdirectory/
-ignore = templates_c/,*HTML/default/*,spec/,*pradolite.php,*3rdParty/*,*Javascripts/*
-
-;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
-;; legal values: HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib
-;; HTML:frames:phpedit,HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de
-;; HTML:Smarty:default,HTML:Smarty:PHP,PDF:default:default,CHM:default:default,XML:DocBook:default
-;;output=HTML:frames:default,CHM:default:default
-output=HTML:Smarty:PradoSoft \ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/user/testdocbook.ini b/buildscripts/PhpDocumentor/user/testdocbook.ini
deleted file mode 100644
index 8ad67e1b..00000000
--- a/buildscripts/PhpDocumentor/user/testdocbook.ini
+++ /dev/null
@@ -1,80 +0,0 @@
-;; phpDocumentor parse configuration file
-;;
-;; This file is designed to cut down on repetitive typing on the command-line or web interface
-;; You can copy this file to create a number of configuration files that can be used with the
-;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web
-;; interface will automatically generate a list of .ini files that can be used.
-;;
-;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini
-;;
-;; Copyright 2002, Greg Beaver <cellog@php.net>
-;;
-;; WARNING: do not change the
-
-[Parse Data]
-;; title of all the documentation
-;; legal values: any string
-title = Generated Documentation
-
-;; parse files that start with a . like .bash_profile
-;; legal values: true, false
-hidden = false
-
-;; show elements marked @access private in documentation by setting this to on
-;; legal values: on, off
-parseprivate = off
-
-pear=on
-
-;; parse with javadoc-like description (first sentence is always the short description)
-;; legal values: on, off
-javadocdesc = off
-
-;; add any custom @tags separated by commas here
-;; legal values: any legal tagname separated by commas.
-;customtags = mytag1,mytag2
-
-;; what is the main package?
-;; legal values: alphanumeric string plus - and _
-defaultpackagename = PEAR_PackageFileManager
-
-defaultcategoryname = pear
-
-;; output any parsing information? set to on for cron jobs
-;; legal values: on
-;quiet = on
-
-;; where should the documentation be written?
-;; legal values: a legal path
-;target = /home/cellog/peardoc/en/package
-target = /you-MUST/change-me/to-fit/your-environment
-
-;; limit output to the specified packages, even if others are parsed
-;; legal values: package names separated by commas
-;packageoutput = package1,package2
-
-;; comma-separated list of files to parse
-;; legal values: paths separated by commas
-;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory
-
-;; comma-separated list of directories to parse
-;; legal values: directory paths separated by commas
-;directory = /path1,/path2,.,..,subdirectory
-;directory = /home/CelloG/phpdoc
-directory = /you-MUST/also-change-me/to-fit/your-environment
-
-;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore
-;; legal values: any wildcard strings separated by commas
-;; remember, this pathing is RELATIVE to the top-most directory in your "directory" value
-;ignore = path/to/ignore*,*list.php,myfile.php,subdirectory/
-ignore = examples/
-
-;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format
-;; legal values: HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib
-;; HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de,HTML:Smarty:default
-;; HTML:Smarty:PHP,PDF:default:default,CHM:default:default,XML:DocBook:default
-output=XML:DocBook/peardoc2:default
-
-;; turn this option on if you want highlighted source code for every file
-;; legal values: on/off
-;sourcecode = on
diff --git a/buildscripts/apigen/pradosoft/404.latte b/buildscripts/apigen/pradosoft/404.latte
new file mode 100644
index 00000000..9d91dafe
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/404.latte
@@ -0,0 +1,23 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $robots = false}
+
+{block #title}Page not found{/block}
+
+{block #content}
+<div id="content">
+ <h1>{include #title}</h1>
+ <p>The requested page could not be found.</p>
+ <p>You have probably clicked on a link that is outdated and points to a page that does not exist any more or you have made an typing error in the address.</p>
+ <p>To continue please try to find requested page in the menu,{if $config->tree} take a look at <a href="tree.html">the tree view</a> of the whole project{/if} or use search field on the top.</p>
+</div>
+{/block}
diff --git a/buildscripts/apigen/pradosoft/@elementlist.latte b/buildscripts/apigen/pradosoft/@elementlist.latte
new file mode 100644
index 00000000..4ffdd5b6
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/@elementlist.latte
@@ -0,0 +1,46 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{define #elements}
+<tr n:foreach="$elements as $element">
+ <td class="name"><a href="{$element|elementUrl}" n:class="$element->deprecated ? deprecated, !$element->valid ? invalid">{if $namespace}{$element->shortName}{else}{$element->name}{/if}</a></td>
+ <td>{!$element|shortDescription}</td>
+</tr>
+{/define}
+
+<table class="summary" id="classes" n:if="$classes">
+<caption>Classes summary</caption>
+{include #elements, elements => $classes}
+</table>
+
+<table class="summary" id="interfaces" n:if="$interfaces">
+<caption>Interfaces summary</caption>
+{include #elements, elements => $interfaces}
+</table>
+
+<table class="summary" id="traits" n:if="$traits">
+<caption>Traits summary</caption>
+{include #elements, elements => $traits}
+</table>
+
+<table class="summary" id="exceptions" n:if="$exceptions">
+<caption>Exceptions summary</caption>
+{include #elements, elements => $exceptions}
+</table>
+
+<table class="summary" id="constants" n:if="$constants">
+<caption>Constants summary</caption>
+{include #elements, elements => $constants}
+</table>
+
+<table class="summary" id="functions" n:if="$functions">
+<caption>Functions summary</caption>
+{include #elements, elements => $functions}
+</table>
diff --git a/buildscripts/apigen/pradosoft/@layout.latte b/buildscripts/apigen/pradosoft/@layout.latte
new file mode 100644
index 00000000..739b00e8
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/@layout.latte
@@ -0,0 +1,197 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{default $robots = true}
+{default $active = ''}
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta name="generator" content="{$generator} {$version}">
+ <meta name="robots" content="noindex" n:if="!$robots">
+
+ <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" />
+
+ <title>{include #title}{if 'overview' !== $active && $config->title} | {$config->title}{/if}</title>
+
+ {var combinedJs = 'resources/combined.js'}
+ <script type="text/javascript" src="{$combinedJs|staticFile}"></script>
+ {var elementListJs = 'elementlist.js'}
+ <script type="text/javascript" src="{$elementListJs|staticFile}"></script>
+ {var styleCss = 'resources/style.css'}
+ <link rel="stylesheet" type="text/css" media="all" href="{$styleCss|staticFile}">
+ <link n:if="$config->googleCseId" rel="search" type="application/opensearchdescription+xml" title="{$config->title}" href="{$config->baseUrl}/opensearch.xml">
+
+ <script n:if="$config->googleAnalytics" type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', {$config->googleAnalytics}]);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</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">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 id="maintable">
+ <tr>
+ <td id="left">
+ <div id="menu">
+ {define #group}
+ <ul>
+ {foreach $groups as $group}
+ {var $nextLevel = substr_count($iterator->nextValue, '\\') > substr_count($group, '\\')}
+ <li n:class="$actualGroup === $group || 0 === strpos($actualGroup, $group . '\\') ? active, $config->main && 0 === strpos($group, $config->main) ? main"><a href="{$group|groupUrl}">{$group|subgroupName}{if $nextLevel}<span></span>{/if}</a>
+ {if $nextLevel}
+ <ul>
+ {else}
+ </li>
+ {if substr_count($iterator->nextValue, '\\') < substr_count($group, '\\')}
+ {!'</ul></li>'|repeat:substr_count($group, '\\') - substr_count($iterator->nextValue, '\\')}
+ {/if}
+ {/if}
+ {/foreach}
+ </ul>
+ {/define}
+
+ <div id="groups">
+ {if $namespaces}
+ <h3>Namespaces</h3>
+ {include #group, groups => $namespaces, actualGroup => $namespace}
+ {elseif $packages}
+ <h3>Packages</h3>
+ {include #group, groups => $packages, actualGroup => $package}
+ {/if}
+ </div>
+
+ {define #elements}
+ <ul>
+ <li n:foreach="$elements as $element" n:class="$activeElement === $element ? active"><a n:class="$element->deprecated ? deprecated, !$element->valid ? invalid" href="{$element|elementUrl}">{if $namespace}{$element->shortName}{else}{$element->name}{/if}</a></li>
+ </ul>
+ {/define}
+ </div>
+</div>
+
+</td>
+<td id="right">
+<div id="rightInner">
+ <form{if $config->googleCseId} action="http://www.google.com/cse"{/if} id="search">
+ <input type="hidden" name="cx" value="{$config->googleCseId}">
+ <input type="hidden" name="ie" value="UTF-8">
+ <input type="hidden" name="more" value="{$config->googleCseLabel}" n:if="$config->googleCseLabel">
+ <input type="text" name="q" class="text"{if 'overview' === $active} autofocus{/if}>
+ <input type="submit" value="Search">
+ </form>
+
+ <div id="navigation">
+ <ul>
+ <li n:class="'overview' === $active ? active">
+ <a n:tag-if="'overview' !== $active" href="index.html" title="Overview"><span>Overview</span></a>
+ </li>
+ <li n:class="'package' === $active ? active" n:if="$packages">
+ <a n:tag-if="'package' !== $active && $package" href="{$package|packageUrl}" title="Summary of {$package}"><span>Package</span></a>
+ </li>
+ <li n:class="'namespace' === $active ? active" n:if="$namespaces">
+ <a n:tag-if="'namespace' !== $active && $namespace" href="{$namespace|namespaceUrl}" title="Summary of {$namespace}"><span>Namespace</span></a>
+ </li>
+ <li n:class="'class' === $active ? active" n:if="!$function && !$constant">
+ <a n:tag-if="'class' !== $active && $class" href="{$class|classUrl}" title="Summary of {$class->name}"><span>Class</span></a>
+ </li>
+ <li n:class="'function' === $active ? active" n:if="$function">
+ <a n:tag-if="'function' !== $active" href="{$function|functionUrl}" title="Summary of {$function->name}"><span>Function</span></a>
+ </li>
+ <li n:class="'constant' === $active ? active" n:if="$constant">
+ <a n:tag-if="'constant' !== $active" href="{$constant|constantUrl}" title="Summary of {$constant->name}"><span>Constant</span></a>
+ </li>
+ </ul>
+ <ul>
+ <li n:class="'tree' === $active ? active" n:if="$config->tree">
+ <a n:tag-if="'tree' !== $active" href="tree.html" title="Tree view of classes, interfaces, traits and exceptions"><span>Tree</span></a>
+ </li>
+ <li n:class="'deprecated' === $active ? active" n:if="$config->deprecated">
+ <a n:tag-if="'deprecated' !== $active" href="deprecated.html" title="List of deprecated elements"><span>Deprecated</span></a>
+ </li>
+ <li n:class="'todo' === $active ? active" n:if="$config->todo">
+ <a n:tag-if="'todo' !== $active" href="todo.html" title="Todo list"><span>Todo</span></a>
+ </li>
+ </ul>
+ <ul>
+ <li n:if="$config->download">
+ <a href="{$archive}" title="Download documentation as ZIP archive"><span>Download</span></a>
+ </li>
+ </ul>
+ </div>
+
+ {include #content}
+
+</div>
+
+</td>
+ </tr>
+</table>
+
+</div><!-- main -->
+
+<div id="footer">
+ <a href="/tos/">Terms of Service</a> |
+ <a href="/support/">Contact Us</a>
+ <br/>
+ {$config->title} API documentation generated by <a href="http://apigen.org">{$generator} {$version}</a>
+ <br/>Copyright &copy; 2006-2013 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>
diff --git a/buildscripts/apigen/pradosoft/class.latte b/buildscripts/apigen/pradosoft/class.latte
new file mode 100644
index 00000000..36b3804c
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/class.latte
@@ -0,0 +1,429 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'class'}
+
+{block #title}{if $class->deprecated}Deprecated {/if}{if $class->interface}Interface{elseif $class->trait}Trait{else}Class{/if} {$class->name}{/block}
+
+{block #content}
+<div id="content" class="class">
+ <h1 n:class="$class->deprecated ? deprecated">{if $class->interface}Interface{elseif $class->trait}Trait{else}Class{/if} {$class->shortName}</h1>
+
+ {if $class->valid}
+
+ <div class="description" n:if="$template->longDescription($class)">
+ {!$class|longDescription}
+ </div>
+
+ <dl class="tree" n:if="$class->parentClass || $class->ownInterfaces || $class->ownTraits">
+ <dd n:foreach="$tree as $item" style="padding-left:{($iterator->counter - 1) * 30}px">
+ <img src="resources/inherit.png" alt="Extended by" n:if="$iterator->counter > 1">
+ {if $item->documented}
+ <a href="{$item|classUrl}" n:tag-if="!$iterator->last">{last}<b>{/last}<span n:class="$item->deprecated ? deprecated, !$item->valid ? invalid">{$item->name}</span>{last}</b>{/last}</a>
+ {else}{$item->name}{/if}
+ {var $itemOwnInterfaces = $item->ownInterfaces}
+ {if $itemOwnInterfaces} implements {foreach $itemOwnInterfaces as $interface}
+ <a href="{$interface|classUrl}" n:tag-if="$interface->documented"><span n:class="$interface->deprecated ? deprecated, !$interface->valid ? invalid">{$interface->name}</span></a>{sep}, {/sep}
+ {/foreach}{/if}
+ {var $itemOwnTraits = $item->ownTraits}
+ {if $itemOwnTraits} uses {foreach $itemOwnTraits as $trait}
+ <a href="{$trait|classUrl}" n:tag-if="$trait->documented"><span n:class="$trait->deprecated ? deprecated, !$trait->valid ? invalid">{$trait->name}</span></a>{sep}, {/sep}
+ {/foreach}{/if}
+ </dd>
+ </dl>
+
+ {define #children}
+ {foreach $children as $child}
+ <a href="{$child|classUrl}" n:tag-if="$child->documented"><span n:tag-if="$child->deprecated" class="deprecated">{$child->name}</span></a>{sep}, {/sep}
+ {/foreach}
+ {/define}
+
+ <div n:if="$directSubClasses">
+ <h4>Direct known subclasses</h4>
+ {include #children, children => $directSubClasses}
+ </div>
+
+ <div n:if="$indirectSubClasses">
+ <h4>Indirect known subclasses</h4>
+ {include #children, children => $indirectSubClasses}
+ </div>
+
+ <div n:if="$directImplementers">
+ <h4>Direct known implementers</h4>
+ {include #children, children => $directImplementers}
+ </div>
+
+ <div n:if="$indirectImplementers">
+ <h4>Indirect known implementers</h4>
+ {include #children, children => $indirectImplementers}
+ </div>
+
+ <div n:if="$directUsers">
+ <h4>Direct Known Users</h4>
+ {include #children, children => $directUsers}
+ </div>
+
+ <div n:if="$indirectUsers">
+ <h4>Indirect Known Users</h4>
+ {include #children, children => $indirectUsers}
+ </div>
+
+ <div class="info">
+ {if !$class->interface && !$class->trait && ($class->abstract || $class->final)}<b>{if $class->abstract}Abstract{else}Final{/if}</b><br>{/if}
+ {if $class->internal}<b>PHP Extension:</b> <a href="{$class->extension|manualUrl}" title="Go to PHP documentation">{$class->extension->name|firstUpper}</a><br>{/if}
+ {if $class->inNamespace()}<b>Namespace:</b> {!$class->namespaceName|namespaceLinks}<br>{/if}
+ {if $class->inPackage()}<b>Package:</b> {!$class->packageName|packageLinks}<br>{/if}
+
+ {foreach $template->annotationSort($template->annotationFilter($class->annotations)) as $annotation => $values}
+ {foreach $values as $value}
+ <b>{$annotation|annotationBeautify}{if $value}:{/if}</b>
+ {!$value|annotation:$annotation:$class}<br>
+ {/foreach}
+ {/foreach}
+ {if $class->internal}<b>Documented at</b> <a href="{$class|manualUrl}" title="Go to PHP documentation">php.net</a>{else}<b>Located at</b> <a n:tag-if="$config->sourceCode" href="{$class|sourceUrl}" title="Go to source code">{$class->fileName|relativePath}</a>{/if}<br>
+ </div>
+
+ {var $ownMethods = $class->ownMethods}
+ {var $ownMagicMethods = $class->ownMagicMethods}
+
+ {define #method}
+ <tr data-order="{$method->name}" id="{if $method->magic}m{/if}_{$method->name}">
+ {var $annotations = $method->annotations}
+
+ <td class="attributes"><code>
+ {if !$class->interface && $method->abstract}abstract{elseif $method->final}final{/if} {if $method->protected}protected{elseif $method->private}private{else}public{/if} {if $method->static}static{/if}
+ {ifset $annotations['return']}{!$annotations['return'][0]|typeLinks:$method}{/ifset}
+ {if $method->returnsReference()}&amp;{/if}
+ </code>
+ </td>
+
+ <td class="name"><div>
+ <a class="anchor" href="#{if $method->magic}m{/if}_{$method->name}">#</a>
+ <code>{block|strip}
+ {if $class->internal}
+ <a href="{$method|manualUrl}" title="Go to PHP documentation">{$method->name}</a>(
+ {else}
+ <a n:tag-if="$config->sourceCode" href="{$method|sourceUrl}" title="Go to source code">{$method->name}</a>(
+ {/if}
+ {foreach $method->parameters as $parameter}
+ <span>{!$parameter->typeHint|typeLinks:$method}
+ <var>{if $parameter->passedByReference}&amp; {/if}${$parameter->name}</var>{if $parameter->defaultValueAvailable} = {!$parameter->defaultValueDefinition|highlightPHP:$class}{elseif $parameter->unlimited},…{/if}</span>{sep}, {/sep}
+ {/foreach}
+ ){/block}</code>
+
+ {if $config->template['options']['elementDetailsCollapsed']}
+ <div class="description short">
+ {!$method|shortDescription:true}
+ </div>
+ {/if}
+
+ <div n:class="description, detailed, $config->template['options']['elementDetailsCollapsed'] ? hidden">
+ {!$method|longDescription}
+
+ {if !$class->deprecated && $method->deprecated}
+ <h4>Deprecated</h4>
+ {ifset $annotations['deprecated']}
+ <div class="list">
+ {foreach $annotations['deprecated'] as $description}
+ {if $description}
+ {!$description|annotation:'deprecated':$method}<br>
+ {/if}
+ {/foreach}
+ </div>
+ {/ifset}
+ {/if}
+
+ {if $method->parameters && isset($annotations['param'])}
+ <h4>Parameters</h4>
+ <div class="list"><dl>
+ {foreach $method->parameters as $parameter}
+ <dt><var>${$parameter->name}</var>{if $parameter->unlimited},…{/if}</dt>
+ <dd>{ifset $annotations['param'][$parameter->position]}{!$annotations['param'][$parameter->position]|annotation:'param':$method}{/ifset}</dd>
+ {/foreach}
+ </dl></div>
+ {/if}
+
+ {if isset($annotations['return']) && 'void' !== $annotations['return'][0]}
+ <h4>Returns</h4>
+ <div class="list">
+ {foreach $annotations['return'] as $description}
+ {!$description|annotation:'return':$method}<br>
+ {/foreach}
+ </div>
+ {/if}
+
+ {ifset $annotations['throws']}
+ <h4>Throws</h4>
+ <div class="list">
+ {foreach $annotations['throws'] as $description}
+ {!$description|annotation:'throws':$method}<br>
+ {/foreach}
+ </div>
+ {/ifset}
+
+ {foreach $template->annotationSort($template->annotationFilter($annotations, array('deprecated', 'param', 'return', 'throws'))) as $annotation => $descriptions}
+ <h4>{$annotation|annotationBeautify}</h4>
+ <div class="list">
+ {foreach $descriptions as $description}
+ {if $description}
+ {!$description|annotation:$annotation:$method}<br>
+ {/if}
+ {/foreach}
+ </div>
+ {/foreach}
+
+ {var $overriddenMethod = $method->overriddenMethod}
+ {if $overriddenMethod}
+ <h4>Overrides</h4>
+ <div class="list"><code><a n:tag-if="$template->getClass($overriddenMethod->declaringClassName)" href="{$overriddenMethod|methodUrl}">{$overriddenMethod->prettyName}</a></code></div>
+ {/if}
+
+ {var $implementedMethod = $method->implementedMethod}
+ {if $implementedMethod}
+ <h4>Implementation of</h4>
+ <div class="list"><code><a n:tag-if="$template->getClass($implementedMethod->declaringClassName)" href="{$implementedMethod|methodUrl}">{$implementedMethod->prettyName}</a></code></div>
+ {/if}
+ </div>
+ </div></td>
+ </tr>
+ {/define}
+
+ <table class="summary" id="methods" n:if="$ownMethods">
+ <caption>Methods summary</caption>
+ {foreach $ownMethods as $method}
+ {include #method, method => $method}
+ {/foreach}
+ </table>
+
+ <table n:foreach="$class->inheritedMethods as $parentName => $methods" class="summary inherited">
+ <caption>Methods inherited from <a href="{$parentName|classUrl}#methods" n:tag-if="$template->getClass($parentName)">{$parentName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $methods as $method}
+ <a href="{$method|methodUrl}" n:tag-if="$template->getClass($parentName)"><span n:tag-if="$method->deprecated" class="deprecated">{$method->name}()</span></a>{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ <table n:foreach="$class->usedMethods as $traitName => $methods" class="summary used">
+ <caption>Methods used from <a href="{$traitName|classUrl}#methods" n:tag-if="$template->getClass($traitName)">{$traitName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $methods as $data}
+ <a href="{$data['method']|methodUrl:$data['method']->declaringTrait}" n:tag-if="$template->getClass($traitName)"><span n:tag-if="$data['method']->deprecated" class="deprecated">{$data['method']->originalName}()</span></a>{if $data['aliases']}(as {foreach $data['aliases'] as $alias}<span n:tag-if="$data['method']->deprecated" class="deprecated">{$alias->name}()</span>{sep}, {/sep}{/foreach}){/if}{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ <table class="summary" id="methods" n:if="$ownMagicMethods">
+ <caption>Magic methods summary</caption>
+ {foreach $ownMagicMethods as $method}
+ {include #method, method => $method}
+ {/foreach}
+ </table>
+
+ <table n:foreach="$class->inheritedMagicMethods as $parentName => $methods" class="summary inherited">
+ <caption>Magic methods inherited from <a href="{$parentName|classUrl}#methods" n:tag-if="$template->getClass($parentName)">{$parentName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $methods as $method}
+ <a href="{$method|methodUrl}" n:tag-if="$template->getClass($parentName)"><span n:tag-if="$method->deprecated" class="deprecated">{$method->name}()</span></a>{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ <table n:foreach="$class->usedMagicMethods as $traitName => $methods" class="summary used">
+ <caption>Magic methods used from <a href="{$traitName|classUrl}#methods" n:tag-if="$template->getClass($traitName)">{$traitName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $methods as $data}
+ <a href="{$data['method']|methodUrl:$data['method']->declaringTrait}" n:tag-if="$template->getClass($traitName)"><span n:tag-if="$data['method']->deprecated" class="deprecated">{$data['method']->originalName}()</span></a>{if $data['aliases']}(as {foreach $data['aliases'] as $alias}<span n:tag-if="$data['method']->deprecated" class="deprecated">{$alias->name}()</span>{sep}, {/sep}{/foreach}){/if}{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+
+ {var $ownConstants = $class->ownConstants}
+
+ <table class="summary" id="constants" n:if="$ownConstants">
+ <caption>Constants summary</caption>
+ <tr n:foreach="$ownConstants as $constant" data-order="{$constant->name}" id="{$constant->name}">
+ {var $annotations = $constant->annotations}
+
+ <td class="attributes"><code>{!$constant->typeHint|typeLinks:$constant}</code></td>
+ <td class="name"><code>
+ {if $class->internal}
+ <a href="{$constant|manualUrl}" title="Go to PHP documentation"><b>{$constant->name}</b></a>
+ {else}
+ <a n:tag-if="$config->sourceCode" href="{$constant|sourceUrl}" title="Go to source code"><b>{$constant->name}</b></a>
+ {/if}
+ </code></td>
+ <td class="value"><code>{!$constant->valueDefinition|highlightValue:$class}</code></td>
+ <td class="description"><div>
+ <a href="#{$constant->name}" class="anchor">#</a>
+
+ {if $config->template['options']['elementDetailsCollapsed']}
+ <div class="description short">
+ {!$constant|shortDescription:true}
+ </div>
+ {/if}
+
+ <div n:class="description, detailed, $config->template['options']['elementDetailsCollapsed'] ? hidden">
+ {!$constant|longDescription}
+
+ {foreach $template->annotationSort($template->annotationFilter($annotations, array('var'))) as $annotation => $descriptions}
+ <h4>{$annotation|annotationBeautify}</h4>
+ <div class="list">
+ {foreach $descriptions as $description}
+ {if $description}
+ {!$description|annotation:$annotation:$constant}<br>
+ {/if}
+ {/foreach}
+ </div>
+ {/foreach}
+ </div>
+ </div></td>
+ </tr>
+ </table>
+
+ <table n:foreach="$class->inheritedConstants as $parentName => $constants" class="summary inherited">
+ <caption>Constants inherited from <a href="{$parentName|classUrl}#constants" n:tag-if="$template->getClass($parentName)">{$parentName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $constants as $constant}
+ <a href="{$constant|constantUrl}" n:tag-if="$template->getClass($parentName)"><b><span n:tag-if="$constant->deprecated" class"deprecated">{$constant->name}</span></b></a>{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ {define #property}
+ <tr data-order="{$property->name}" id="{if $property->magic}m{/if}${$property->name}">
+ <td class="attributes"><code>
+ {if $property->protected}protected{elseif $property->private}private{else}public{/if} {if $property->static}static{/if} {if $property->readOnly}read-only{elseif $property->writeOnly}write-only{/if}
+ {!$property->typeHint|typeLinks:$property}
+ </code></td>
+
+ <td class="name">
+ {if $class->internal}
+ <a href="{$property|manualUrl}" title="Go to PHP documentation"><var>${$property->name}</var></a>
+ {else}
+ <a n:tag-if="$config->sourceCode" href="{$property|sourceUrl}" title="Go to source code"><var>${$property->name}</var></a>
+ {/if}
+ </td>
+ <td n:if="!$property->magic" class="value"><code>{!$property->defaultValueDefinition|highlightValue:$class}</code></td>
+ <td class="description"><div>
+ <a href="#{if $property->magic}m{/if}${$property->name}" class="anchor">#</a>
+
+ {if $config->template['options']['elementDetailsCollapsed']}
+ <div class="description short">
+ {!$property|shortDescription:true}
+ </div>
+ {/if}
+
+ <div n:class="description, detailed, $config->template['options']['elementDetailsCollapsed'] ? hidden">
+ {!$property|longDescription}
+
+ {foreach $template->annotationSort($template->annotationFilter($property->annotations, array('var'))) as $annotation => $descriptions}
+ <h4>{$annotation|annotationBeautify}</h4>
+ <div class="list">
+ {foreach $descriptions as $description}
+ {if $description}
+ {!$description|annotation:$annotation:$property}<br>
+ {/if}
+ {/foreach}
+ </div>
+ {/foreach}
+ </div>
+ </div></td>
+ </tr>
+ {/define}
+
+ {var $ownProperties = $class->ownProperties}
+ {var $ownMagicProperties = $class->ownMagicProperties}
+
+ <table class="summary" id="properties" n:if="$ownProperties">
+ <caption>Properties summary</caption>
+ {foreach $ownProperties as $property}
+ {include #property, property => $property}
+ {/foreach}
+ </table>
+
+ <table n:foreach="$class->inheritedProperties as $parentName => $properties" class="summary inherited">
+ <caption>Properties inherited from <a href="{$parentName|classUrl}#properties" n:tag-if="$template->getClass($parentName)">{$parentName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $properties as $property}
+ <a href="{$property|propertyUrl}" n:tag-if="$template->getClass($parentName)"><var><span n:tag-if="$property->deprecated" class="deprecated">${$property->name}</span></var></a>{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ <table n:foreach="$class->usedProperties as $traitName => $properties" class="summary used">
+ <caption>Properties used from <a href="{$traitName|classUrl}#properties" n:tag-if="$template->getClass($traitName)">{$traitName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $properties as $property}
+ <a href="{$property|propertyUrl:$property->declaringTrait}" n:tag-if="$template->getClass($traitName)"><var><span n:tag-if="$property->deprecated" class="deprecated">${$property->name}</span></var></a>{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ <table class="summary" id="magicProperties" n:if="$ownMagicProperties">
+ <caption>Magic properties summary</caption>
+ {foreach $ownMagicProperties as $property}
+ {include #property, property => $property}
+ {/foreach}
+ </table>
+
+ <table n:foreach="$class->inheritedMagicProperties as $parentName => $properties" class="summary inherited">
+ <caption>Magic properties inherited from <a href="{$parentName|classUrl}#properties" n:tag-if="$template->getClass($parentName)">{$parentName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $properties as $property}
+ <a href="{$property|propertyUrl}" n:tag-if="$template->getClass($parentName)"><var><span n:tag-if="$property->deprecated" class="deprecated">${$property->name}</span></var></a>{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ <table n:foreach="$class->usedMagicProperties as $traitName => $properties" class="summary used">
+ <caption>Magic properties used from <a href="{$traitName|classUrl}#properties" n:tag-if="$template->getClass($traitName)">{$traitName}</a></caption>
+ <tr>
+ <td><code>
+ {foreach $properties as $property}
+ <a href="{$property|propertyUrl:$property->declaringTrait}" n:tag-if="$template->getClass($traitName)"><var><span n:tag-if="$property->deprecated" class="deprecated">${$property->name}</span></var></a>{sep}, {/sep}
+ {/foreach}
+ </code></td>
+ </tr>
+ </table>
+
+ {else}
+ <div class="invalid">
+ <p>
+ Documentation of this class could not be generated.
+ </p>
+ <p>
+ Class was originally declared in {$class->fileName|relativePath} and is invalid because of:
+ </p>
+ <ul>
+ <li n:foreach="$class->reasons as $reason">Class was redeclared in {$reason->getSender()->getFileName()|relativePath}.</li>
+ </ul>
+ </div>
+ {/if}
+</div>
+{/block}
diff --git a/buildscripts/apigen/pradosoft/combined.js.latte b/buildscripts/apigen/pradosoft/combined.js.latte
new file mode 100644
index 00000000..73b12686
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/combined.js.latte
@@ -0,0 +1,21 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{contentType javascript}
+
+var ApiGen = ApiGen || {};
+ApiGen.config = {$config->template};
+
+{var $scripts = ['jquery.min.js', 'jquery.cookie.js', 'jquery.sprintf.js', 'jquery.autocomplete.js', 'jquery.sortElements.js', 'main.js']}
+{var $dir = dirname($template->getFile())}
+
+{foreach $scripts as $script}
+{!file_get_contents("$dir/js/$script")}
+{/foreach}
diff --git a/buildscripts/apigen/pradosoft/config.neon b/buildscripts/apigen/pradosoft/config.neon
new file mode 100644
index 00000000..6ddc2f69
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/config.neon
@@ -0,0 +1,56 @@
+require:
+ min: 2.8.0
+
+resources:
+ resources: resources
+
+templates:
+ common:
+ overview.latte: index.html
+ combined.js.latte: resources/combined.js
+ elementlist.js.latte: elementlist.js
+ 404.latte: 404.html
+
+ main:
+ package:
+ filename: package-%s.html
+ template: package.latte
+ namespace:
+ filename: namespace-%s.html
+ template: namespace.latte
+ class:
+ filename: class-%s.html
+ template: class.latte
+ constant:
+ filename: constant-%s.html
+ template: constant.latte
+ function:
+ filename: function-%s.html
+ template: function.latte
+ source:
+ filename: source-%s.html
+ template: source.latte
+ tree:
+ filename: tree.html
+ template: tree.latte
+ deprecated:
+ filename: deprecated.html
+ template: deprecated.latte
+ todo:
+ filename: todo.html
+ template: todo.latte
+
+ optional:
+ sitemap:
+ filename: sitemap.xml
+ template: sitemap.xml.latte
+ opensearch:
+ filename: opensearch.xml
+ template: opensearch.xml.latte
+ robots:
+ filename: robots.txt
+ template: robots.txt.latte
+
+options:
+ elementDetailsCollapsed: Yes
+ elementsOrder: natural # alphabetical
diff --git a/buildscripts/apigen/pradosoft/constant.latte b/buildscripts/apigen/pradosoft/constant.latte
new file mode 100644
index 00000000..441c245d
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/constant.latte
@@ -0,0 +1,66 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'constant'}
+
+{block #title}{if $constant->deprecated}Deprecated {/if}Constant {$constant->name}{/block}
+
+{block #content}
+<div id="content" class="constant">
+ <h1 n:class="$constant->deprecated ? deprecated">Constant {$constant->shortName}</h1>
+
+ {if $constant->valid}
+
+ <div class="description" n:if="$template->longDescription($constant)">
+ {!$constant|longDescription}
+ </div>
+
+ <div class="info">
+ {if $constant->inNamespace()}<b>Namespace:</b> {!$constant->namespaceName|namespaceLinks}<br>{/if}
+ {if $constant->inPackage()}<b>Package:</b> {!$constant->packageName|packageLinks}<br>{/if}
+ {foreach $template->annotationSort($template->annotationFilter($constant->annotations, array('var'))) as $annotation => $values}
+ {foreach $values as $value}
+ <b>{$annotation|annotationBeautify}{if $value}:{/if}</b>
+ {!$value|annotation:$annotation:$constant}<br>
+ {/foreach}
+ {/foreach}
+ <b>Located at</b> <a n:tag-if="$config->sourceCode" href="{$constant|sourceUrl}" title="Go to source code">{$constant->fileName|relativePath}</a><br>
+ </div>
+
+ {var $annotations = $constant->annotations}
+
+ <table class="summary" id="vars">
+ <caption>Value summary</caption>
+ <tr>
+ <td class="name"><code>{!$constant->typeHint|typeLinks:$constant}</code></td>
+ <td class="value">{block|strip}
+ {var $element = $template->resolveElement($constant->valueDefinition, $constant)}
+ {if $element}<a href="{$element|constantUrl}">{$constant->valueDefinition}</a>{else}<code>{!$constant->valueDefinition|highlightValue:$constant}</code>{/if}
+ {/block}</td>
+ <td>{ifset $annotations['var']}{!$annotations['var'][0]|description:$constant}{/ifset}</td>
+ </tr>
+ </table>
+
+ {else}
+ <div class="invalid">
+ <p>
+ Documentation of this constant could not be generated.
+ </p>
+ <p>
+ Constant was originally declared in {$constant->fileName|relativePath} and is invalid because of:
+ </p>
+ <ul>
+ <li n:foreach="$constant->reasons as $reason">Constant was redeclared in {$reason->getSender()->getFileName()|relativePath}.</li>
+ </ul>
+ </div>
+ {/if}
+</div>
+{/block}
diff --git a/buildscripts/apigen/pradosoft/deprecated.latte b/buildscripts/apigen/pradosoft/deprecated.latte
new file mode 100644
index 00000000..477e8c55
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/deprecated.latte
@@ -0,0 +1,120 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'deprecated'}
+
+{block #title}Deprecated{/block}
+
+{block #content}
+<div id="content">
+ <h1>{include #title}</h1>
+
+ {define #classes}
+ <tr n:foreach="$items as $class">
+ <td class="name"><a href="{$class|classUrl}">{$class->name}</a></td>
+ <td>
+ {foreach $class->annotations['deprecated'] as $description}
+ {if $description}
+ {!$description|annotation:'deprecated':$class}<br>
+ {/if}
+ {/foreach}
+ </td>
+ </tr>
+ {/define}
+
+ <table class="summary" id="classes" n:if="$deprecatedClasses">
+ <caption>Classes summary</caption>
+ {include #classes, items => $deprecatedClasses}
+ </table>
+
+ <table class="summary" id="interfaces" n:if="$deprecatedInterfaces">
+ <caption>Interfaces summary</caption>
+ {include #classes, items => $deprecatedInterfaces}
+ </table>
+
+ <table class="summary" id="traits" n:if="$deprecatedTraits">
+ <caption>Traits summary</caption>
+ {include #classes, items => $deprecatedTraits}
+ </table>
+
+ <table class="summary" id="exceptions" n:if="$deprecatedExceptions">
+ <caption>Exceptions summary</caption>
+ {include #classes, items => $deprecatedExceptions}
+ </table>
+
+ <table class="summary" id="methods" n:if="$deprecatedMethods">
+ <caption>Methods summary</caption>
+ <tr n:foreach="$deprecatedMethods as $method">
+ <td class="name"><a href="{$method->declaringClassName|classUrl}">{$method->declaringClassName}</a></td>
+ <td class="name"><code><a href="{$method|methodUrl}">{$method->name}()</a></code></td>
+ <td>
+ {if $method->hasAnnotation('deprecated')}
+ {foreach $method->annotations['deprecated'] as $description}
+ {if $description}
+ {!$description|annotation:'deprecated':$method}<br>
+ {/if}
+ {/foreach}
+ {/if}
+ </td>
+ </tr>
+ </table>
+
+ <table class="summary" id="constants" n:if="$deprecatedConstants">
+ <caption>Constants summary</caption>
+ <tr n:foreach="$deprecatedConstants as $constant">
+ {if $constant->declaringClassName}
+ <td class="name"><a href="{$constant->declaringClassName|classUrl}">{$constant->declaringClassName}</a></td>
+ <td class="name"><code><a href="{$constant|constantUrl}"><b>{$constant->name}</b></a></code></td>
+ {else}
+ <td class="name" n:if="$namespaces || $classes || $interfaces || $traits || $exceptions"><a n:if="$constant->namespaceName" href="{$constant->namespaceName|namespaceUrl}">{$constant->namespaceName}</a></td>
+ <td n:class="name"><code><a href="{$constant|constantUrl}"><b>{$constant->shortName}</b></a></code></td>
+ {/if}
+ <td>
+ {foreach $constant->annotations['deprecated'] as $description}
+ {if $description}
+ {!$description|annotation:'deprecated':$constant}<br>
+ {/if}
+ {/foreach}
+ </td>
+ </tr>
+ </table>
+
+ <table class="summary" id="properties" n:if="$deprecatedProperties">
+ <caption>Properties summary</caption>
+ <tr n:foreach="$deprecatedProperties as $property">
+ <td class="name"><a href="{$property->declaringClassName|classUrl}">{$property->declaringClassName}</a></td>
+ <td class="name"><a href="{$property|propertyUrl}"><var>${$property->name}</var></a></td>
+ <td>
+ {foreach $property->annotations['deprecated'] as $description}
+ {if $description}
+ {!$description|annotation:'deprecated':$property}<br>
+ {/if}
+ {/foreach}
+ </td>
+ </tr>
+ </table>
+
+ <table class="summary" id="functions" n:if="$deprecatedFunctions">
+ <caption>Functions summary</caption>
+ <tr n:foreach="$deprecatedFunctions as $function">
+ <td class="name" n:if="$namespaces"><a n:if="$function->namespaceName" href="{$function->namespaceName|namespaceUrl}">{$function->namespaceName}</a></td>
+ <td class="name"><code><a href="{$function|functionUrl}">{$function->shortName}</a></code></td>
+ <td>
+ {foreach $function->annotations['deprecated'] as $description}
+ {if $description}
+ {!$description|annotation:'deprecated':$function}<br>
+ {/if}
+ {/foreach}
+ </td>
+ </tr>
+ </table>
+</div>
+{/block}
diff --git a/buildscripts/apigen/pradosoft/elementlist.js.latte b/buildscripts/apigen/pradosoft/elementlist.js.latte
new file mode 100644
index 00000000..6272ba10
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/elementlist.js.latte
@@ -0,0 +1,14 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{contentType javascript}
+
+var ApiGen = ApiGen || {};
+ApiGen.elements = {$elements};
diff --git a/buildscripts/apigen/pradosoft/function.latte b/buildscripts/apigen/pradosoft/function.latte
new file mode 100644
index 00000000..6c4c3238
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/function.latte
@@ -0,0 +1,91 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'function'}
+
+{block #title}{if $function->deprecated}Deprecated {/if}Function {$function->name}{/block}
+
+{block #content}
+<div id="content" class="function">
+ <h1 n:class="$function->deprecated ? deprecated">Function {$function->shortName}</h1>
+
+ {if $function->valid}
+
+ <div class="description" n:if="$template->longDescription($function)">
+ {!$function|longDescription}
+ </div>
+
+ <div class="info">
+ {if $function->inNamespace()}<b>Namespace:</b> {!$function->namespaceName|namespaceLinks}<br>{/if}
+ {if $function->inPackage()}<b>Package:</b> {!$function->packageName|packageLinks}<br>{/if}
+ {foreach $template->annotationSort($template->annotationFilter($function->annotations, array('param', 'return', 'throws'))) as $annotation => $values}
+ {foreach $values as $value}
+ <b>{$annotation|annotationBeautify}{if $value}:{/if}</b>
+ {!$value|annotation:$annotation:$function}<br>
+ {/foreach}
+ {/foreach}
+ <b>Located at</b> <a n:tag-if="$config->sourceCode" href="{$function|sourceUrl}" title="Go to source code">{$function->fileName|relativePath}</a><br>
+ </div>
+
+ {var $annotations = $function->annotations}
+
+ <table class="summary" id="parameters" n:if="$function->numberOfParameters">
+ <caption>Parameters summary</caption>
+ <tr n:foreach="$function->parameters as $parameter" id="${$parameter->name}">
+ <td class="name"><code>{!$parameter->typeHint|typeLinks:$function}</code></td>
+ <td class="value"><code>{block|strip}
+ <var>{if $parameter->passedByReference}&amp; {/if}${$parameter->name}</var>{if $parameter->defaultValueAvailable} = {!$parameter->defaultValueDefinition|highlightPHP:$function}{elseif $parameter->unlimited},…{/if}
+ {/block}</code></td>
+ <td>
+ {ifset $annotations['param'][$parameter->position]}{!$annotations['param'][$parameter->position]|description:$parameter}{/ifset}
+ </td>
+ </tr>
+ </table>
+
+ <table class="summary" id="returns" n:if="isset($annotations['return']) && 'void' !== $annotations['return'][0]">
+ <caption>Return value summary</caption>
+ <tr>
+ <td class="name"><code>
+ {!$annotations['return'][0]|typeLinks:$function}
+ </code></td>
+ <td>
+ {!$annotations['return'][0]|description:$function}
+ </td>
+ </tr>
+ </table>
+
+ <table class="summary" id="throws" n:ifset="$annotations['throws']">
+ <caption>Thrown exceptions summary</caption>
+ <tr n:foreach="$annotations['throws'] as $throws">
+ <td class="name"><code>
+ {!$throws|typeLinks:$function}
+ </code></td>
+ <td>
+ {!$throws|description:$function}
+ </td>
+ </tr>
+ </table>
+
+ {else}
+ <div class="invalid">
+ <p>
+ Documentation of this function could not be generated.
+ </p>
+ <p>
+ Function was originally declared in {$function->fileName|relativePath} and is invalid because of:
+ </p>
+ <ul>
+ <li n:foreach="$function->reasons as $reason">Function was redeclared in {$reason->getSender()->getFileName()|relativePath}.</li>
+ </ul>
+ </div>
+ {/if}
+</div>
+{/block}
diff --git a/buildscripts/apigen/pradosoft/js/jquery.autocomplete.js b/buildscripts/apigen/pradosoft/js/jquery.autocomplete.js
new file mode 100644
index 00000000..b8bec34d
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/js/jquery.autocomplete.js
@@ -0,0 +1,799 @@
+/*!
+ * jQuery Autocomplete plugin 1.1
+ *
+ * Copyright (c) 2009 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
+ */
+
+;(function($) {
+
+$.fn.extend({
+ autocomplete: function(urlOrData, options) {
+ var isUrl = typeof urlOrData == "string";
+ options = $.extend({}, $.Autocompleter.defaults, {
+ url: isUrl ? urlOrData : null,
+ data: isUrl ? null : urlOrData,
+ delay: isUrl ? $.Autocompleter.defaults.delay : 10,
+ max: options && !options.scroll ? 10 : 150
+ }, options);
+
+ // if highlight is set to false, replace it with a do-nothing function
+ options.highlight = options.highlight || function(value) { return value; };
+
+ // if the formatMatch option is not specified, then use formatItem for backwards compatibility
+ options.formatMatch = options.formatMatch || options.formatItem;
+
+ options.show = options.show || function(list) {};
+
+ return this.each(function() {
+ new $.Autocompleter(this, options);
+ });
+ },
+ result: function(handler) {
+ return this.bind("result", handler);
+ },
+ search: function(handler) {
+ return this.trigger("search", [handler]);
+ },
+ flushCache: function() {
+ return this.trigger("flushCache");
+ },
+ setOptions: function(options){
+ return this.trigger("setOptions", [options]);
+ },
+ unautocomplete: function() {
+ return this.trigger("unautocomplete");
+ }
+});
+
+$.Autocompleter = function(input, options) {
+
+ var KEY = {
+ UP: 38,
+ DOWN: 40,
+ DEL: 46,
+ TAB: 9,
+ RETURN: 13,
+ ESC: 27,
+ COMMA: 188,
+ PAGEUP: 33,
+ PAGEDOWN: 34,
+ BACKSPACE: 8
+ };
+
+ // Create $ object for input element
+ var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
+
+ var timeout;
+ var previousValue = "";
+ var cache = $.Autocompleter.Cache(options);
+ var hasFocus = 0;
+ var lastKeyPressCode;
+ var config = {
+ mouseDownOnSelect: false
+ };
+ var select = $.Autocompleter.Select(options, input, selectCurrent, config);
+
+ // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
+ $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
+ // a keypress means the input has focus
+ // avoids issue where input had focus before the autocomplete was applied
+ hasFocus = 1;
+ // track last key pressed
+ lastKeyPressCode = event.keyCode;
+ switch(event.keyCode) {
+
+ case KEY.UP:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.prev();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ case KEY.DOWN:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.next();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ case KEY.PAGEUP:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.pageUp();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ case KEY.PAGEDOWN:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.pageDown();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ // matches also semicolon
+ case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
+ case KEY.TAB:
+ case KEY.RETURN:
+ if( selectCurrent() ) {
+ //event.preventDefault();
+ //return false;
+ }
+ break;
+
+ case KEY.ESC:
+ select.hide();
+ break;
+
+ default:
+ clearTimeout(timeout);
+ timeout = setTimeout(onChange, options.delay);
+ break;
+ }
+ }).focus(function(){
+ // track whether the field has focus, we shouldn't process any
+ // results if the field no longer has focus
+ hasFocus++;
+ }).blur(function() {
+ hasFocus = 0;
+ if (!config.mouseDownOnSelect) {
+ hideResults();
+ }
+ }).click(function() {
+ // show select when clicking in a focused field
+ if ( hasFocus++ > 1 && !select.visible() ) {
+ onChange(0, true);
+ }
+ }).bind("search", function() {
+ // TODO why not just specifying both arguments?
+ var fn = (arguments.length > 1) ? arguments[1] : null;
+ function findValueCallback(q, data) {
+ var result;
+ if( data && data.length ) {
+ for (var i=0; i < data.length; i++) {
+ if( data[i].result.toLowerCase() == q.toLowerCase() ) {
+ result = data[i];
+ break;
+ }
+ }
+ }
+ if( typeof fn == "function" ) fn(result);
+ else $input.trigger("result", result && [result.data, result.value]);
+ }
+ $.each(trimWords($input.val()), function(i, value) {
+ request(value, findValueCallback, findValueCallback);
+ });
+ }).bind("flushCache", function() {
+ cache.flush();
+ }).bind("setOptions", function() {
+ $.extend(options, arguments[1]);
+ // if we've updated the data, repopulate
+ if ( "data" in arguments[1] )
+ cache.populate();
+ }).bind("unautocomplete", function() {
+ select.unbind();
+ $input.unbind();
+ $(input.form).unbind(".autocomplete");
+ });
+
+
+ function selectCurrent() {
+ var selected = select.selected();
+ if( !selected )
+ return false;
+
+ var v = selected.result;
+ previousValue = v;
+
+ if ( options.multiple ) {
+ var words = trimWords($input.val());
+ if ( words.length > 1 ) {
+ var seperator = options.multipleSeparator.length;
+ var cursorAt = $(input).selection().start;
+ var wordAt, progress = 0;
+ $.each(words, function(i, word) {
+ progress += word.length;
+ if (cursorAt <= progress) {
+ wordAt = i;
+ return false;
+ }
+ progress += seperator;
+ });
+ words[wordAt] = v;
+ // TODO this should set the cursor to the right position, but it gets overriden somewhere
+ //$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
+ v = words.join( options.multipleSeparator );
+ }
+ v += options.multipleSeparator;
+ }
+
+ $input.val(v);
+ hideResultsNow();
+ $input.trigger("result", [selected.data, selected.value]);
+ return true;
+ }
+
+ function onChange(crap, skipPrevCheck) {
+ if( lastKeyPressCode == KEY.DEL ) {
+ select.hide();
+ return;
+ }
+
+ var currentValue = $input.val();
+
+ if ( !skipPrevCheck && currentValue == previousValue )
+ return;
+
+ previousValue = currentValue;
+
+ currentValue = lastWord(currentValue);
+ if ( currentValue.length >= options.minChars) {
+ $input.addClass(options.loadingClass);
+ if (!options.matchCase)
+ currentValue = currentValue.toLowerCase();
+ request(currentValue, receiveData, hideResultsNow);
+ } else {
+ stopLoading();
+ select.hide();
+ }
+ };
+
+ function trimWords(value) {
+ if (!value)
+ return [""];
+ if (!options.multiple)
+ return [$.trim(value)];
+ return $.map(value.split(options.multipleSeparator), function(word) {
+ return $.trim(value).length ? $.trim(word) : null;
+ });
+ }
+
+ function lastWord(value) {
+ if ( !options.multiple )
+ return value;
+ var words = trimWords(value);
+ if (words.length == 1)
+ return words[0];
+ var cursorAt = $(input).selection().start;
+ if (cursorAt == value.length) {
+ words = trimWords(value)
+ } else {
+ words = trimWords(value.replace(value.substring(cursorAt), ""));
+ }
+ return words[words.length - 1];
+ }
+
+ // fills in the input box w/the first match (assumed to be the best match)
+ // q: the term entered
+ // sValue: the first matching result
+ function autoFill(q, sValue){
+ // autofill in the complete box w/the first match as long as the user hasn't entered in more data
+ // if the last user key pressed was backspace, don't autofill
+ if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
+ // fill in the value (keep the case the user has typed)
+ $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
+ // select the portion of the value not typed by the user (so the next character will erase)
+ $(input).selection(previousValue.length, previousValue.length + sValue.length);
+ }
+ };
+
+ function hideResults() {
+ clearTimeout(timeout);
+ timeout = setTimeout(hideResultsNow, 200);
+ };
+
+ function hideResultsNow() {
+ var wasVisible = select.visible();
+ select.hide();
+ clearTimeout(timeout);
+ stopLoading();
+ if (options.mustMatch) {
+ // call search and run callback
+ $input.search(
+ function (result){
+ // if no value found, clear the input box
+ if( !result ) {
+ if (options.multiple) {
+ var words = trimWords($input.val()).slice(0, -1);
+ $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
+ }
+ else {
+ $input.val( "" );
+ $input.trigger("result", null);
+ }
+ }
+ }
+ );
+ }
+ };
+
+ function receiveData(q, data) {
+ if ( data && data.length && hasFocus ) {
+ stopLoading();
+ select.display(data, q);
+ autoFill(q, data[0].value);
+ select.show();
+ } else {
+ hideResultsNow();
+ }
+ };
+
+ function request(term, success, failure) {
+ if (!options.matchCase)
+ term = term.toLowerCase();
+ var data = cache.load(term);
+ // recieve the cached data
+ if (data && data.length) {
+ success(term, data);
+ // if an AJAX url has been supplied, try loading the data now
+ } else if( (typeof options.url == "string") && (options.url.length > 0) ){
+
+ var extraParams = {
+ timestamp: +new Date()
+ };
+ $.each(options.extraParams, function(key, param) {
+ extraParams[key] = typeof param == "function" ? param() : param;
+ });
+
+ $.ajax({
+ // try to leverage ajaxQueue plugin to abort previous requests
+ mode: "abort",
+ // limit abortion to this input
+ port: "autocomplete" + input.name,
+ dataType: options.dataType,
+ url: options.url,
+ data: $.extend({
+ q: lastWord(term),
+ limit: options.max
+ }, extraParams),
+ success: function(data) {
+ var parsed = options.parse && options.parse(data) || parse(data);
+ cache.add(term, parsed);
+ success(term, parsed);
+ }
+ });
+ } else {
+ // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
+ select.emptyList();
+ failure(term);
+ }
+ };
+
+ function parse(data) {
+ var parsed = [];
+ var rows = data.split("\n");
+ for (var i=0; i < rows.length; i++) {
+ var row = $.trim(rows[i]);
+ if (row) {
+ row = row.split("|");
+ parsed[parsed.length] = {
+ data: row,
+ value: row[0],
+ result: options.formatResult && options.formatResult(row, row[0]) || row[0]
+ };
+ }
+ }
+ return parsed;
+ };
+
+ function stopLoading() {
+ $input.removeClass(options.loadingClass);
+ };
+
+};
+
+$.Autocompleter.defaults = {
+ inputClass: "ac_input",
+ resultsClass: "ac_results",
+ loadingClass: "ac_loading",
+ minChars: 1,
+ delay: 400,
+ matchCase: false,
+ matchSubset: true,
+ matchContains: false,
+ cacheLength: 10,
+ max: 100,
+ mustMatch: false,
+ extraParams: {},
+ selectFirst: true,
+ formatItem: function(row) { return row[0]; },
+ formatMatch: null,
+ autoFill: false,
+ width: 0,
+ multiple: false,
+ multipleSeparator: ", ",
+ highlight: function(value, term) {
+ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
+ },
+ scroll: true,
+ scrollHeight: 180
+};
+
+$.Autocompleter.Cache = function(options) {
+
+ var data = {};
+ var length = 0;
+
+ function matchSubset(s, sub) {
+ if (!options.matchCase)
+ s = s.toLowerCase();
+ var i = s.indexOf(sub);
+ if (options.matchContains == "word"){
+ i = s.toLowerCase().search("\\b" + sub.toLowerCase());
+ }
+ if (i == -1) return false;
+ return i == 0 || options.matchContains;
+ };
+
+ function add(q, value) {
+ if (length > options.cacheLength){
+ flush();
+ }
+ if (!data[q]){
+ length++;
+ }
+ data[q] = value;
+ }
+
+ function populate(){
+ if( !options.data ) return false;
+ // track the matches
+ var stMatchSets = {},
+ nullData = 0;
+
+ // no url was specified, we need to adjust the cache length to make sure it fits the local data store
+ if( !options.url ) options.cacheLength = 1;
+
+ // track all options for minChars = 0
+ stMatchSets[""] = [];
+
+ // loop through the array and create a lookup structure
+ for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
+ var rawValue = options.data[i];
+ // if rawValue is a string, make an array otherwise just reference the array
+ rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
+
+ var value = options.formatMatch(rawValue, i+1, options.data.length);
+ if ( value === false )
+ continue;
+
+ var firstChar = value.charAt(0).toLowerCase();
+ // if no lookup array for this character exists, look it up now
+ if( !stMatchSets[firstChar] )
+ stMatchSets[firstChar] = [];
+
+ // if the match is a string
+ var row = {
+ value: value,
+ data: rawValue,
+ result: options.formatResult && options.formatResult(rawValue) || value
+ };
+
+ // push the current match into the set list
+ stMatchSets[firstChar].push(row);
+
+ // keep track of minChars zero items
+ if ( nullData++ < options.max ) {
+ stMatchSets[""].push(row);
+ }
+ };
+
+ // add the data items to the cache
+ $.each(stMatchSets, function(i, value) {
+ // increase the cache size
+ options.cacheLength++;
+ // add to the cache
+ add(i, value);
+ });
+ }
+
+ // populate any existing data
+ setTimeout(populate, 25);
+
+ function flush(){
+ data = {};
+ length = 0;
+ }
+
+ return {
+ flush: flush,
+ add: add,
+ populate: populate,
+ load: function(q) {
+ if (!options.cacheLength || !length)
+ return null;
+ /*
+ * if dealing w/local data and matchContains than we must make sure
+ * to loop through all the data collections looking for matches
+ */
+ if( !options.url && options.matchContains ){
+ // track all matches
+ var csub = [];
+ // loop through all the data grids for matches
+ for( var k in data ){
+ // don't search through the stMatchSets[""] (minChars: 0) cache
+ // this prevents duplicates
+ if( k.length > 0 ){
+ var c = data[k];
+ $.each(c, function(i, x) {
+ // if we've got a match, add it to the array
+ if (matchSubset(x.value, q)) {
+ csub.push(x);
+ }
+ });
+ }
+ }
+ return csub;
+ } else
+ // if the exact item exists, use it
+ if (data[q]){
+ return data[q];
+ } else
+ if (options.matchSubset) {
+ for (var i = q.length - 1; i >= options.minChars; i--) {
+ var c = data[q.substr(0, i)];
+ if (c) {
+ var csub = [];
+ $.each(c, function(i, x) {
+ if (matchSubset(x.value, q)) {
+ csub[csub.length] = x;
+ }
+ });
+ return csub;
+ }
+ }
+ }
+ return null;
+ }
+ };
+};
+
+$.Autocompleter.Select = function (options, input, select, config) {
+ var CLASSES = {
+ ACTIVE: "ac_over"
+ };
+
+ var listItems,
+ active = -1,
+ data,
+ term = "",
+ needsInit = true,
+ element,
+ list;
+
+ // Create results
+ function init() {
+ if (!needsInit)
+ return;
+ element = $("<div/>")
+ .hide()
+ .addClass(options.resultsClass)
+ .css("position", "absolute")
+ .appendTo(document.body);
+
+ list = $("<ul/>").appendTo(element).mouseover( function(event) {
+ if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
+ active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
+ $(target(event)).addClass(CLASSES.ACTIVE);
+ }
+ }).click(function(event) {
+ $(target(event)).addClass(CLASSES.ACTIVE);
+ select();
+ // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
+ input.focus();
+ return false;
+ }).mousedown(function() {
+ config.mouseDownOnSelect = true;
+ }).mouseup(function() {
+ config.mouseDownOnSelect = false;
+ });
+
+ if( options.width > 0 )
+ element.css("width", options.width);
+
+ needsInit = false;
+ }
+
+ function target(event) {
+ var element = event.target;
+ while(element && element.tagName != "LI")
+ element = element.parentNode;
+ // more fun with IE, sometimes event.target is empty, just ignore it then
+ if(!element)
+ return [];
+ return element;
+ }
+
+ function moveSelect(step) {
+ listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
+ movePosition(step);
+ var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
+ if(options.scroll) {
+ var offset = 0;
+ listItems.slice(0, active).each(function() {
+ offset += this.offsetHeight;
+ });
+ if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
+ list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
+ } else if(offset < list.scrollTop()) {
+ list.scrollTop(offset);
+ }
+ }
+ };
+
+ function movePosition(step) {
+ active += step;
+ if (active < 0) {
+ active = listItems.size() - 1;
+ } else if (active >= listItems.size()) {
+ active = 0;
+ }
+ }
+
+ function limitNumberOfItems(available) {
+ return options.max && options.max < available
+ ? options.max
+ : available;
+ }
+
+ function fillList() {
+ list.empty();
+ var max = limitNumberOfItems(data.length);
+ for (var i=0; i < max; i++) {
+ if (!data[i])
+ continue;
+ var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
+ if ( formatted === false )
+ continue;
+ var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
+ $.data(li, "ac_data", data[i]);
+ }
+ listItems = list.find("li");
+ if ( options.selectFirst ) {
+ listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
+ active = 0;
+ }
+ // apply bgiframe if available
+ if ( $.fn.bgiframe )
+ list.bgiframe();
+ }
+
+ return {
+ display: function(d, q) {
+ init();
+ data = d;
+ term = q;
+ fillList();
+ },
+ next: function() {
+ moveSelect(1);
+ },
+ prev: function() {
+ moveSelect(-1);
+ },
+ pageUp: function() {
+ if (active != 0 && active - 8 < 0) {
+ moveSelect( -active );
+ } else {
+ moveSelect(-8);
+ }
+ },
+ pageDown: function() {
+ if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
+ moveSelect( listItems.size() - 1 - active );
+ } else {
+ moveSelect(8);
+ }
+ },
+ hide: function() {
+ element && element.hide();
+ listItems && listItems.removeClass(CLASSES.ACTIVE);
+ active = -1;
+ },
+ visible : function() {
+ return element && element.is(":visible");
+ },
+ current: function() {
+ return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
+ },
+ show: function() {
+ var offset = $(input).offset();
+ element.css({
+ width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).innerWidth(),
+ top: offset.top + input.offsetHeight,
+ left: offset.left
+ }).show();
+ options.show(element);
+ if(options.scroll) {
+ list.scrollTop(0);
+ list.css({
+ maxHeight: options.scrollHeight,
+ overflow: 'auto'
+ });
+
+ if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
+ var listHeight = 0;
+ listItems.each(function() {
+ listHeight += this.offsetHeight;
+ });
+ var scrollbarsVisible = listHeight > options.scrollHeight;
+ list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
+ if (!scrollbarsVisible) {
+ // IE doesn't recalculate width when scrollbar disappears
+ listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
+ }
+ }
+
+ }
+ },
+ selected: function() {
+ var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
+ return selected && selected.length && $.data(selected[0], "ac_data");
+ },
+ emptyList: function (){
+ list && list.empty();
+ },
+ unbind: function() {
+ element && element.remove();
+ }
+ };
+};
+
+$.fn.selection = function(start, end) {
+ if (start !== undefined) {
+ return this.each(function() {
+ if( this.createTextRange ){
+ var selRange = this.createTextRange();
+ if (end === undefined || start == end) {
+ selRange.move("character", start);
+ selRange.select();
+ } else {
+ selRange.collapse(true);
+ selRange.moveStart("character", start);
+ selRange.moveEnd("character", end);
+ selRange.select();
+ }
+ } else if( this.setSelectionRange ){
+ this.setSelectionRange(start, end);
+ } else if( this.selectionStart ){
+ this.selectionStart = start;
+ this.selectionEnd = end;
+ }
+ });
+ }
+ var field = this[0];
+ if ( field.createTextRange ) {
+ var range = document.selection.createRange(),
+ orig = field.value,
+ teststring = "<->",
+ textLength = range.text.length;
+ range.text = teststring;
+ var caretAt = field.value.indexOf(teststring);
+ field.value = orig;
+ this.selection(caretAt, caretAt + textLength);
+ return {
+ start: caretAt,
+ end: caretAt + textLength
+ }
+ } else if( field.selectionStart !== undefined ){
+ return {
+ start: field.selectionStart,
+ end: field.selectionEnd
+ }
+ }
+};
+
+})(jQuery); \ No newline at end of file
diff --git a/buildscripts/apigen/pradosoft/js/jquery.cookie.js b/buildscripts/apigen/pradosoft/js/jquery.cookie.js
new file mode 100644
index 00000000..6df1faca
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/js/jquery.cookie.js
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+}; \ No newline at end of file
diff --git a/buildscripts/apigen/pradosoft/js/jquery.min.js b/buildscripts/apigen/pradosoft/js/jquery.min.js
new file mode 100644
index 00000000..3ca5e0f5
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/js/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7 jquery.com | jquery.org/license */
+(function(a,b){function cA(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cx(a){if(!cm[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cd(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function cc(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bG.test(a)?d(a,e):cc(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)cc(a+"["+e+"]",b[e],c,d);else d(a,b)}function cb(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function ca(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bV,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=ca(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=ca(a,c,d,e,"*",g));return l}function b_(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bR),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bE(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bz:bA;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bl(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a){var b=Y.split(" "),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(I)return I.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())}),typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return e});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){return i.done.apply(i,arguments).fail.apply(i,arguments)},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/><nav></nav>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.style.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h<g;h++)e=d[h].toLowerCase(),c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1)}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return b;h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&&
+(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k<c.length;k++){l=E.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,namespace:n.join(".")},p),g&&(o.quick=J(g),!o.quick&&f.expr.match.POS.test(g)&&(o.isPositional=!0)),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d){var e=f.hasData(a)&&f._data(a),g,h,i,j,k,l,m,n,o,p,q;if(!!e&&!!(m=e.events)){b=L(b||"").split(" ");for(g=0;g<b.length;g++){h=E.exec(b[g])||[],i=h[1],j=h[2];if(!i){j=j?"."+j:"";for(l in m)f.event.remove(a,l+j,c,d);return}n=f.event.special[i]||{},i=(d?n.delegateType:n.bindType)||i,p=m[i]||[],k=p.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;if(c||j||d||n.remove)for(l=0;l<p.length;l++){q=p[l];if(!c||c.guid===q.guid)if(!j||j.test(q.namespace))if(!d||d===q.selector||d==="**"&&q.selector)p.splice(l--,1),q.selector&&p.delegateCount--,n.remove&&n.remove.call(a,q)}else p.length=0;p.length===0&&k!==p.length&&((!n.teardown||n.teardown.call(a,j)===!1)&&f.removeEvent(a,i,e.handle),delete m[i])}f.isEmptyObject(m)&&(o=e.handle,o&&(o.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length;l++){m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d);if(c.isPropagationStopped())break}c.type=h,c.isDefaultPrevented()||(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=(f.event.special[c.type]||{}).handle,j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click"))for(m=c.target;m!=this;m=m.parentNode||this){o={},q=[];for(k=0;k<e;k++)r=d[k],s=r.selector,t=o[s],r.isPositional?t=(t||(o[s]=f(s))).index(m)>=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){p=j[k],c.currentTarget=p.elem;for(l=0;l<p.matches.length&&!c.isImmediatePropagationStopped();l++){r=p.matches[l];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=(i||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},focus:{delegateType:"focusin",noBubble:!0},blur:{delegateType:"focusout",noBubble:!0},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?N:M):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=N;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=N;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=N,this.stopPropagation()},isDefaultPrevented:M,isPropagationStopped:M,isImmediatePropagationStopped:M},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]=f.event.special[b]={delegateType:b,bindType:b,handle:function(a){var b=this,c=a.relatedTarget,d=a.handleObj,e=d.selector,g,h;if(!c||d.origType===a.type||c!==b&&!f.contains(b,c))g=a.type,a.type=d.origType,h=d.handler.apply(this,arguments),a.type=g;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(A.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;A.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return A.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=M;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=M);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw"Syntax error, unrecognized expression: "+a};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?T.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/<tbody/i,bc=/<|&#?\w+;/,bd=/<(?:script|style)/i,be=/<(?:script|object|embed|option|style)/i,bf=new RegExp("<(?:"+Y.replace(" ","|")+")","i"),bg=/checked\s*(?:[^=]|=\s*.checked.)/i,bh=/\/(java|ecma)script/i,bi=/^\s*<!(?:\[CDATA\[|\-\-)/,bj={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after"
+,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bg.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bl(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,br)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!be.test(j)&&(f.support.checkClone||!bg.test(j))&&!f.support.unknownElems&&bf.test(j)&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1></$2>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bq(k[i]);else bq(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bh.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bs=/alpha\([^)]*\)/i,bt=/opacity=([^)]*)/,bu=/([A-Z]|^ms)/g,bv=/^-?\d+(?:px)?$/i,bw=/^-?\d/,bx=/^([\-+])=([\-+.\de]+)/,by={position:"absolute",visibility:"hidden",display:"block"},bz=["Left","Right"],bA=["Top","Bottom"],bB,bC,bD;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bB(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bx.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bB)return bB(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bE(a,b,d);f.swap(a,by,function(){e=bE(a,b,d)});return e}},set:function(a,b){if(!bv.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cx(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cw("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cw("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cx(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cp.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=cq.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cw("show",1),slideUp:cw("hide",1),slideToggle:cw("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=ct||cu(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cr&&(cr=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=ct||cu(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cr),cr=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now))}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cy=/^t(?:able|d|h)$/i,cz=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cA(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cy.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cz.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cz.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cA(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cA(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/buildscripts/apigen/pradosoft/js/jquery.sortElements.js b/buildscripts/apigen/pradosoft/js/jquery.sortElements.js
new file mode 100644
index 00000000..61f60de8
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/js/jquery.sortElements.js
@@ -0,0 +1,69 @@
+/**
+ * jQuery.fn.sortElements
+ * --------------
+ * @author James Padolsey (http://james.padolsey.com)
+ * @version 0.11
+ * @updated 18-MAR-2010
+ * --------------
+ * @param Function comparator:
+ * Exactly the same behaviour as [1,2,3].sort(comparator)
+ *
+ * @param Function getSortable
+ * A function that should return the element that is
+ * to be sorted. The comparator will run on the
+ * current collection, but you may want the actual
+ * resulting sort to occur on a parent or another
+ * associated element.
+ *
+ * E.g. $('td').sortElements(comparator, function(){
+ * return this.parentNode;
+ * })
+ *
+ * The <td>'s parent (<tr>) will be sorted instead
+ * of the <td> itself.
+ */
+jQuery.fn.sortElements = (function(){
+
+ var sort = [].sort;
+
+ return function(comparator, getSortable) {
+
+ getSortable = getSortable || function(){return this;};
+
+ var placements = this.map(function(){
+
+ var sortElement = getSortable.call(this),
+ parentNode = sortElement.parentNode,
+
+ // Since the element itself will change position, we have
+ // to have some way of storing it's original position in
+ // the DOM. The easiest way is to have a 'flag' node:
+ nextSibling = parentNode.insertBefore(
+ document.createTextNode(''),
+ sortElement.nextSibling
+ );
+
+ return function() {
+
+ if (parentNode === this) {
+ throw new Error(
+ "You can't sort elements if any one is a descendant of another."
+ );
+ }
+
+ // Insert before flag:
+ parentNode.insertBefore(this, nextSibling);
+ // Remove flag:
+ parentNode.removeChild(nextSibling);
+
+ };
+
+ });
+
+ return sort.call(this, comparator).each(function(i){
+ placements[i].call(getSortable.call(this));
+ });
+
+ };
+
+})(); \ No newline at end of file
diff --git a/buildscripts/apigen/pradosoft/js/jquery.sprintf.js b/buildscripts/apigen/pradosoft/js/jquery.sprintf.js
new file mode 100644
index 00000000..2eed7fdd
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/js/jquery.sprintf.js
@@ -0,0 +1,8 @@
+/*!
+ * sprintf and vsprintf for jQuery
+ * somewhat based on http://jan.moesen.nu/code/javascript/sprintf-and-printf-in-javascript/
+ * Copyright (c) 2008 Sabin Iacob (m0n5t3r) <iacobs@m0n5t3r.info>
+ * @license http://www.gnu.org/licenses/gpl.html
+ * @project jquery.sprintf
+ */
+(function(d){var a={b:function(e){return parseInt(e,10).toString(2)},c:function(e){return String.fromCharCode(parseInt(e,10))},d:function(e){return parseInt(e,10)},u:function(e){return Math.abs(e)},f:function(f,e){e=parseInt(e,10);f=parseFloat(f);if(isNaN(e&&f)){return NaN}return e&&f.toFixed(e)||f},o:function(e){return parseInt(e,10).toString(8)},s:function(e){return e},x:function(e){return(""+parseInt(e,10).toString(16)).toLowerCase()},X:function(e){return(""+parseInt(e,10).toString(16)).toUpperCase()}};var c=/%(?:(\d+)?(?:\.(\d+))?|\(([^)]+)\))([%bcdufosxX])/g;var b=function(f){if(f.length==1&&typeof f[0]=="object"){f=f[0];return function(i,h,k,j,g,m,l){return a[g](f[j])}}else{var e=0;return function(i,h,k,j,g,m,l){if(g=="%"){return"%"}return a[g](f[e++],k)}}};d.extend({sprintf:function(f){var e=Array.apply(null,arguments).slice(1);return f.replace(c,b(e))},vsprintf:function(f,e){return f.replace(c,b(e))}})})(jQuery);
diff --git a/buildscripts/apigen/pradosoft/js/main.js b/buildscripts/apigen/pradosoft/js/main.js
new file mode 100644
index 00000000..a0a890ab
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/js/main.js
@@ -0,0 +1,282 @@
+/*!
+ * ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+ *
+ * Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+ * Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+ * Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+ *
+ * For the full copyright and license information, please view
+ * the file LICENSE.md that was distributed with this source code.
+ */
+
+$(function() {
+ var $document = $(document);
+ var $left = $('#left');
+ var $right = $('#right');
+ var $rightInner = $('#rightInner');
+ var $splitter = $('#splitter');
+ var $groups = $('#groups');
+ var $content = $('#content');
+
+ // Menu
+
+ // Hide deep packages and namespaces
+ $('ul span', $groups).click(function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ $(this)
+ .toggleClass('collapsed')
+ .parent()
+ .next('ul')
+ .toggleClass('collapsed');
+ }).click();
+
+ $active = $('ul li.active', $groups);
+ if ($active.length > 0) {
+ // Open active
+ $('> a > span', $active).click();
+ } else {
+ $main = $('> ul > li.main', $groups);
+ if ($main.length > 0) {
+ // Open first level of the main project
+ $('> a > span', $main).click();
+ } else {
+ // Open first level of all
+ $('> ul > li > a > span', $groups).click();
+ }
+ }
+
+ // Content
+
+ // Search autocompletion
+ var autocompleteFound = false;
+ var autocompleteFiles = {'c': 'class', 'co': 'constant', 'f': 'function', 'm': 'class', 'mm': 'class', 'p': 'class', 'mp': 'class', 'cc': 'class'};
+ var $search = $('#search input[name=q]');
+ $search
+ .autocomplete(ApiGen.elements, {
+ matchContains: true,
+ scrollHeight: 200,
+ max: 20,
+ formatItem: function(data) {
+ return data[1].replace(/^(.+\\)(.+)$/, '<span><small>$1</small>$2</span>');
+ },
+ formatMatch: function(data) {
+ return data[1];
+ },
+ formatResult: function(data) {
+ return data[1];
+ },
+ show: function($list) {
+ var $items = $('li span', $list);
+ var maxWidth = Math.max.apply(null, $items.map(function() {
+ return $(this).width();
+ }));
+ // 10px padding
+ $list
+ .width(Math.max(maxWidth + 10, $search.innerWidth()))
+ .css('left', $search.offset().left + $search.outerWidth() - $list.outerWidth());
+ }
+ }).result(function(event, data) {
+ autocompleteFound = true;
+ var location = window.location.href.split('/');
+ location.pop();
+ var parts = data[1].split(/::|$/);
+ var file = $.sprintf(ApiGen.config.templates.main[autocompleteFiles[data[0]]].filename, parts[0].replace(/[^\w]/g, '.'));
+ if (parts[1]) {
+ file += '#' + ('mm' === data[0] || 'mp' === data[0] ? 'm' : '') + parts[1].replace(/([\w]+)\(\)/, '_$1');
+ }
+ location.push(file);
+ window.location = location.join('/');
+
+ // Workaround for Opera bug
+ $(this).closest('form').attr('action', location.join('/'));
+ }).closest('form')
+ .submit(function() {
+ var query = $search.val();
+ if ('' === query) {
+ return false;
+ }
+
+ var label = $('#search input[name=more]').val();
+ if (!autocompleteFound && label && -1 === query.indexOf('more:')) {
+ $search.val(query + ' more:' + label);
+ }
+
+ return !autocompleteFound && '' !== $('#search input[name=cx]').val();
+ });
+
+ // Save natural order
+ $('table.summary tr[data-order]', $content).each(function(index) {
+ do {
+ index = '0' + index;
+ } while (index.length < 3);
+ $(this).attr('data-order-natural', index);
+ });
+
+ // Switch between natural and alphabetical order
+ var $caption = $('table.summary', $content)
+ .filter(':has(tr[data-order])')
+ .find('caption');
+ $caption
+ .click(function() {
+ var $this = $(this);
+ var order = $this.data('order') || 'natural';
+ order = 'natural' === order ? 'alphabetical' : 'natural';
+ $this.data('order', order);
+ $.cookie('order', order, {expires: 365});
+ var attr = 'alphabetical' === order ? 'data-order' : 'data-order-natural';
+ $this
+ .closest('table')
+ .find('tr').sortElements(function(a, b) {
+ return $(a).attr(attr) > $(b).attr(attr) ? 1 : -1;
+ });
+ return false;
+ })
+ .addClass('switchable')
+ .attr('title', 'Switch between natural and alphabetical order');
+ if ((null === $.cookie('order') && 'alphabetical' === ApiGen.config.options.elementsOrder) || 'alphabetical' === $.cookie('order')) {
+ $caption.click();
+ }
+
+ // Open details
+ if (ApiGen.config.options.elementDetailsCollapsed) {
+ $('tr', $content).filter(':has(.detailed)')
+ .click(function() {
+ var $this = $(this);
+ $('.short', $this).hide();
+ $('.detailed', $this).show();
+ });
+ }
+
+ // Splitter
+ var splitterWidth = $splitter.width();
+ function setSplitterPosition(position)
+ {
+ $left.width(position);
+ $right.css('margin-left', position + splitterWidth);
+ $splitter.css('left', position);
+ }
+ function setNavigationPosition()
+ {
+ var width = $rightInner.width();
+ $rightInner
+ .toggleClass('medium', width <= 960)
+ .toggleClass('small', width <= 650);
+ }
+ $splitter.mousedown(function() {
+ $splitter.addClass('active');
+
+ $document.mousemove(function(event) {
+ if (event.pageX >= 230 && $document.width() - event.pageX >= 600 + splitterWidth) {
+ setSplitterPosition(event.pageX);
+ setNavigationPosition();
+ }
+ });
+
+ $()
+ .add($splitter)
+ .add($document)
+ .mouseup(function() {
+ $splitter
+ .removeClass('active')
+ .unbind('mouseup');
+ $document
+ .unbind('mousemove')
+ .unbind('mouseup');
+
+ $.cookie('splitter', parseInt($splitter.css('left')), {expires: 365});
+ });
+
+ return false;
+ });
+ /*
+ var splitterPosition = $.cookie('splitter');
+ if (null !== splitterPosition) {
+ setSplitterPosition(parseInt(splitterPosition));
+ }
+ setNavigationPosition();
+ $(window).resize(setNavigationPosition);
+*/
+ // Select selected lines
+ var matches = window.location.hash.substr(1).match(/^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$/);
+ if (null !== matches) {
+ var lists = matches[0].split(',');
+ for (var i = 0; i < lists.length; i++) {
+ var lines = lists[i].split('-');
+ lines[1] = lines[1] || lines[0];
+ for (var j = lines[0]; j <= lines[1]; j++) {
+ $('#' + j).addClass('selected');
+ }
+ }
+
+ var $firstLine = $('#' + parseInt(matches[0]));
+ if ($firstLine.length > 0) {
+ $right.scrollTop($firstLine.offset().top);
+ }
+ }
+
+ // Save selected lines
+ var lastLine;
+ $('a.l').click(function(event) {
+ event.preventDefault();
+
+ var $selectedLine = $(this).parent();
+ var selectedLine = parseInt($selectedLine.attr('id'));
+
+ if (event.shiftKey) {
+ if (lastLine) {
+ for (var i = Math.min(selectedLine, lastLine); i <= Math.max(selectedLine, lastLine); i++) {
+ $('#' + i).addClass('selected');
+ }
+ } else {
+ $selectedLine.addClass('selected');
+ }
+ } else if (event.ctrlKey) {
+ $selectedLine.toggleClass('selected');
+ } else {
+ var $selected = $('.l.selected')
+ .not($selectedLine)
+ .removeClass('selected');
+ if ($selected.length > 0) {
+ $selectedLine.addClass('selected');
+ } else {
+ $selectedLine.toggleClass('selected');
+ }
+ }
+
+ lastLine = $selectedLine.hasClass('selected') ? selectedLine : null;
+
+ // Update hash
+ var lines = $('.l.selected')
+ .map(function() {
+ return parseInt($(this).attr('id'));
+ })
+ .get()
+ .sort(function(a, b) {
+ return a - b;
+ });
+
+ var hash = [];
+ var list = [];
+ for (var j = 0; j < lines.length; j++) {
+ if (0 === j && j + 1 === lines.length) {
+ hash.push(lines[j]);
+ } else if (0 === j) {
+ list[0] = lines[j];
+ } else if (lines[j - 1] + 1 !== lines[j] && j + 1 === lines.length) {
+ hash.push(list.join('-'));
+ hash.push(lines[j]);
+ } else if (lines[j - 1] + 1 !== lines[j]) {
+ hash.push(list.join('-'));
+ list = [lines[j]];
+ } else if (j + 1 === lines.length) {
+ list[1] = lines[j];
+ hash.push(list.join('-'));
+ } else {
+ list[1] = lines[j];
+ }
+ }
+
+ window.location.hash = hash.join(',');
+ });
+});
diff --git a/buildscripts/apigen/pradosoft/namespace.latte b/buildscripts/apigen/pradosoft/namespace.latte
new file mode 100644
index 00000000..3b9a0cb3
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/namespace.latte
@@ -0,0 +1,29 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'namespace'}
+
+{block #title}{if $namespace != 'None'}Namespace {$namespace}{else}No namespace{/if}{/block}
+
+{block #content}
+<div id="content" class="namespace">
+ <h1>{if $namespace != 'None'}Namespace {!$namespace|namespaceLinks:false}{else}No namespace{/if}</h1>
+
+ <table class="summary" id="namespaces" n:if="$subnamespaces">
+ <caption>Namespaces summary</caption>
+ <tr n:foreach="$subnamespaces as $namespace">
+ <td class="name"><a href="{$namespace|namespaceUrl}">{$namespace}</a></td>
+ </tr>
+ </table>
+
+ {include '@elementlist.latte'}
+</div>
+{/block}
diff --git a/buildscripts/apigen/pradosoft/opensearch.xml.latte b/buildscripts/apigen/pradosoft/opensearch.xml.latte
new file mode 100644
index 00000000..35451189
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/opensearch.xml.latte
@@ -0,0 +1,20 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+<?xml version="1.0" encoding="UTF-8"?>
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+<ShortName>{$config->title}</ShortName>
+<Description>{$config->title} Documentation</Description>
+<Url type="text/html" method="GET" template="http://www.google.com/cse?cx={$config->googleCseId|url}&amp;ie=UTF-8&amp;q={l}searchTerms{r}{if $config->googleCseLabel}{!' more:'|url}{$config->googleCseLabel}{/if}"/>
+<Image width="16" height="16">{$config->baseUrl}/favicon.ico</Image>
+<SyndicationRight>open</SyndicationRight>
+<InputEncoding>UTF-8</InputEncoding>
+<OutputEncoding>UTF-8</OutputEncoding>
+</OpenSearchDescription>
diff --git a/buildscripts/apigen/pradosoft/overview.latte b/buildscripts/apigen/pradosoft/overview.latte
new file mode 100644
index 00000000..96d205ff
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/overview.latte
@@ -0,0 +1,56 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'overview'}
+
+{block #title}{$config->title ?: 'Overview'}{/block}
+
+{block #content}
+<div id="content">
+ <h1>{include #title}</h1>
+
+ {var $group = false}
+
+ {if $namespaces}
+ {if}
+ <table class="summary" id="namespaces">
+ <caption>Namespaces summary</caption>
+ {foreach $namespaces as $namespace}
+ {continueIf $config->main && 0 !== strpos($namespace, $config->main)}
+ <tr>
+ {var $group = true}
+ <td class="name"><a href="{$namespace|namespaceUrl}">{$namespace}</a></td>
+ </tr>
+ {/foreach}
+ </table>
+ {/if $iterations}
+ {/if}
+
+ {if $packages}
+ {if}
+ <table class="summary" id="packages">
+ <caption>Packages summary</caption>
+ {foreach $packages as $package}
+ {continueIf $config->main && 0 !== strpos($package, $config->main)}
+ <tr>
+ {var $group = true}
+ <td class="name"><a href="{$package|packageUrl}">{$package}</a></td>
+ </tr>
+ {/foreach}
+ </table>
+ {/if $iterations}
+ {/if}
+
+ {if !$group}
+ {include '@elementlist.latte'}
+ {/if}
+</div>
+{/block} \ No newline at end of file
diff --git a/buildscripts/apigen/pradosoft/package.latte b/buildscripts/apigen/pradosoft/package.latte
new file mode 100644
index 00000000..0d940015
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/package.latte
@@ -0,0 +1,29 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'package'}
+
+{block #title}{if $package != 'None'}Package {$package}{else}No package{/if}{/block}
+
+{block #content}
+<div id="content" class="package">
+ <h1>{if $package != 'None'}Package {!$package|packageLinks:false}{else}No package{/if}</h1>
+
+ <table class="summary" id="packages" n:if="$subpackages">
+ <caption>Packages summary</caption>
+ <tr n:foreach="$subpackages as $package">
+ <td class="name"><a href="{$package|packageUrl}">{$package}</a></td>
+ </tr>
+ </table>
+
+ {include '@elementlist.latte'}
+</div>
+{/block}
diff --git a/buildscripts/apigen/pradosoft/resources/collapsed.png b/buildscripts/apigen/pradosoft/resources/collapsed.png
new file mode 100644
index 00000000..19164596
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/collapsed.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/combined.js b/buildscripts/apigen/pradosoft/resources/combined.js
new file mode 100644
index 00000000..40520b94
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/combined.js
@@ -0,0 +1,1219 @@
+
+var ApiGen = ApiGen || {};
+ApiGen.config = {"require":{"min":"2.8.0"},"resources":{"resources":"resources"},"templates":{"common":{"overview.latte":"index.html","combined.js.latte":"resources\/combined.js","elementlist.js.latte":"elementlist.js","404.latte":"404.html"},"optional":{"sitemap":{"filename":"sitemap.xml","template":"sitemap.xml.latte"},"opensearch":{"filename":"opensearch.xml","template":"opensearch.xml.latte"},"robots":{"filename":"robots.txt","template":"robots.txt.latte"}},"main":{"package":{"filename":"package-%s.html","template":"package.latte"},"namespace":{"filename":"namespace-%s.html","template":"namespace.latte"},"class":{"filename":"class-%s.html","template":"class.latte"},"constant":{"filename":"constant-%s.html","template":"constant.latte"},"function":{"filename":"function-%s.html","template":"function.latte"},"source":{"filename":"source-%s.html","template":"source.latte"},"tree":{"filename":"tree.html","template":"tree.latte"},"deprecated":{"filename":"deprecated.html","template":"deprecated.latte"},"todo":{"filename":"todo.html","template":"todo.latte"}}},"options":{"elementDetailsCollapsed":true,"elementsOrder":"natural"},"config":"\/Users\/fab\/Sites\/prado-3.2\/buildscripts\/apigen\/pradosoft\/config.neon"};
+
+
+/*! jQuery v1.7 jquery.com | jquery.org/license */
+(function(a,b){function cA(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cx(a){if(!cm[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cd(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function cc(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bG.test(a)?d(a,e):cc(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)cc(a+"["+e+"]",b[e],c,d);else d(a,b)}function cb(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function ca(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bV,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=ca(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=ca(a,c,d,e,"*",g));return l}function b_(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bR),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bE(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bz:bA;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bl(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a){var b=Y.split(" "),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(I)return I.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())}),typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return e});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){return i.done.apply(i,arguments).fail.apply(i,arguments)},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/><nav></nav>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.style.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h<g;h++)e=d[h].toLowerCase(),c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1)}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return b;h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&&
+(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k<c.length;k++){l=E.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,namespace:n.join(".")},p),g&&(o.quick=J(g),!o.quick&&f.expr.match.POS.test(g)&&(o.isPositional=!0)),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d){var e=f.hasData(a)&&f._data(a),g,h,i,j,k,l,m,n,o,p,q;if(!!e&&!!(m=e.events)){b=L(b||"").split(" ");for(g=0;g<b.length;g++){h=E.exec(b[g])||[],i=h[1],j=h[2];if(!i){j=j?"."+j:"";for(l in m)f.event.remove(a,l+j,c,d);return}n=f.event.special[i]||{},i=(d?n.delegateType:n.bindType)||i,p=m[i]||[],k=p.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;if(c||j||d||n.remove)for(l=0;l<p.length;l++){q=p[l];if(!c||c.guid===q.guid)if(!j||j.test(q.namespace))if(!d||d===q.selector||d==="**"&&q.selector)p.splice(l--,1),q.selector&&p.delegateCount--,n.remove&&n.remove.call(a,q)}else p.length=0;p.length===0&&k!==p.length&&((!n.teardown||n.teardown.call(a,j)===!1)&&f.removeEvent(a,i,e.handle),delete m[i])}f.isEmptyObject(m)&&(o=e.handle,o&&(o.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length;l++){m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d);if(c.isPropagationStopped())break}c.type=h,c.isDefaultPrevented()||(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=(f.event.special[c.type]||{}).handle,j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click"))for(m=c.target;m!=this;m=m.parentNode||this){o={},q=[];for(k=0;k<e;k++)r=d[k],s=r.selector,t=o[s],r.isPositional?t=(t||(o[s]=f(s))).index(m)>=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){p=j[k],c.currentTarget=p.elem;for(l=0;l<p.matches.length&&!c.isImmediatePropagationStopped();l++){r=p.matches[l];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=(i||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement wheelDelta".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},focus:{delegateType:"focusin",noBubble:!0},blur:{delegateType:"focusout",noBubble:!0},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?N:M):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=N;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=N;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=N,this.stopPropagation()},isDefaultPrevented:M,isPropagationStopped:M,isImmediatePropagationStopped:M},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]=f.event.special[b]={delegateType:b,bindType:b,handle:function(a){var b=this,c=a.relatedTarget,d=a.handleObj,e=d.selector,g,h;if(!c||d.origType===a.type||c!==b&&!f.contains(b,c))g=a.type,a.type=d.origType,h=d.handler.apply(this,arguments),a.type=g;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(A.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;A.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return A.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=M;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=M);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw"Syntax error, unrecognized expression: "+a};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?T.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/<tbody/i,bc=/<|&#?\w+;/,bd=/<(?:script|style)/i,be=/<(?:script|object|embed|option|style)/i,bf=new RegExp("<(?:"+Y.replace(" ","|")+")","i"),bg=/checked\s*(?:[^=]|=\s*.checked.)/i,bh=/\/(java|ecma)script/i,bi=/^\s*<!(?:\[CDATA\[|\-\-)/,bj={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after"
+,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bg.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bl(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,br)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!be.test(j)&&(f.support.checkClone||!bg.test(j))&&!f.support.unknownElems&&bf.test(j)&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1></$2>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bq(k[i]);else bq(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bh.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bs=/alpha\([^)]*\)/i,bt=/opacity=([^)]*)/,bu=/([A-Z]|^ms)/g,bv=/^-?\d+(?:px)?$/i,bw=/^-?\d/,bx=/^([\-+])=([\-+.\de]+)/,by={position:"absolute",visibility:"hidden",display:"block"},bz=["Left","Right"],bA=["Top","Bottom"],bB,bC,bD;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bB(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bx.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bB)return bB(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bE(a,b,d);f.swap(a,by,function(){e=bE(a,b,d)});return e}},set:function(a,b){if(!bv.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cx(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cw("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cw("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cx(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cp.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=cq.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cw("show",1),slideUp:cw("hide",1),slideToggle:cw("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=ct||cu(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cr&&(cr=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=ct||cu(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cr),cr=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now))}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cy=/^t(?:able|d|h)$/i,cz=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cA(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cy.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cz.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cz.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cA(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cA(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+};
+/*!
+ * sprintf and vsprintf for jQuery
+ * somewhat based on http://jan.moesen.nu/code/javascript/sprintf-and-printf-in-javascript/
+ * Copyright (c) 2008 Sabin Iacob (m0n5t3r) <iacobs@m0n5t3r.info>
+ * @license http://www.gnu.org/licenses/gpl.html
+ * @project jquery.sprintf
+ */
+(function(d){var a={b:function(e){return parseInt(e,10).toString(2)},c:function(e){return String.fromCharCode(parseInt(e,10))},d:function(e){return parseInt(e,10)},u:function(e){return Math.abs(e)},f:function(f,e){e=parseInt(e,10);f=parseFloat(f);if(isNaN(e&&f)){return NaN}return e&&f.toFixed(e)||f},o:function(e){return parseInt(e,10).toString(8)},s:function(e){return e},x:function(e){return(""+parseInt(e,10).toString(16)).toLowerCase()},X:function(e){return(""+parseInt(e,10).toString(16)).toUpperCase()}};var c=/%(?:(\d+)?(?:\.(\d+))?|\(([^)]+)\))([%bcdufosxX])/g;var b=function(f){if(f.length==1&&typeof f[0]=="object"){f=f[0];return function(i,h,k,j,g,m,l){return a[g](f[j])}}else{var e=0;return function(i,h,k,j,g,m,l){if(g=="%"){return"%"}return a[g](f[e++],k)}}};d.extend({sprintf:function(f){var e=Array.apply(null,arguments).slice(1);return f.replace(c,b(e))},vsprintf:function(f,e){return f.replace(c,b(e))}})})(jQuery);
+
+/*!
+ * jQuery Autocomplete plugin 1.1
+ *
+ * Copyright (c) 2009 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
+ */
+
+;(function($) {
+
+$.fn.extend({
+ autocomplete: function(urlOrData, options) {
+ var isUrl = typeof urlOrData == "string";
+ options = $.extend({}, $.Autocompleter.defaults, {
+ url: isUrl ? urlOrData : null,
+ data: isUrl ? null : urlOrData,
+ delay: isUrl ? $.Autocompleter.defaults.delay : 10,
+ max: options && !options.scroll ? 10 : 150
+ }, options);
+
+ // if highlight is set to false, replace it with a do-nothing function
+ options.highlight = options.highlight || function(value) { return value; };
+
+ // if the formatMatch option is not specified, then use formatItem for backwards compatibility
+ options.formatMatch = options.formatMatch || options.formatItem;
+
+ options.show = options.show || function(list) {};
+
+ return this.each(function() {
+ new $.Autocompleter(this, options);
+ });
+ },
+ result: function(handler) {
+ return this.bind("result", handler);
+ },
+ search: function(handler) {
+ return this.trigger("search", [handler]);
+ },
+ flushCache: function() {
+ return this.trigger("flushCache");
+ },
+ setOptions: function(options){
+ return this.trigger("setOptions", [options]);
+ },
+ unautocomplete: function() {
+ return this.trigger("unautocomplete");
+ }
+});
+
+$.Autocompleter = function(input, options) {
+
+ var KEY = {
+ UP: 38,
+ DOWN: 40,
+ DEL: 46,
+ TAB: 9,
+ RETURN: 13,
+ ESC: 27,
+ COMMA: 188,
+ PAGEUP: 33,
+ PAGEDOWN: 34,
+ BACKSPACE: 8
+ };
+
+ // Create $ object for input element
+ var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
+
+ var timeout;
+ var previousValue = "";
+ var cache = $.Autocompleter.Cache(options);
+ var hasFocus = 0;
+ var lastKeyPressCode;
+ var config = {
+ mouseDownOnSelect: false
+ };
+ var select = $.Autocompleter.Select(options, input, selectCurrent, config);
+
+ // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
+ $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
+ // a keypress means the input has focus
+ // avoids issue where input had focus before the autocomplete was applied
+ hasFocus = 1;
+ // track last key pressed
+ lastKeyPressCode = event.keyCode;
+ switch(event.keyCode) {
+
+ case KEY.UP:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.prev();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ case KEY.DOWN:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.next();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ case KEY.PAGEUP:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.pageUp();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ case KEY.PAGEDOWN:
+ event.preventDefault();
+ if ( select.visible() ) {
+ select.pageDown();
+ } else {
+ onChange(0, true);
+ }
+ break;
+
+ // matches also semicolon
+ case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
+ case KEY.TAB:
+ case KEY.RETURN:
+ if( selectCurrent() ) {
+ //event.preventDefault();
+ //return false;
+ }
+ break;
+
+ case KEY.ESC:
+ select.hide();
+ break;
+
+ default:
+ clearTimeout(timeout);
+ timeout = setTimeout(onChange, options.delay);
+ break;
+ }
+ }).focus(function(){
+ // track whether the field has focus, we shouldn't process any
+ // results if the field no longer has focus
+ hasFocus++;
+ }).blur(function() {
+ hasFocus = 0;
+ if (!config.mouseDownOnSelect) {
+ hideResults();
+ }
+ }).click(function() {
+ // show select when clicking in a focused field
+ if ( hasFocus++ > 1 && !select.visible() ) {
+ onChange(0, true);
+ }
+ }).bind("search", function() {
+ // TODO why not just specifying both arguments?
+ var fn = (arguments.length > 1) ? arguments[1] : null;
+ function findValueCallback(q, data) {
+ var result;
+ if( data && data.length ) {
+ for (var i=0; i < data.length; i++) {
+ if( data[i].result.toLowerCase() == q.toLowerCase() ) {
+ result = data[i];
+ break;
+ }
+ }
+ }
+ if( typeof fn == "function" ) fn(result);
+ else $input.trigger("result", result && [result.data, result.value]);
+ }
+ $.each(trimWords($input.val()), function(i, value) {
+ request(value, findValueCallback, findValueCallback);
+ });
+ }).bind("flushCache", function() {
+ cache.flush();
+ }).bind("setOptions", function() {
+ $.extend(options, arguments[1]);
+ // if we've updated the data, repopulate
+ if ( "data" in arguments[1] )
+ cache.populate();
+ }).bind("unautocomplete", function() {
+ select.unbind();
+ $input.unbind();
+ $(input.form).unbind(".autocomplete");
+ });
+
+
+ function selectCurrent() {
+ var selected = select.selected();
+ if( !selected )
+ return false;
+
+ var v = selected.result;
+ previousValue = v;
+
+ if ( options.multiple ) {
+ var words = trimWords($input.val());
+ if ( words.length > 1 ) {
+ var seperator = options.multipleSeparator.length;
+ var cursorAt = $(input).selection().start;
+ var wordAt, progress = 0;
+ $.each(words, function(i, word) {
+ progress += word.length;
+ if (cursorAt <= progress) {
+ wordAt = i;
+ return false;
+ }
+ progress += seperator;
+ });
+ words[wordAt] = v;
+ // TODO this should set the cursor to the right position, but it gets overriden somewhere
+ //$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
+ v = words.join( options.multipleSeparator );
+ }
+ v += options.multipleSeparator;
+ }
+
+ $input.val(v);
+ hideResultsNow();
+ $input.trigger("result", [selected.data, selected.value]);
+ return true;
+ }
+
+ function onChange(crap, skipPrevCheck) {
+ if( lastKeyPressCode == KEY.DEL ) {
+ select.hide();
+ return;
+ }
+
+ var currentValue = $input.val();
+
+ if ( !skipPrevCheck && currentValue == previousValue )
+ return;
+
+ previousValue = currentValue;
+
+ currentValue = lastWord(currentValue);
+ if ( currentValue.length >= options.minChars) {
+ $input.addClass(options.loadingClass);
+ if (!options.matchCase)
+ currentValue = currentValue.toLowerCase();
+ request(currentValue, receiveData, hideResultsNow);
+ } else {
+ stopLoading();
+ select.hide();
+ }
+ };
+
+ function trimWords(value) {
+ if (!value)
+ return [""];
+ if (!options.multiple)
+ return [$.trim(value)];
+ return $.map(value.split(options.multipleSeparator), function(word) {
+ return $.trim(value).length ? $.trim(word) : null;
+ });
+ }
+
+ function lastWord(value) {
+ if ( !options.multiple )
+ return value;
+ var words = trimWords(value);
+ if (words.length == 1)
+ return words[0];
+ var cursorAt = $(input).selection().start;
+ if (cursorAt == value.length) {
+ words = trimWords(value)
+ } else {
+ words = trimWords(value.replace(value.substring(cursorAt), ""));
+ }
+ return words[words.length - 1];
+ }
+
+ // fills in the input box w/the first match (assumed to be the best match)
+ // q: the term entered
+ // sValue: the first matching result
+ function autoFill(q, sValue){
+ // autofill in the complete box w/the first match as long as the user hasn't entered in more data
+ // if the last user key pressed was backspace, don't autofill
+ if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
+ // fill in the value (keep the case the user has typed)
+ $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
+ // select the portion of the value not typed by the user (so the next character will erase)
+ $(input).selection(previousValue.length, previousValue.length + sValue.length);
+ }
+ };
+
+ function hideResults() {
+ clearTimeout(timeout);
+ timeout = setTimeout(hideResultsNow, 200);
+ };
+
+ function hideResultsNow() {
+ var wasVisible = select.visible();
+ select.hide();
+ clearTimeout(timeout);
+ stopLoading();
+ if (options.mustMatch) {
+ // call search and run callback
+ $input.search(
+ function (result){
+ // if no value found, clear the input box
+ if( !result ) {
+ if (options.multiple) {
+ var words = trimWords($input.val()).slice(0, -1);
+ $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
+ }
+ else {
+ $input.val( "" );
+ $input.trigger("result", null);
+ }
+ }
+ }
+ );
+ }
+ };
+
+ function receiveData(q, data) {
+ if ( data && data.length && hasFocus ) {
+ stopLoading();
+ select.display(data, q);
+ autoFill(q, data[0].value);
+ select.show();
+ } else {
+ hideResultsNow();
+ }
+ };
+
+ function request(term, success, failure) {
+ if (!options.matchCase)
+ term = term.toLowerCase();
+ var data = cache.load(term);
+ // recieve the cached data
+ if (data && data.length) {
+ success(term, data);
+ // if an AJAX url has been supplied, try loading the data now
+ } else if( (typeof options.url == "string") && (options.url.length > 0) ){
+
+ var extraParams = {
+ timestamp: +new Date()
+ };
+ $.each(options.extraParams, function(key, param) {
+ extraParams[key] = typeof param == "function" ? param() : param;
+ });
+
+ $.ajax({
+ // try to leverage ajaxQueue plugin to abort previous requests
+ mode: "abort",
+ // limit abortion to this input
+ port: "autocomplete" + input.name,
+ dataType: options.dataType,
+ url: options.url,
+ data: $.extend({
+ q: lastWord(term),
+ limit: options.max
+ }, extraParams),
+ success: function(data) {
+ var parsed = options.parse && options.parse(data) || parse(data);
+ cache.add(term, parsed);
+ success(term, parsed);
+ }
+ });
+ } else {
+ // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
+ select.emptyList();
+ failure(term);
+ }
+ };
+
+ function parse(data) {
+ var parsed = [];
+ var rows = data.split("\n");
+ for (var i=0; i < rows.length; i++) {
+ var row = $.trim(rows[i]);
+ if (row) {
+ row = row.split("|");
+ parsed[parsed.length] = {
+ data: row,
+ value: row[0],
+ result: options.formatResult && options.formatResult(row, row[0]) || row[0]
+ };
+ }
+ }
+ return parsed;
+ };
+
+ function stopLoading() {
+ $input.removeClass(options.loadingClass);
+ };
+
+};
+
+$.Autocompleter.defaults = {
+ inputClass: "ac_input",
+ resultsClass: "ac_results",
+ loadingClass: "ac_loading",
+ minChars: 1,
+ delay: 400,
+ matchCase: false,
+ matchSubset: true,
+ matchContains: false,
+ cacheLength: 10,
+ max: 100,
+ mustMatch: false,
+ extraParams: {},
+ selectFirst: true,
+ formatItem: function(row) { return row[0]; },
+ formatMatch: null,
+ autoFill: false,
+ width: 0,
+ multiple: false,
+ multipleSeparator: ", ",
+ highlight: function(value, term) {
+ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
+ },
+ scroll: true,
+ scrollHeight: 180
+};
+
+$.Autocompleter.Cache = function(options) {
+
+ var data = {};
+ var length = 0;
+
+ function matchSubset(s, sub) {
+ if (!options.matchCase)
+ s = s.toLowerCase();
+ var i = s.indexOf(sub);
+ if (options.matchContains == "word"){
+ i = s.toLowerCase().search("\\b" + sub.toLowerCase());
+ }
+ if (i == -1) return false;
+ return i == 0 || options.matchContains;
+ };
+
+ function add(q, value) {
+ if (length > options.cacheLength){
+ flush();
+ }
+ if (!data[q]){
+ length++;
+ }
+ data[q] = value;
+ }
+
+ function populate(){
+ if( !options.data ) return false;
+ // track the matches
+ var stMatchSets = {},
+ nullData = 0;
+
+ // no url was specified, we need to adjust the cache length to make sure it fits the local data store
+ if( !options.url ) options.cacheLength = 1;
+
+ // track all options for minChars = 0
+ stMatchSets[""] = [];
+
+ // loop through the array and create a lookup structure
+ for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
+ var rawValue = options.data[i];
+ // if rawValue is a string, make an array otherwise just reference the array
+ rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
+
+ var value = options.formatMatch(rawValue, i+1, options.data.length);
+ if ( value === false )
+ continue;
+
+ var firstChar = value.charAt(0).toLowerCase();
+ // if no lookup array for this character exists, look it up now
+ if( !stMatchSets[firstChar] )
+ stMatchSets[firstChar] = [];
+
+ // if the match is a string
+ var row = {
+ value: value,
+ data: rawValue,
+ result: options.formatResult && options.formatResult(rawValue) || value
+ };
+
+ // push the current match into the set list
+ stMatchSets[firstChar].push(row);
+
+ // keep track of minChars zero items
+ if ( nullData++ < options.max ) {
+ stMatchSets[""].push(row);
+ }
+ };
+
+ // add the data items to the cache
+ $.each(stMatchSets, function(i, value) {
+ // increase the cache size
+ options.cacheLength++;
+ // add to the cache
+ add(i, value);
+ });
+ }
+
+ // populate any existing data
+ setTimeout(populate, 25);
+
+ function flush(){
+ data = {};
+ length = 0;
+ }
+
+ return {
+ flush: flush,
+ add: add,
+ populate: populate,
+ load: function(q) {
+ if (!options.cacheLength || !length)
+ return null;
+ /*
+ * if dealing w/local data and matchContains than we must make sure
+ * to loop through all the data collections looking for matches
+ */
+ if( !options.url && options.matchContains ){
+ // track all matches
+ var csub = [];
+ // loop through all the data grids for matches
+ for( var k in data ){
+ // don't search through the stMatchSets[""] (minChars: 0) cache
+ // this prevents duplicates
+ if( k.length > 0 ){
+ var c = data[k];
+ $.each(c, function(i, x) {
+ // if we've got a match, add it to the array
+ if (matchSubset(x.value, q)) {
+ csub.push(x);
+ }
+ });
+ }
+ }
+ return csub;
+ } else
+ // if the exact item exists, use it
+ if (data[q]){
+ return data[q];
+ } else
+ if (options.matchSubset) {
+ for (var i = q.length - 1; i >= options.minChars; i--) {
+ var c = data[q.substr(0, i)];
+ if (c) {
+ var csub = [];
+ $.each(c, function(i, x) {
+ if (matchSubset(x.value, q)) {
+ csub[csub.length] = x;
+ }
+ });
+ return csub;
+ }
+ }
+ }
+ return null;
+ }
+ };
+};
+
+$.Autocompleter.Select = function (options, input, select, config) {
+ var CLASSES = {
+ ACTIVE: "ac_over"
+ };
+
+ var listItems,
+ active = -1,
+ data,
+ term = "",
+ needsInit = true,
+ element,
+ list;
+
+ // Create results
+ function init() {
+ if (!needsInit)
+ return;
+ element = $("<div/>")
+ .hide()
+ .addClass(options.resultsClass)
+ .css("position", "absolute")
+ .appendTo(document.body);
+
+ list = $("<ul/>").appendTo(element).mouseover( function(event) {
+ if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
+ active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
+ $(target(event)).addClass(CLASSES.ACTIVE);
+ }
+ }).click(function(event) {
+ $(target(event)).addClass(CLASSES.ACTIVE);
+ select();
+ // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
+ input.focus();
+ return false;
+ }).mousedown(function() {
+ config.mouseDownOnSelect = true;
+ }).mouseup(function() {
+ config.mouseDownOnSelect = false;
+ });
+
+ if( options.width > 0 )
+ element.css("width", options.width);
+
+ needsInit = false;
+ }
+
+ function target(event) {
+ var element = event.target;
+ while(element && element.tagName != "LI")
+ element = element.parentNode;
+ // more fun with IE, sometimes event.target is empty, just ignore it then
+ if(!element)
+ return [];
+ return element;
+ }
+
+ function moveSelect(step) {
+ listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
+ movePosition(step);
+ var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
+ if(options.scroll) {
+ var offset = 0;
+ listItems.slice(0, active).each(function() {
+ offset += this.offsetHeight;
+ });
+ if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
+ list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
+ } else if(offset < list.scrollTop()) {
+ list.scrollTop(offset);
+ }
+ }
+ };
+
+ function movePosition(step) {
+ active += step;
+ if (active < 0) {
+ active = listItems.size() - 1;
+ } else if (active >= listItems.size()) {
+ active = 0;
+ }
+ }
+
+ function limitNumberOfItems(available) {
+ return options.max && options.max < available
+ ? options.max
+ : available;
+ }
+
+ function fillList() {
+ list.empty();
+ var max = limitNumberOfItems(data.length);
+ for (var i=0; i < max; i++) {
+ if (!data[i])
+ continue;
+ var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
+ if ( formatted === false )
+ continue;
+ var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
+ $.data(li, "ac_data", data[i]);
+ }
+ listItems = list.find("li");
+ if ( options.selectFirst ) {
+ listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
+ active = 0;
+ }
+ // apply bgiframe if available
+ if ( $.fn.bgiframe )
+ list.bgiframe();
+ }
+
+ return {
+ display: function(d, q) {
+ init();
+ data = d;
+ term = q;
+ fillList();
+ },
+ next: function() {
+ moveSelect(1);
+ },
+ prev: function() {
+ moveSelect(-1);
+ },
+ pageUp: function() {
+ if (active != 0 && active - 8 < 0) {
+ moveSelect( -active );
+ } else {
+ moveSelect(-8);
+ }
+ },
+ pageDown: function() {
+ if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
+ moveSelect( listItems.size() - 1 - active );
+ } else {
+ moveSelect(8);
+ }
+ },
+ hide: function() {
+ element && element.hide();
+ listItems && listItems.removeClass(CLASSES.ACTIVE);
+ active = -1;
+ },
+ visible : function() {
+ return element && element.is(":visible");
+ },
+ current: function() {
+ return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
+ },
+ show: function() {
+ var offset = $(input).offset();
+ element.css({
+ width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).innerWidth(),
+ top: offset.top + input.offsetHeight,
+ left: offset.left
+ }).show();
+ options.show(element);
+ if(options.scroll) {
+ list.scrollTop(0);
+ list.css({
+ maxHeight: options.scrollHeight,
+ overflow: 'auto'
+ });
+
+ if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
+ var listHeight = 0;
+ listItems.each(function() {
+ listHeight += this.offsetHeight;
+ });
+ var scrollbarsVisible = listHeight > options.scrollHeight;
+ list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
+ if (!scrollbarsVisible) {
+ // IE doesn't recalculate width when scrollbar disappears
+ listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
+ }
+ }
+
+ }
+ },
+ selected: function() {
+ var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
+ return selected && selected.length && $.data(selected[0], "ac_data");
+ },
+ emptyList: function (){
+ list && list.empty();
+ },
+ unbind: function() {
+ element && element.remove();
+ }
+ };
+};
+
+$.fn.selection = function(start, end) {
+ if (start !== undefined) {
+ return this.each(function() {
+ if( this.createTextRange ){
+ var selRange = this.createTextRange();
+ if (end === undefined || start == end) {
+ selRange.move("character", start);
+ selRange.select();
+ } else {
+ selRange.collapse(true);
+ selRange.moveStart("character", start);
+ selRange.moveEnd("character", end);
+ selRange.select();
+ }
+ } else if( this.setSelectionRange ){
+ this.setSelectionRange(start, end);
+ } else if( this.selectionStart ){
+ this.selectionStart = start;
+ this.selectionEnd = end;
+ }
+ });
+ }
+ var field = this[0];
+ if ( field.createTextRange ) {
+ var range = document.selection.createRange(),
+ orig = field.value,
+ teststring = "<->",
+ textLength = range.text.length;
+ range.text = teststring;
+ var caretAt = field.value.indexOf(teststring);
+ field.value = orig;
+ this.selection(caretAt, caretAt + textLength);
+ return {
+ start: caretAt,
+ end: caretAt + textLength
+ }
+ } else if( field.selectionStart !== undefined ){
+ return {
+ start: field.selectionStart,
+ end: field.selectionEnd
+ }
+ }
+};
+
+})(jQuery);
+/**
+ * jQuery.fn.sortElements
+ * --------------
+ * @author James Padolsey (http://james.padolsey.com)
+ * @version 0.11
+ * @updated 18-MAR-2010
+ * --------------
+ * @param Function comparator:
+ * Exactly the same behaviour as [1,2,3].sort(comparator)
+ *
+ * @param Function getSortable
+ * A function that should return the element that is
+ * to be sorted. The comparator will run on the
+ * current collection, but you may want the actual
+ * resulting sort to occur on a parent or another
+ * associated element.
+ *
+ * E.g. $('td').sortElements(comparator, function(){
+ * return this.parentNode;
+ * })
+ *
+ * The <td>'s parent (<tr>) will be sorted instead
+ * of the <td> itself.
+ */
+jQuery.fn.sortElements = (function(){
+
+ var sort = [].sort;
+
+ return function(comparator, getSortable) {
+
+ getSortable = getSortable || function(){return this;};
+
+ var placements = this.map(function(){
+
+ var sortElement = getSortable.call(this),
+ parentNode = sortElement.parentNode,
+
+ // Since the element itself will change position, we have
+ // to have some way of storing it's original position in
+ // the DOM. The easiest way is to have a 'flag' node:
+ nextSibling = parentNode.insertBefore(
+ document.createTextNode(''),
+ sortElement.nextSibling
+ );
+
+ return function() {
+
+ if (parentNode === this) {
+ throw new Error(
+ "You can't sort elements if any one is a descendant of another."
+ );
+ }
+
+ // Insert before flag:
+ parentNode.insertBefore(this, nextSibling);
+ // Remove flag:
+ parentNode.removeChild(nextSibling);
+
+ };
+
+ });
+
+ return sort.call(this, comparator).each(function(i){
+ placements[i].call(getSortable.call(this));
+ });
+
+ };
+
+})();
+/*!
+ * ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+ *
+ * Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+ * Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+ * Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+ *
+ * For the full copyright and license information, please view
+ * the file LICENSE.md that was distributed with this source code.
+ */
+
+$(function() {
+ var $document = $(document);
+ var $left = $('#left');
+ var $right = $('#right');
+ var $rightInner = $('#rightInner');
+ var $splitter = $('#splitter');
+ var $groups = $('#groups');
+ var $content = $('#content');
+
+ // Menu
+
+ // Hide deep packages and namespaces
+ $('ul span', $groups).click(function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ $(this)
+ .toggleClass('collapsed')
+ .parent()
+ .next('ul')
+ .toggleClass('collapsed');
+ }).click();
+
+ $active = $('ul li.active', $groups);
+ if ($active.length > 0) {
+ // Open active
+ $('> a > span', $active).click();
+ } else {
+ $main = $('> ul > li.main', $groups);
+ if ($main.length > 0) {
+ // Open first level of the main project
+ $('> a > span', $main).click();
+ } else {
+ // Open first level of all
+ $('> ul > li > a > span', $groups).click();
+ }
+ }
+
+ // Content
+
+ // Search autocompletion
+ var autocompleteFound = false;
+ var autocompleteFiles = {'c': 'class', 'co': 'constant', 'f': 'function', 'm': 'class', 'mm': 'class', 'p': 'class', 'mp': 'class', 'cc': 'class'};
+ var $search = $('#search input[name=q]');
+ $search
+ .autocomplete(ApiGen.elements, {
+ matchContains: true,
+ scrollHeight: 200,
+ max: 20,
+ formatItem: function(data) {
+ return data[1].replace(/^(.+\\)(.+)$/, '<span><small>$1</small>$2</span>');
+ },
+ formatMatch: function(data) {
+ return data[1];
+ },
+ formatResult: function(data) {
+ return data[1];
+ },
+ show: function($list) {
+ var $items = $('li span', $list);
+ var maxWidth = Math.max.apply(null, $items.map(function() {
+ return $(this).width();
+ }));
+ // 10px padding
+ $list
+ .width(Math.max(maxWidth + 10, $search.innerWidth()))
+ .css('left', $search.offset().left + $search.outerWidth() - $list.outerWidth());
+ }
+ }).result(function(event, data) {
+ autocompleteFound = true;
+ var location = window.location.href.split('/');
+ location.pop();
+ var parts = data[1].split(/::|$/);
+ var file = $.sprintf(ApiGen.config.templates.main[autocompleteFiles[data[0]]].filename, parts[0].replace(/[^\w]/g, '.'));
+ if (parts[1]) {
+ file += '#' + ('mm' === data[0] || 'mp' === data[0] ? 'm' : '') + parts[1].replace(/([\w]+)\(\)/, '_$1');
+ }
+ location.push(file);
+ window.location = location.join('/');
+
+ // Workaround for Opera bug
+ $(this).closest('form').attr('action', location.join('/'));
+ }).closest('form')
+ .submit(function() {
+ var query = $search.val();
+ if ('' === query) {
+ return false;
+ }
+
+ var label = $('#search input[name=more]').val();
+ if (!autocompleteFound && label && -1 === query.indexOf('more:')) {
+ $search.val(query + ' more:' + label);
+ }
+
+ return !autocompleteFound && '' !== $('#search input[name=cx]').val();
+ });
+
+ // Save natural order
+ $('table.summary tr[data-order]', $content).each(function(index) {
+ do {
+ index = '0' + index;
+ } while (index.length < 3);
+ $(this).attr('data-order-natural', index);
+ });
+
+ // Switch between natural and alphabetical order
+ var $caption = $('table.summary', $content)
+ .filter(':has(tr[data-order])')
+ .find('caption');
+ $caption
+ .click(function() {
+ var $this = $(this);
+ var order = $this.data('order') || 'natural';
+ order = 'natural' === order ? 'alphabetical' : 'natural';
+ $this.data('order', order);
+ $.cookie('order', order, {expires: 365});
+ var attr = 'alphabetical' === order ? 'data-order' : 'data-order-natural';
+ $this
+ .closest('table')
+ .find('tr').sortElements(function(a, b) {
+ return $(a).attr(attr) > $(b).attr(attr) ? 1 : -1;
+ });
+ return false;
+ })
+ .addClass('switchable')
+ .attr('title', 'Switch between natural and alphabetical order');
+ if ((null === $.cookie('order') && 'alphabetical' === ApiGen.config.options.elementsOrder) || 'alphabetical' === $.cookie('order')) {
+ $caption.click();
+ }
+
+ // Open details
+ if (ApiGen.config.options.elementDetailsCollapsed) {
+ $('tr', $content).filter(':has(.detailed)')
+ .click(function() {
+ var $this = $(this);
+ $('.short', $this).hide();
+ $('.detailed', $this).show();
+ });
+ }
+
+ setNavigationPosition();
+ $(window).resize(setNavigationPosition);
+
+ // Select selected lines
+ var matches = window.location.hash.substr(1).match(/^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$/);
+ if (null !== matches) {
+ var lists = matches[0].split(',');
+ for (var i = 0; i < lists.length; i++) {
+ var lines = lists[i].split('-');
+ lines[1] = lines[1] || lines[0];
+ for (var j = lines[0]; j <= lines[1]; j++) {
+ $('#' + j).addClass('selected');
+ }
+ }
+
+ var $firstLine = $('#' + parseInt(matches[0]));
+ if ($firstLine.length > 0) {
+ $right.scrollTop($firstLine.offset().top);
+ }
+ }
+
+ // Save selected lines
+ var lastLine;
+ $('a.l').click(function(event) {
+ event.preventDefault();
+
+ var $selectedLine = $(this).parent();
+ var selectedLine = parseInt($selectedLine.attr('id'));
+
+ if (event.shiftKey) {
+ if (lastLine) {
+ for (var i = Math.min(selectedLine, lastLine); i <= Math.max(selectedLine, lastLine); i++) {
+ $('#' + i).addClass('selected');
+ }
+ } else {
+ $selectedLine.addClass('selected');
+ }
+ } else if (event.ctrlKey) {
+ $selectedLine.toggleClass('selected');
+ } else {
+ var $selected = $('.l.selected')
+ .not($selectedLine)
+ .removeClass('selected');
+ if ($selected.length > 0) {
+ $selectedLine.addClass('selected');
+ } else {
+ $selectedLine.toggleClass('selected');
+ }
+ }
+
+ lastLine = $selectedLine.hasClass('selected') ? selectedLine : null;
+
+ // Update hash
+ var lines = $('.l.selected')
+ .map(function() {
+ return parseInt($(this).attr('id'));
+ })
+ .get()
+ .sort(function(a, b) {
+ return a - b;
+ });
+
+ var hash = [];
+ var list = [];
+ for (var j = 0; j < lines.length; j++) {
+ if (0 === j && j + 1 === lines.length) {
+ hash.push(lines[j]);
+ } else if (0 === j) {
+ list[0] = lines[j];
+ } else if (lines[j - 1] + 1 !== lines[j] && j + 1 === lines.length) {
+ hash.push(list.join('-'));
+ hash.push(lines[j]);
+ } else if (lines[j - 1] + 1 !== lines[j]) {
+ hash.push(list.join('-'));
+ list = [lines[j]];
+ } else if (j + 1 === lines.length) {
+ list[1] = lines[j];
+ hash.push(list.join('-'));
+ } else {
+ list[1] = lines[j];
+ }
+ }
+
+ window.location.hash = hash.join(',');
+ });
+});
+
diff --git a/buildscripts/apigen/pradosoft/resources/footer.png b/buildscripts/apigen/pradosoft/resources/footer.png
new file mode 100644
index 00000000..51f4a7fa
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/footer.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/inherit.png b/buildscripts/apigen/pradosoft/resources/inherit.png
new file mode 100644
index 00000000..957079b8
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/inherit.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/resize.png b/buildscripts/apigen/pradosoft/resources/resize.png
new file mode 100644
index 00000000..fb98a7a3
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/resize.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/sort.png b/buildscripts/apigen/pradosoft/resources/sort.png
new file mode 100644
index 00000000..0d0fea14
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/sort.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/style.css b/buildscripts/apigen/pradosoft/resources/style.css
new file mode 100644
index 00000000..418fe08b
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/style.css
@@ -0,0 +1,611 @@
+/*!
+ * ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+ *
+ * Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+ * Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+ * Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+ *
+ * For the full copyright and license information, please view
+ * the file LICENSE.md that was distributed with this source code.
+ */
+
+body {
+}
+
+h1, h2, h3, h4, caption {
+ font-family: 'Trebuchet MS', 'Geneva CE', lucida, sans-serif;
+ color: #000;
+}
+
+h1 {
+ color: #821B18;
+ font-size: 230%;
+ font-weight: normal;
+ margin: .3em 0;
+}
+
+h2 {
+ color: #821B18;
+ font-size: 150%;
+ font-weight: normal;
+ margin: -.3em 0 .3em 0;
+}
+
+h3 {
+ font-size: 1.6em;
+ font-weight: normal;
+ margin-bottom: 2px;
+}
+
+h4 {
+ font-size: 100%;
+ font-weight: bold;
+ padding: 0;
+ margin: 0;
+}
+
+caption {
+ border: 1px solid #cccccc;
+ background: #F0F0F0;
+ font-weight: bold;
+ font-size: 1.2em;
+ padding: 3px 5px;
+ text-align: left;
+ margin-bottom: 0;
+}
+
+p {
+ margin: .7em 0 1em;
+ padding: 0;
+}
+
+hr {
+ margin: 2em 0 1em;
+ border: none;
+ border-top: 1px solid #cccccc;
+ height: 0;
+}
+
+.maintable a {
+ color: #CD2C27;
+ padding: 3px 1px;
+ text-decoration: none;
+}
+
+h1 a {
+ color: #821B18;
+}
+
+.maintable a:hover, .maintable a:active, .maintable a:focus, .maintable a:hover b, .maintable a:hover var {
+ color: #821B18;
+ text-decoration: underline;
+ background-color:#FFDBDB;
+}
+
+code, var, pre {
+ font-family: monospace;
+}
+
+var {
+ font-weight: bold;
+ font-style: normal;
+ color: #ca8a04;
+}
+
+pre {
+ margin: 0;
+}
+
+code a b {
+ color: #000000;
+}
+
+.deprecated {
+ text-decoration: line-through;
+}
+
+.invalid {
+ color: #e71818;
+}
+
+.hidden {
+ display: none;
+}
+
+#maintable {
+ width:100%;
+}
+
+/* Left side */
+#left {
+ overflow: auto;
+ width: 270px;
+ vertical-align: top;
+}
+
+/* Menu */
+#menu {
+ padding: 10px;
+}
+
+#menu ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+#menu ul ul {
+ padding-left: 10px;
+}
+
+#menu li {
+ white-space: nowrap;
+ position: relative;
+}
+
+#menu a {
+ display: block;
+ padding: 0 6px;
+}
+
+#menu .active > a, #menu > span {
+ color: #333333;
+ background: none;
+ font-weight: bold;
+}
+
+#menu .active > a.invalid {
+ color: #e71818;
+}
+
+#menu .active > a:hover, #menu .active > a:active, #menu .active > a:focus {
+ background-color: #FFDBDB;
+}
+
+#menu #groups span {
+ position: absolute;
+ top: 2px;
+ left: -10px;
+ cursor: pointer;
+ display: block;
+ width: 12px;
+ height: 12px;
+ background: url('collapsed.png') transparent 0 0 no-repeat;
+}
+
+#menu #groups span:hover {
+ background-position: -12px 0;
+}
+
+#menu #groups span.collapsed {
+ background-position: 0 -12px;
+}
+
+#menu #groups span.collapsed:hover {
+ background-position: -12px -12px;
+}
+
+#menu #groups ul.collapsed {
+ display: none;
+}
+
+/* Right side */
+#right {
+ overflow: auto;
+ height: 100%;
+ vertical-align: top;
+}
+
+#rightInner {
+ max-width: 1000px;
+ min-width: 350px;
+}
+
+/* Search */
+#search {
+ float: right;
+ margin: 3px 8px;
+}
+
+#search input.text {
+ padding: 3px 5px;
+ width: 250px;
+}
+
+/* Autocomplete */
+.ac_results {
+ padding: 0;
+ border: 1px solid #cccccc;
+ background-color: #ffffff;
+ overflow: hidden;
+ z-index: 99999;
+}
+
+.ac_results ul {
+ width: 100%;
+ list-style-position: outside;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.ac_results li {
+ margin: 0;
+ padding: 2px 5px;
+ cursor: default;
+ display: block;
+ font: 12px 'Trebuchet MS', 'Geneva CE', lucida, sans-serif;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.ac_results li strong {
+ color: #000000;
+}
+
+.ac_odd {
+ background-color: #eeeeee;
+}
+
+.ac_over {
+ background-color: #FFDBDB;
+ color: #000;
+}
+
+.ac_results li.ac_over strong {
+ color: red;
+}
+
+/* Navigation */
+#navigation {
+ padding: 3px 8px;
+ background-color: #f6f6f4;
+ height: 26px;
+}
+
+#navigation ul {
+ list-style: none;
+ margin: 0 8px 4px 0;
+ padding: 0;
+ overflow: hidden;
+ float: left;
+}
+
+#navigation ul + ul {
+ border-left: 1px solid #000000;
+ padding-left: 8px;
+}
+
+#navigation ul li {
+ float: left;
+ margin: 2px;
+ padding: 0 3px;
+ font-family: Verdana, 'Geneva CE', lucida, sans-serif;
+ color: #808080;
+}
+
+#navigation ul li.active {
+ background-color: #821B18;
+ color: #ffffff;
+ font-weight: bold;
+}
+
+#navigation ul li.active span{
+ color: #ffffff;
+ font-weight: bold;
+ padding: 4px;
+}
+
+#navigation ul li a {
+ color: #000000;
+ font-weight: bold;
+ padding: 0;
+}
+
+#navigation ul li span {
+ float: left;
+ padding: 4px;
+}
+
+#navigation ul li a:hover span, #navigation ul li a:active span, #navigation ul li a:focus span {
+ background-color: #FFDBDB;
+}
+
+/* Content */
+#content {
+ clear: both;
+ padding: 5px 15px;
+}
+
+.description pre {
+ padding: .6em;
+ background: #fcfcf7;
+}
+
+#content > .description {
+ background: #F0F0F0;
+ padding: 1px 8px;
+ margin: 1.2em 0;
+}
+
+#content > .description pre {
+ margin: .5em 0;
+}
+
+dl.tree {
+ margin: 1.2em 0;
+}
+
+dl.tree dd {
+ margin: 0;
+ padding: 0;
+}
+
+.info {
+ margin: 1.2em 0;
+}
+
+.summary {
+ border: 1px solid #cccccc;
+ border-collapse: collapse;
+ font-size: 1em;
+ width: 100%;
+ margin: 1.2em 0 2.4em;
+}
+
+.summary caption {
+ border-width: 1px 1px 0;
+}
+
+.summary caption.switchable {
+ background: #F0F0F0 url('sort.png') no-repeat center right;
+ cursor: pointer;
+}
+
+.summary td {
+ border: 1px solid #cccccc;
+ margin: 0;
+ padding: 3px 10px;
+ font-size: 1em;
+ vertical-align: top;
+}
+
+.summary td:first-child {
+ text-align: right;
+}
+
+#packages.summary td:first-child, #namespaces.summary td:first-child, .inherited.summary td:first-child, .used.summary td:first-child {
+ text-align: left;
+}
+
+.summary tr:hover td {
+ background: #f6f6f4;
+}
+
+.summary .description pre {
+ border: .5em solid #F0F0F0;
+}
+
+.summary .description p {
+ margin: 0;
+}
+
+.summary .description p + p, .summary .description ul {
+ margin: 3px 0 0 0;
+}
+
+.summary .description.detailed h4 {
+ margin-top: 3px;
+}
+
+.summary dl {
+ margin: 0;
+}
+
+.summary dd {
+ margin: 0 0 0 25px;
+}
+
+.name, .attributes {
+ white-space: nowrap;
+}
+
+.value {
+ white-space: pre-wrap;
+}
+
+td.name, td.attributes {
+ width: 1%;
+}
+
+.class #methods .name {
+ width: auto;
+ white-space: normal;
+}
+
+.class #methods .name > div > code {
+ white-space: pre-wrap;
+}
+
+.class #methods .name > div > code span, .function .value > code {
+ white-space: nowrap;
+}
+
+.class #methods td.name > div, .class td.description > div {
+ position: relative;
+ padding-right: 1em;
+}
+
+.anchor {
+ position: absolute;
+ top: 0;
+ right: 0;
+ line-height: 1;
+ font-size: 85%;
+ margin: 0;
+ color: #FFDBDB !important;
+}
+
+.list {
+ margin: 0 0 5px 25px;
+}
+
+div.invalid {
+ background-color: #fae4e0;
+ padding: 10px;
+}
+
+/* Splitter */
+#splitter {
+ display:none;
+ position: fixed;
+ height: 100%;
+ width: 5px;
+ left: 270px;
+ background: #821B18 url('resize.png') left center no-repeat;
+ cursor: e-resize;
+}
+
+#splitter.active {
+ opacity: .5;
+}
+
+/* Footer */
+#footer {
+ border-top: 1px solid #e9eeef;
+ clear: both;
+ color: #a7a7a7;
+ font-size: 8pt;
+ text-align: center;
+ padding: 20px 0 0;
+ margin: 0;
+ height: 90px;
+ background: #ffffff url('footer.png') no-repeat center top;
+}
+
+/* Tree */
+div.tree ul {
+ list-style: none;
+ background: url('tree-vertical.png') left repeat-y;
+ padding: 0;
+ margin-left: 20px;
+}
+
+div.tree li {
+ margin: 0;
+ padding: 0;
+}
+
+div.tree div {
+ padding-left: 30px;
+}
+
+div.tree div.notlast {
+ background: url('tree-hasnext.png') left 10px no-repeat;
+}
+
+div.tree div.last {
+ background: url('tree-last.png') left -240px no-repeat;
+}
+
+div.tree li.last {
+ background: url('tree-cleaner.png') left center repeat-y;
+}
+
+div.tree span.padding {
+ padding-left: 15px;
+}
+
+/* Source code */
+.php-keyword1 {
+ color: #e71818;
+ font-weight: bold;
+}
+
+.php-keyword2 {
+ font-weight: bold;
+}
+
+.php-var {
+ color: #d59401;
+ font-weight: bold;
+}
+
+.php-num {
+ color: #cd0673;
+}
+
+.php-quote {
+ color: #008000;
+}
+
+.php-comment {
+ color: #929292;
+}
+
+.xlang {
+ color: #ff0000;
+ font-weight: bold;
+}
+
+span.l {
+ display: block;
+}
+
+span.l.selected {
+ background: #f6f6f4;
+}
+
+span.l a {
+ color: #333333;
+}
+
+span.l a:hover, div.l a:active, div.l a:focus {
+ background: transparent;
+ color: #333333 !important;
+}
+
+span.l .php-var a {
+ color: #d59401;
+}
+
+span.l .php-var a:hover, span.l .php-var a:active, span.l .php-var a:focus {
+ color: #d59401 !important;
+}
+
+span.l a.l {
+ padding-left: 2px;
+ color: #c0c0c0;
+}
+
+span.l a.l:hover, span.l a.l:active, span.l a.l:focus {
+ background: transparent;
+ color: #c0c0c0 !important;
+}
+
+#rightInner.medium #navigation {
+ height: 52px;
+}
+
+#rightInner.medium #navigation ul:first-child + ul {
+ clear: left;
+ border: none;
+ padding: 0;
+}
+
+#rightInner.medium .name, #rightInner.medium .attributes {
+ white-space: normal;
+}
+
+#rightInner.small #search {
+ float: left;
+}
+
+#rightInner.small #navigation {
+ height: 78px;
+}
+
+#rightInner.small #navigation ul:first-child {
+ clear: both;
+}
diff --git a/buildscripts/apigen/pradosoft/resources/tree-cleaner.png b/buildscripts/apigen/pradosoft/resources/tree-cleaner.png
new file mode 100644
index 00000000..2eb9085b
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/tree-cleaner.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/tree-hasnext.png b/buildscripts/apigen/pradosoft/resources/tree-hasnext.png
new file mode 100644
index 00000000..91d6b79a
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/tree-hasnext.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/tree-last.png b/buildscripts/apigen/pradosoft/resources/tree-last.png
new file mode 100644
index 00000000..7f319f8f
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/tree-last.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/resources/tree-vertical.png b/buildscripts/apigen/pradosoft/resources/tree-vertical.png
new file mode 100644
index 00000000..384908b2
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/resources/tree-vertical.png
Binary files differ
diff --git a/buildscripts/apigen/pradosoft/robots.txt.latte b/buildscripts/apigen/pradosoft/robots.txt.latte
new file mode 100644
index 00000000..0c6cdcd0
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/robots.txt.latte
@@ -0,0 +1,13 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+User-agent: *
+Disallow:
+Sitemap: {$config->baseUrl}/sitemap.xml
diff --git a/buildscripts/apigen/pradosoft/sitemap.xml.latte b/buildscripts/apigen/pradosoft/sitemap.xml.latte
new file mode 100644
index 00000000..65070b57
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/sitemap.xml.latte
@@ -0,0 +1,35 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+<url>
+ <loc>{$config->baseUrl}/index.html</loc>
+</url>
+<url n:foreach="$namespaces as $namespace">
+ <loc>{$config->baseUrl}/{$namespace|namespaceUrl}</loc>
+</url>
+<url n:foreach="$packages as $package">
+ <loc>{$config->baseUrl}/{$package|packageUrl}</loc>
+</url>
+
+{define #elements}
+<url n:foreach="$elements as $element">
+ <loc>{$config->baseUrl}/{$element|elementUrl}</loc>
+</url>
+{/define}
+
+{include #elements, elements => $classes}
+{include #elements, elements => $interfaces}
+{include #elements, elements => $traits}
+{include #elements, elements => $exceptions}
+{include #elements, elements => $constants}
+{include #elements, elements => $functions}
+</urlset>
diff --git a/buildscripts/apigen/pradosoft/source.latte b/buildscripts/apigen/pradosoft/source.latte
new file mode 100644
index 00000000..9c46f920
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/source.latte
@@ -0,0 +1,18 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $robots = false}
+
+{block #title}File {$fileName}{/block}
+
+{block #content}
+<pre><code>{!$source|sourceAnchors|replaceRE:'~<span class="line">(\\s*(\\d+):\\s*)</span>([^\\n]*\\n)?~','<span id="$2" class="l"><a class="l" href="#$2">$1</a>$3</span>'}</code></pre>
+{/block} \ No newline at end of file
diff --git a/buildscripts/apigen/pradosoft/todo.latte b/buildscripts/apigen/pradosoft/todo.latte
new file mode 100644
index 00000000..0eb54a9e
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/todo.latte
@@ -0,0 +1,112 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'todo'}
+
+{block #title}Todo{/block}
+
+{block #content}
+<div id="content">
+ <h1>{include #title}</h1>
+
+ {define #classes}
+ {foreach $items as $class}
+ <tr>
+ <td class="name" rowspan="{count($class->annotations['todo'])}"><a href="{$class|classUrl}">{$class->name}</a></td>
+ {foreach $class->annotations['todo'] as $description}
+ <td>{!$description|annotation:'todo':$class}</td>{sep}</tr><tr>{/sep}
+ {/foreach}
+ </tr>
+ {/foreach}
+ {/define}
+
+ <table class="summary" id="classes" n:if="$todoClasses">
+ <caption>Classes summary</caption>
+ {include #classes, items => $todoClasses}
+ </table>
+
+ <table class="summary" id="interfaces" n:if="$todoInterfaces">
+ <caption>Interfaces summary</caption>
+ {include #classes, items => $todoInterfaces}
+ </table>
+
+ <table class="summary" id="traits" n:if="$todoTraits">
+ <caption>Traits summary</caption>
+ {include #classes, items => $todoTraits}
+ </table>
+
+ <table class="summary" id="exceptions" n:if="$todoExceptions">
+ <caption>Exceptions summary</caption>
+ {include #classes, items => $todoExceptions}
+ </table>
+
+ <table class="summary" id="methods" n:if="$todoMethods">
+ <caption>Methods summary</caption>
+ {foreach $todoMethods as $method}
+ <tr>
+ {var $count = count($method->annotations['todo'])}
+ <td class="name" rowspan="{$count}"><a href="{$method->declaringClassName|classUrl}">{$method->declaringClassName}</a></td>
+ <td class="name" rowspan="{$count}"><code><a href="{$method|methodUrl}">{$method->name}()</a></code></td>
+ {foreach $method->annotations['todo'] as $description}
+ <td>{!$description|annotation:'todo':$method}</td>{sep}</tr><tr>{/sep}
+ {/foreach}
+ </tr>
+ {/foreach}
+ </table>
+
+ <table class="summary" id="constants" n:if="$todoConstants">
+ <caption>Constants summary</caption>
+ {foreach $todoConstants as $constant}
+ <tr>
+ {var $count = count($constant->annotations['todo'])}
+ {if $constant->declaringClassName}
+ <td class="name" rowspan="{$count}"><a href="{$constant->declaringClassName|classUrl}">{$constant->declaringClassName}</a></td>
+ <td class="name" rowspan="{$count}"><code><a href="{$constant|constantUrl}"><b>{$constant->name}</b></a></code></td>
+ {else}
+ <td class="name" rowspan="{$count}" n:if="$namespaces || $classes || $interfaces || $traits || $exceptions"><a n:if="$constant->namespaceName" href="{$constant->namespaceName|namespaceUrl}">{$constant->namespaceName}</a></td>
+ <td n:class="name" rowspan="{$count}"><code><a href="{$constant|constantUrl}"><b>{$constant->shortName}</b></a></code></td>
+ {/if}
+ {foreach $constant->annotations['todo'] as $description}
+ <td>{!$description|annotation:'todo':$constant}</td>{sep}</tr><tr>{/sep}
+ {/foreach}
+ </tr>
+ {/foreach}
+ </table>
+
+ <table class="summary" id="properties" n:if="$todoProperties">
+ <caption>Properties summary</caption>
+ {foreach $todoProperties as $property}
+ <tr>
+ {var $count = count($property->annotations['todo'])}
+ <td class="name" rowspan="{$count}"><a href="{$property->declaringClassName|classUrl}">{$property->declaringClassName}</a></td>
+ <td class="name" rowspan="{$count}"><a href="{$property|propertyUrl}"><var>${$property->name}</var></a></td>
+ {foreach $property->annotations['todo'] as $description}
+ <td>{!$description|annotation:'todo':$property}</td>{sep}</tr><tr>{/sep}
+ {/foreach}
+ </tr>
+ {/foreach}
+ </table>
+
+ <table class="summary" id="functions" n:if="$todoFunctions">
+ <caption>Functions summary</caption>
+ {foreach $todoFunctions as $function}
+ <tr>
+ {var $count = count($function->annotations['todo'])}
+ <td class="name" rowspan="{$count}" n:if="$namespaces"><a n:if="$function->namespaceName" href="{$function->namespaceName|namespaceUrl}">{$function->namespaceName}</a></td>
+ <td class="name" rowspan="{$count}"><code><a href="{$function|functionUrl}">{$function->shortName}</a></code></td>
+ {foreach $function->annotations['todo'] as $description}
+ <td>{!$description|annotation:'todo':$function}</td>{sep}</tr><tr>{/sep}
+ {/foreach}
+ </tr>
+ {/foreach}
+ </table>
+</div>
+{/block} \ No newline at end of file
diff --git a/buildscripts/apigen/pradosoft/tree.latte b/buildscripts/apigen/pradosoft/tree.latte
new file mode 100644
index 00000000..8a4b5fc1
--- /dev/null
+++ b/buildscripts/apigen/pradosoft/tree.latte
@@ -0,0 +1,72 @@
+{*
+ApiGen 2.8.0 - API documentation generator for PHP 5.3+
+
+Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
+Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
+Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)
+
+For the full copyright and license information, please view
+the file LICENSE.md that was distributed with this source code.
+*}
+{layout '@layout.latte'}
+{var $active = 'tree'}
+
+{block #title}Tree{/block}
+
+{define #tree}
+<div class="tree">
+ <ul>
+ {var $level = -1}
+ {? foreach ($tree as $reflectionName => $reflection): }
+ {if $level === $tree->getDepth()}
+ </li>
+ {elseif $level > $tree->getDepth()}
+ {!'</ul></li>'|repeat:$level - $tree->getDepth()}
+ {elseif -1 !== $level}
+ <ul>
+ {/if}
+
+ <li n:class="!$tree->hasSibling() ? last"><div class="{if $tree->hasSibling()}not{/if}last"><a href="{$reflectionName|classUrl}" n:tag-if="$reflection->documented"><span n:class="$reflection->deprecated ? deprecated, !$reflection->valid ? invalid">{$reflectionName}</span></a>
+ {var $interfaces = $reflection->ownInterfaces}
+ {if $interfaces} implements {foreach $interfaces as $interface}
+ <a href="{$interface|classUrl}" n:tag-if="$interface->documented"><span n:class="$interface->deprecated ? deprecated, !$interface->valid ? invalid">{$interface->name}</span></a>{sep}, {/sep}
+ {/foreach}{/if}
+ {var $traits = $reflection->ownTraits}
+ {if $traits}{if $interfaces}<br><span class="padding"></span>{/if} uses {foreach $traits as $trait}
+ <a href="{$trait|classUrl}" n:tag-if="$trait->documented"><span n:class="$trait->deprecated ? deprecated, !$trait->valid ? invalid">{$trait->name}</span></a>{sep}, {/sep}
+ {/foreach}{/if}
+ </div>
+
+ {var $level = $tree->getDepth()}
+ {? endforeach; }
+ </li>
+ {!'</ul></li>'|repeat:$level}
+ </ul>
+</div>
+{/define}
+
+{block #content}
+<div id="content">
+ <h1>{include #title}</h1>
+
+ {if $classTree->valid()}
+ <h3>Classes</h3>
+ {include #tree, tree => $classTree}
+ {/if}
+
+ {if $interfaceTree->valid()}
+ <h3>Interfaces</h3>
+ {include #tree, tree => $interfaceTree}
+ {/if}
+
+ {if $traitTree->valid()}
+ <h3>Traits</h3>
+ {include #tree, tree => $traitTree}
+ {/if}
+
+ {if $exceptionTree->valid()}
+ <h3>Exceptions</h3>
+ {include #tree, tree => $exceptionTree}
+ {/if}
+</div>
+{/block}
diff --git a/buildscripts/chmbuilder/ChmQuickstartBuilder.php b/buildscripts/chmbuilder/ChmQuickstartBuilder.php
deleted file mode 100644
index 2e517d68..00000000
--- a/buildscripts/chmbuilder/ChmQuickstartBuilder.php
+++ /dev/null
@@ -1,439 +0,0 @@
-<?php
-
-class ChmQuickstartBuilder
-{
- private $base;
- const DEMO_URL = 'http://www.pradosoft.com/demos/quickstart/';
- const CSS_URL = 'assets/chm_style.css';
- private $output_dir;
- private $app;
-
- private $_viewed=array();
-
- public function __construct($base,$output)
- {
- $this->base = $base;
- $this->output_dir = $output;
-
- if(!is_dir($this->output_dir) || !is_dir($this->output_dir.'/assets'))
- {
- @mkdir($this->output_dir);
- @mkdir($this->output_dir.'/assets/');
- copy(dirname(__FILE__).'/chm_style.css', $this->output_dir.'/assets/chm_style.css');
- }
-
- Prado::setPathOfAlias('Output', realpath($this->output_dir));
- }
-
- public function buildDoc($pages)
- {
- foreach($pages as $section)
- {
- foreach($section as $page)
- {
- $this->parsePage($page);
- }
- }
- }
-
- protected function initApp()
- {
- $this->app = new TApplication($this->base);
- $response = new THttpResponse();
- $response->setBufferOutput(false);
- $this->app->setResponse($response);
- $assets = new TAssetManager();
- $assets->setBasePath('Output.assets.*');
- $this->app->setAssetManager($assets);
- }
-
- public function parsePage($page)
- {
- $_GET['page'] = str_replace(array('/','.page'),array('.',''),$page);
- $_GET['notheme'] = 'true';
-
- $html = $this->parseHtmlContent($this->getApplicationContent());
- $file = str_replace(array('/','.page'), array('_','.html'),$page);
-// echo 'writing file '.$file."\n";
- file_put_contents($this->output_dir.'/'.$file, $html);
- }
-
- public function getApplicationContent()
- {
- ob_start();
- $this->initApp();
- $this->app->run();
- $content = ob_get_contents();
- ob_end_clean();
- return $content;
- }
-
- public function parseHtmlContent($content)
- {
- $html = preg_replace('/<input.*name="PRADO_PAGESTATE" [^>]+\/>/m', '', $content);
-$html = str_replace('<div id="header">
-<div class="title">Prado QuickStart Tutorial</div>
-<div class="image"></div>
-</div>', '', $html);
-$html = preg_replace('/<div id="footer">.*?<\/div>/ms', '<div id="footer">
-Copyright &copy; 2005-2007 <a href="http://www.pradosoft.com">PradoSoft</a>.</div>', $html);
-
-
- $html = str_replace('</head>', '<link rel="stylesheet" type="text/css" href="'.self::CSS_URL.'" /></head>', $html);
-
- $html = preg_replace_callback('/(?<!RunButton" )href=".*\?page=([a-zA-Z0-9\.#]+)"/',
- array($this, 'update_page_url'), $html);
- $html = preg_replace_callback('/(?<=RunButton" )href=".*\?page=([a-zA-Z0-9\.#]+)"/',
- array($this, 'update_run_url'), $html);
-
- $html = preg_replace('/(src|href)=("?)\//', '$1=$2assets/',$html);
- $html = str_replace('http://www.pradosoft.com/docs/manual', '../manual/CHMdefaultConverter', $html);
- $html = str_replace('target="_blank">View Source', '>View Source', $html);
- $html = preg_replace('/action="[^"]+"/', '', $html);
- $html = preg_replace('/<script[^>]+><\/script>/', '', $html); //remove js
- $html = preg_replace('/href="C:[^"]+"/', 'href="#"', $html);
-
- $html = preg_replace_callback('/href="\?page=ViewSource&(amp;){0,1}path=([a-zA-z0-9\.\/]+)"/',
- array($this, 'update_source_url'), $html);
-
- return $html;
- }
-
- protected function update_source_url($matches)
- {
- $page = $matches[2];
- $file = str_replace('/', '_',$page).'.html';
-
- if(!isset($this->_viewed[$page]))
- {
- $this->_viewed[$page]=true;
- $this->view_source_page($page);
- }
- return 'href="'.$file.'"';
- }
-
- protected function view_source_page($page)
- {
- $_GET['page'] = 'ViewSource';
- $_GET['path'] = $page;
- $_GET['lines'] = 'false';
-
- $html = $this->parseHtmlContent($this->getApplicationContent());
- $file = str_replace('/', '_',$page).'.html';
-// echo 'writing file '.$file."\n";
- file_put_contents($this->output_dir.'/'.$file, $html);
- }
-
- protected function update_page_url($matches)
- {
- $bits = explode('#',str_replace('.','_',$matches[1]));
- $anchor = isset($bits[1]) ? '#'.$bits[1] : '';
- return 'href="'.$bits[0].'.html'.$anchor.'"';
- }
-
- protected function update_run_url($matches)
- {
- return 'href="'.self::DEMO_URL.'?page='.$matches[1].'"';
- }
-}
-
-class HTMLHelpTOCBuilder
-{
-
- public function buildToc($file,$output,$classes)
- {
- $contents = file_get_contents($file);
- $content = $this->prepareContent($contents);
- $ul = $this->parseUl($content);
- $toc = $this->header();
- $toc .= $this->to_string($ul);
- $toc .= $this->footer();
- $toc = $this->appendApiToc($output,$toc);
- $toc = $this->appendClassesToc($classes,$toc);
- file_put_contents($output.'/toc.hhc', $toc);
- file_put_contents($output.'/prado3_manual.hhp', $this->getHHP());
- file_put_contents($output.'/manual.html', $this->getIndexPage());
- $index = $output.'/manual/CHMdefaultConverter/index.hhk';
- file_put_contents($index, $this->updateIndex($index));
- }
-
- protected function updateIndex($file)
- {
- $content = file_get_contents($file);
- return preg_replace('/"Local" value="/', '"Local" value="manual\\CHMdefaultConverter\\', $content);
- }
-
- protected function appendClassesToc($classes, $toc)
- {
- $version = Prado::getVersion();
- $ul['classes']['params'][] = array('Name' => "Prado {$version} Class Index");
- foreach($classes as $class)
- {
- $ul['classes']['ul'][0]['params'][] =
- array('Name'=>$class, 'Local'=>'classdoc/'.$class.'.html');
- }
- $ul['wiki']['params'][] = array('Name' => "Prado Wiki", 'Local'=>'wiki\\index.html');
- $content = $this->to_string($ul);
- $toc = preg_replace('!(</BODY></HTML>)!', $content.'$1', $toc);
- return $toc;
- }
-
- protected function appendApiToc($output,$toc)
- {
- $content = file_get_contents($output.'/manual/CHMdefaultConverter/contents.hhc');
- $content = preg_replace('/"Local" value="/', '"Local" value="manual\\CHMdefaultConverter\\', $content);
- $toc = preg_replace('!(API Manual">\s*</OBJECT>)\s*(</UL>\s*</BODY></HTML>)!', '$1'."\n".$content.'$2', $toc);
- return preg_replace("/\r/","\n",$toc);
- }
-
- protected function getIndexPage()
- {
- $version = Prado::getVersion();
- $date = date('d M Y', time());
- $year = date('Y',time());
-$content = <<<EOD
-<!doctype html public "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Prado Manual</title>
- <style type="text/css">
- /*<![CDATA[*/
- body
- {
- font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Helvetica, Arial, sans-serif;
- font-weight:normal;
- }
- h1
- {
- color: #600;
- }
- /*]]>*/
- </style>
-</head>
-
-<body style="text-align:center">
-
-<h1>Prado {$version} Manual</h1>
-
-<div>Created On: {$date}</div>
-
-<div style="margin-top:3em;margin-bottom:0.75em"><strong>Written By:</strong> Qiang Xue, Wei Zhuo</div>
-<div style="margin-bottom:3em;"><strong>Edited By:</strong> Wei Zhuo</div>
-
-<div id="footer">
-Copyright &copy; 2005-{$year} <a href="http://www.pradosoft.com">PradoSoft</a>.</div>
-
-</body>
-</html>
-EOD;
- return $content;
- }
-
- protected function getHHP()
- {
- $version = Prado::getVersion();
-$content = <<<EOD
-[OPTIONS]
-Binary TOC=Yes
-Compatibility=1.1 or later
-Compiled File=prado3_manual.chm
-Contents File=toc.hhc
-Default Window=main
-Default Topic=manual.html
-Display compile progress=Yes
-Error log file=_errorlog.txt
-Full-text search=Yes
-Language=0x409 English (United States)
-Title=Prado {$version} Manual
-Binary Index=Yes
-Index file=manual\CHMdefaultConverter\index.hhk
-Default Font=
-Auto Index=Yes
-Create CHI file=No
-Full text search stop list file=
-Display compile notes=Yes
-
-[WINDOWS]
-main="Prado {$version} Manual","toc.hhc","manual\CHMdefaultConverter\index.hhk","manual.html","manual.html",,,,,0x63520,250,0x104e,[10,10,900,700],0xb0000,,,,,,0
-
-EOD;
- return $content;
- }
-
- protected function parseUl($content)
- {
- $ul = array();
- $current = null;
- $ul['index']['params'][] = array('Name'=>'Prado Manual', 'Local'=>'manual.html');
-
- foreach(explode("\n", $content) as $line)
- {
- $line = trim($line);
- if(strlen($line) > 0)
- {
- if(strpos($line,'^')===false)
- {
- $current = $line;
- $ul[$current]['params'][]['Name'] = $current;
- }
- else
- {
- list($page,$title) = explode('^', $line);
- $ul[$current]['ul'][0]['params'][] = array('Name'=>$title, 'Local'=>$this->getFileName($page));
- }
- }
- }
- $version = Prado::getVersion();
- $ul['api']['params'][] = array('Name' => "Prado {$version} API Manual");
-
- return $ul;
- }
-
- protected function getFileName($page)
- {
- return 'quickstart\\'.str_replace('.', '_',$page).'.html';
- }
-
- protected function prepareContent($content)
- {
- $content = preg_replace('/<\/?div[^>]*>/','', $content);
- $content = preg_replace('/<\/?ul>|<\/?li>|<\/a>/ms', '', $content);
- $content = str_replace('<a href="?page=', '', $content);
- $content = str_replace('">', '^', $content);
- return $content;
- }
-
- public function to_string($ul)
- {
- $contents = "<UL>\n";
- foreach($ul as $li)
- {
- if(isset($li['params']))
- {
- $contents .= $this->li_to_string($li);
- }
- if(isset($li['ul']))
- {
- $contents .= $this->to_string($li['ul']);
- }
- }
- $contents .= "</UL>\n";
- return $contents;
- }
-
- protected function li_to_string($li)
- {
- $contents = '';
- foreach($li['params'] as $param)
- {
- $contents .= "\t<LI>";
- $contents .= "<OBJECT type=\"text/sitemap\">\n";
- foreach($param as $name => $value)
- $contents .= "\t\t\t<param name=\"$name\" value=\"$value\">\n";
- $contents .= "\t\t</OBJECT>\n";
- }
- return $contents;
- }
-
- public function header()
- {
- $content = <<<EOD
-<HTML>
-<HEAD>
-</HEAD>
-<BODY>
- <OBJECT type="text/site properties">
- <param name="Window Styles" value="0x800025">
- <param name="FrameName" value="right">
- <param name="ImageType" value="Folder">
- <param name="comment" value="title:Online Help">
- <param name="comment" value="base:index.htm">
- </OBJECT>
-
-EOD;
- return $content;
- }
-
- public function footer()
- {
- return '</BODY></HTML>';
- }
-}
-
-class ClassDocBuilder
-{
- private $output;
- private $base;
-
- function __construct($base, $output)
- {
- $this->base = $base;
- $this->output = $output.'/classdoc';
- if(!is_dir($this->output))
- {
- mkdir($this->output);
- mkdir($this->output.'/assets/');
- }
- Prado::setPathOfAlias('Output', $this->output);
- }
-
- protected function initApp()
- {
- $this->app = new TApplication($this->base);
- $response = new THttpResponse();
- $response->setBufferOutput(false);
- $this->app->setResponse($response);
- $assets = new TAssetManager();
- $assets->setBasePath('Output.assets.*');
- $this->app->setAssetManager($assets);
- }
-
- public function buildDoc($class)
- {
- $this->parsePage($class);
- }
-
- public function parseBasePage()
- {
- $_GET['page'] = 'Classes';
-
- $html = $this->parseHtmlContent($this->getApplicationContent());
- $file = 'Classes.html';
-// echo 'writing file '.$file."\n";
- file_put_contents($this->output.'/'.$file, $html);
- }
-
- public function parsePage($class)
- {
- $_GET['page'] = 'ClassDoc';
- $_GET['class'] = $class;
-
- $html = $this->parseHtmlContent($this->getApplicationContent());
- $file = $class.'.html';
-// echo 'writing file '.$file."\n";
- file_put_contents($this->output.'/'.$file, $html);
- }
-
- protected function getApplicationContent()
- {
- ob_start();
- $this->initApp();
- $this->app->run();
- $content = ob_get_contents();
- ob_end_clean();
- $this->app->completeRequest();
- $this->app=null;
- return $content;
- }
-
- protected function parseHtmlContent($content)
- {
- $html = preg_replace('/<input.*name="PRADO_PAGESTATE" [^>]+\/>/m', '', $content);
- $html = preg_replace('!href="/(\w+)/style.css"!', 'href="assets/$1/style.css"', $html);
- return $html;
- }
-}
-
-
-?> \ No newline at end of file
diff --git a/buildscripts/chmbuilder/build.php b/buildscripts/chmbuilder/build.php
deleted file mode 100644
index b6ea6c7b..00000000
--- a/buildscripts/chmbuilder/build.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-
-$ROOT = dirname(__FILE__);
-
-//page root location
-$base = realpath($ROOT.'/../../demos/quickstart/protected/');
-$output_dir = realpath($ROOT.'/../../build/docs');
-$classData = realpath($ROOT.'/../classtree/classes.data');
-$classDocBase = realpath($ROOT.'/classes/');
-
-//-------------- END CONFIG ------------------
-
-if(!isset($isChild))
- $isChild = false;
-
-$toc_file = $base.'/controls/TopicList.tpl';
-
-$pages = include($ROOT.'/../texbuilder/quickstart/pages.php');
-
-include($ROOT.'/ChmQuickstartBuilder.php');
-include($ROOT.'/../../framework/PradoBase.php');
-class Prado extends PradoBase
-{
- protected static $app;
-
- public static function setApplication($application)
- {
- self::$app=$application;
- }
-
- public static function getApplication()
- {
- return self::$app;
- }
-
- public static function setPathOfAlias($alias,$path)
- {
- $aliases = self::getPathAliases();
- if(!isset($aliases[$alias]))
- parent::setPathOfAlias($alias,$path);
- }
-}
-
-include($ROOT.'/../../framework/prado.php');
-
-if($isChild)
-{
- $classBuilder = new ClassDocBuilder($classDocBase,$output_dir);
- $classBuilder->buildDoc($argv[1]);
-}
-else
-{
- $pages['Control Reference : Standard Controls'][] = 'Controls/Standard.page';
-
-
- $quickstart= new ChmQuickstartBuilder($base,$output_dir.'/quickstart');
- $quickstart->buildDoc($pages);
-
- //move class data to protected data directory for prado app.
- $classFile = $ROOT.'/classes/Data/classes.data';
- if(is_file($classData) && !is_file($classFile))
- copy($classData, $classFile);
- $classes = unserialize(file_get_contents($classFile));
-
- $classBuilder = new ClassDocBuilder($classDocBase,$output_dir);
-
- //use child process to build doc, otherwise it consumes too much memory
- $child_builder = realpath($ROOT.'/build_child.php');
- foreach($classes as $class =>$data)
- {
- passthru('php '.$child_builder.' '.$class);
- }
-
-// $classBuilder->parseBasePage();
-
- $toc = new HTMLHelpTOCBuilder();
- $toc->buildToc($toc_file,$output_dir,array_keys($classes));
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/chmbuilder/build_child.php b/buildscripts/chmbuilder/build_child.php
deleted file mode 100644
index a466d03a..00000000
--- a/buildscripts/chmbuilder/build_child.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-$isChild = true;
-
-include(dirname(__FILE__).'/build.php');
-
-?> \ No newline at end of file
diff --git a/buildscripts/chmbuilder/chm_style.css b/buildscripts/chmbuilder/chm_style.css
deleted file mode 100644
index f512e1ab..00000000
--- a/buildscripts/chmbuilder/chm_style.css
+++ /dev/null
@@ -1,653 +0,0 @@
-body {
- font-family: 'Lucida Grande', Verdana, Geneva, Lucida, Helvetica, Arial, sans-serif;
- font-weight:normal;
- font-size:10pt;
- color:black;
-}
-
-h1, h2, h3, h4
-{
- color: #333;
-}
-
-h1, h2
-{
- padding-bottom: 3px;
- border-bottom: 1px solid #ccc;
-}
-
-h1 {
- font-size:13pt;
-}
-
-h2 {
- font-size:12pt;
-}
-
-h3 {
- font-size:10pt;
- font-weight:bold;
-}
-
-a
-{
- color: #cc3333;
-}
-
-
-#content {
- background:#fff;
- padding: 1em 1em 1em 1em;
- line-height: 135%;
-}
-
-#footer {
- clear:both;
- color: gray;
- font-size:8pt;
- text-align:center;
- margin-top:25px;
- padding:10px;
-}
-
-.topic {
- font-size: 9pt;
- padding: 0px 0px 0px 0px;
-}
-
-.topic div {
- background-repeat: no-repeat;
- background-position: left center;
- margin: 0px;
- font-size: 8pt;
- font-weight:bold;
- color:#2A480A;
- padding: 5px;
- padding-left: 15px;
- border-top: 1px solid #fff;
- border-bottom: 1px solid #E2E2E2;
-}
-
-.topic ul
-{
- margin: 0px;
- padding: 0px;
-}
-
-.topic ul li
-{
- list-style: none;
- margin: 0px;
- padding: 5px;
- padding-left: 15px;
- border-bottom: 1px dotted #D8D8D8;
-}
-
-.topic a {
- color:#4F811A;
- font-size: 8pt;
- text-decoration: none;
-}
-
-.topic a:hover {
- color:#2A480A;
-}
-
-.source {
- padding: 0.5em;
- border-style:solid;
- border-width:1px;
- border-color:#eeeeee;
- background-color:#ffffee;
- font-family: "Courier New", Courier, mono;
- margin: 0.2em;
-}
-
-.source pre {
- font-family: "Courier New", Courier, mono;
- margin: 0;
-}
-
-.cli
-{
- color: white;
- background-color: #555;
-}
-
-.runbar
-{
- margin: 1em 0 1em 0;
-}
-
-.runbar a:link, .runbar a:visited {
- background-color:#E2E2E2;
- font-size: 12px;
- font-weight: normal;
- padding: 3px;
- padding-left: 6px;
- padding-right: 6px;
- border-top: 1px solid white;
- border-left: 1px solid white;
- border-bottom: 1px solid #aaaaaa;
- border-right: 1px solid #aaaaaa;
- text-decoration: none;
-}
-
-.runbar a:link.active, .runbar a:visited.active, .runbar a:hover {
- background-color:#E2E2E2;
- font-size: 12px;
- font-weight: normal;
- padding: 3px;
- padding-left: 6px;
- padding-right: 6px;
- border-top: 1px solid #aaaaaa;
- border-left: 1px solid #aaaaaa;
- border-bottom: 1px solid white;
- border-right: 1px solid white;
-}
-
-#sourceList {
- background-color:#E2E2E2;
- margin:10px 10px 0px 10px;
- padding:10px;
- border:1px solid silver;
-}
-
-#sourceView {
- font-family: "Courier New", Courier, mono;
- background-color:#ffffee;
- margin:5px 10px 10px 10px;
- border:1px solid silver;
-}
-
-code {
- font-family: "Courier New", Courier, mono;
-}
-
-tt {
- font-family: "Courier New", Courier, mono;
- border-bottom: 1px dotted silver;
-}
-
-.sampleheader {
- font-size:30px;
- font-weight:bold;
- text-align: right;
- color: #666;
- height:100px;
-}
-
-.sampleheader div.title
-{
- display: none;
-}
-
-.sampleheader div.image
-{
- display: block;
- float: right;
- width: 900px;
- height: 100px;
-}
-
-.samplemenu
-{
- padding:10px;
- padding-right:10px;
- background:#EDEDED;
- border-bottom: 1px solid #A6A6A6;
- border-top: 1px solid #DCDCDC;
- text-align:right;
- font-size: 9pt;
-}
-
-.samplemenu a {
- color:#737373;
- text-decoration:none;
-}
-
-.samplemenu a:hover {
- color: #FF0000;
-}
-
-.sampleheader a {
- font-size:30px;
- font-weight:bold;
- color: #666;
- text-decoration: none;
-}
-
-.samplepanel {
- margin: 0px;
- border: 1px solid silver;
- padding: 10px;
- margin-bottom:10px;
-}
-
-.sampletitle {
- width: 100%;
- border-bottom:1px solid silver;
- font-weight:bold;
- margin-bottom:5px;
-}
-
-.sampletable {
- width: 100%;
- border-collapse: collapse;
-}
-
-td.samplenote {
- width: 300px;
- text-align: right;
- background: #BFE4FF;
- border: 1px solid silver;
- padding: 5px;
- vertical-align: top;
-}
-
-td.sampleaction {
- background: #ffffee;
- border: 1px solid silver;
- padding: 5px;
- vertical-align: top;
-}
-
-
-dl
-{
- margin: 0 2em;
-}
-
-dt
-{
- font-weight: bold;
- margin-bottom: 0.15em;
-}
-
-dd
-{
- margin-left: 2em;
- margin-bottom: 0.75em;
-}
-
-.quicksearch .search .searchBox
-{
- width: 25em;
-}
-
-.quicksearch .search
-{
- text-align: center;
- padding: 2em;
-}
-
-.searchItem
-{
- margin-top: 20px;
- margin-left: 20px;
- margin-right: 20px;
-}
-
-.searchItemBody
-{
- margin-top: 0em;
- font-size: 0.9em;
-}
-
-.searchItemLink
-{
- font-size: 1.05em;
-}
-
-.searchterm
-{
- font-weight: bold;
-}
-
-.searchAPIItem
-{
- margin-top: 5px;
- margin-left: 20px;
- margin-right: 20px;
-}
-
-.searchHeader, .emptyResult
-{
- margin-top: 30px;
-}
-
-.empty_search_result
-{
- text-align: center;
- margin: 30px;
-}
-
-/** Comments **/
-#comments
-{
- margin: 10px;
-}
-
-.comment_header
-{
- border-bottom: 1px solid silver;
-}
-
-.comment_item
-{
- padding: 10px;
- border: 1px solid silver;
- margin: 0 10px 10px 10px;
-}
-
-.comment_item .number
-{
- float: right;
- font-size: 1.5em;
- font-weight: bold;
- color: silver;
-}
-
-.comment_item1
-{
- background-color: #EDEDED;
-}
-
-.comment_item .email
-{
- font-weight: bold;
- display: block;
-}
-
-.comment_item .date
-{
- font-size: 0.85em;
- display: block;
- border-bottom: 1px dotted silver;
-}
-
-.comment_item .comment
-{
- padding: 10px;
-}
-
-.add_comments
-{
- margin-top: 2em;
-}
-
-.add_comments .comment_email
-{
- margin-bottom: 5px;
-}
-
-.add_comments .comment_email input
-{
- width: 25em;
-}
-
-.add_comments .comment_content textarea
-{
- width: 75%;
- height: 200px;
- padding: 5px;
-}
-
-.add_comments .comment_email label, .add_comments .comment_content label
-{
- width: 8em;
- float: left;
- text-align: right;
- padding-right: 5px;
-}
-
-.add_comments .add_comment
-{
- padding-left: 8.2em;
- padding-top: 0.5em;
-}
-
-.add_comments .please_add
-{
- padding-left: 8.2em;
-}
-
-.add_comments h3, .comment_added h3
-{
- border-bottom: 1px solid silver;
-}
-
-.comment_preview
-{
- margin: 10px;
- padding: 10px;
- border: 1px solid silver;
-}
-
-.comment_preview .comment
-{
- padding: 10px;
-}
-
-.comment_added
-{
- margin-top: 3em;
- border-top: 1px dotted silver;
- padding: 10px;
-}
-
-.comment_added .comment
-{
- padding: 10px;
- margin-top: 10px;
-}
-
-.comment_added .thank
-{
- background-color: #ffffcc;
- padding: 20px;
-}
-
-pre code
-{
- display: block;
- padding: 0.5em;
- border-style:solid;
- border-width:1px;
- border-color:#eeeeee;
- background-color:#ffffee;
- font-family: "Courier New", Courier, mono;
- margin: 0.2em;
-}
-
-div.tip, div.info, div.note
-{
- border:1px solid #0cf;
- padding:1em;
- margin: 1em 2em;
- background-color: #eff;
-}
-
-div.info
-{
- border-color: #32CD32;
- background-color: #EBFFCE;
-}
-
-div.note
-{
- border-color: Orange;
- background-color: #FFF5E1;
-}
-
-div b.tip
-{
- font-size: 1em;
- padding-right: 0.5em;
-}
-
-img.figure
-{
- display: block;
- margin: 1em auto;
- background-color: White;
- padding: 15px;
- border: 1px solid #eee;
-}
-
-div.caption
-{
- text-align: center;
-}
-
-table.tabular, table.tabular td, table.tabular th
-{
- border: 1px solid #ccc;
- border-collapse: collapse;
- padding: 0.3em;
-}
-
-table.tabular
-{
- margin: 1em auto;
- width: 80%;
-}
-
-table.tabular td
-{
- padding: 0.75em;
-}
-
-
-/** highlight */
-.php .de1, .php .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
-.php .imp {font-weight: bold; color: red;}
-.php li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
-.php .kw1 {color: #b1b100;}
-.php .kw2 {color: #000000; font-weight: bold;}
-.php .kw3 {color: #000066;}
-.php .co1 {color: #808080; font-style: italic;}
-.php .co2 {color: #808080; font-style: italic;}
-.php .coMULTI {color: #808080; font-style: italic;}
-.php .es0 {color: #000099; font-weight: bold;}
-.php .br0 {color: #66cc66;}
-.php .st0 {color: #ff0000;}
-.php .nu0 {color: #cc66cc;}
-.php .me1 {color: #006600;}
-.php .me2 {color: #006600;}
-.php .re0 {color: #0000ff;}
-
-.xml .de1, .xml .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
-.xml .imp {font-weight: bold; color: red;}
-.xml li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
-.xml .coMULTI {color: #808080; font-style: italic;}
-.xml .es0 {color: #000099; font-weight: bold;}
-.xml .br0 {color: #66cc66;}
-.xml .st0 {color: #ff0000;}
-.xml .nu0 {color: #cc66cc;}
-.xml .sc0 {color: #00bbdd;}
-.xml .sc1 {color: #ddbb00;}
-.xml .sc2 {color: #339933;}
-.xml .sc3 {color: #009900;}
-.xml .re0 {color: #000066;}
-.xml .re1 {font-weight: bold; color: black;}
-.xml .re2 {font-weight: bold; color: black;}
-
-
-.prado .de1, .prado .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
-.prado .imp {font-weight: bold; color: red;}
-.prado li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
-.prado .coMULTI {color: #808080; font-style: italic;}
-.prado .es0 {color: #000099; font-weight: bold;}
-.prado .br0 {color: #66cc66;}
-.prado .st0 {color: #ff0000;}
-.prado .nu0 {color: #cc66cc;}
-.prado .sc0 {color: #00bbdd;}
-.prado .sc1 {color: #ddbb00;}
-.prado .sc2 {color: #339933;}
-.prado .sc3 {color: #009900;}
-.prado .re0 {color: #006; font-weight: bold; } /* prado com:ComponentName tags */
-.prado .re0 a.api { color: #006; text-decoration: none; border-bottom: 1px dotted #33f; }
-.prado .re1 {color: #006; font-weight: bold; } /* prado </com:TComponentName> tags */
-.prado .re2 {color: #c66; font-weight: bold; } /* prado </com:TComponentName> tags */
-
-
-.html .de1, .html .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
-.html .imp {font-weight: bold; color: red;}
-.html li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
-.html .kw1 {color: #b1b100;}
-.html .kw2 {color: #000000; font-weight: bold;}
-.html .kw3 {color: #000066;}
-.html .coMULTI {color: #808080; font-style: italic;}
-.html .es0 {color: #000099; font-weight: bold;}
-.html .br0 {color: #66cc66;}
-.html .st0 {color: #ff0000;}
-.html .nu0 {color: #cc66cc;}
-.html .sc0 {color: #00bbdd;}
-.html .sc1 {color: #ddbb00;}
-.html .sc2 {color: #009900;}
-
-.css .de1, .css .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
-.css .imp {font-weight: bold; color: red;}
-.css li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
-.css .kw1 {color: #000000; font-weight: bold;}
-.css .kw2 {color: #993333;}
-.css .co1 {color: #a1a100;}
-.css .coMULTI {color: #808080; font-style: italic;}
-.css .es0 {color: #000099; font-weight: bold;}
-.css .br0 {color: #66cc66;}
-.css .st0 {color: #ff0000;}
-.css .nu0 {color: #cc66cc;}
-.css .re0 {color: #cc00cc;}
-.css .re1 {color: #6666ff;}
-.css .re2 {color: #3333ff;}
-
-.javascript .de1, .javascript .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
-.javascript .imp {font-weight: bold; color: red;}
-.javascript li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
-.javascript .kw1 {color: #000066; font-weight: bold;}
-.javascript .kw2 {color: #003366; font-weight: bold;}
-.javascript .kw3 {color: #000066;}
-.javascript .co1 {color: #009900; font-style: italic;}
-.javascript .coMULTI {color: #009900; font-style: italic;}
-.javascript .es0 {color: #000099; font-weight: bold;}
-.javascript .br0 {color: #66cc66;}
-.javascript .st0 {color: #3366CC;}
-.javascript .nu0 {color: #CC0000;}
-.javascript .me1 {color: #006600;}
-.javascript .re0 {color: #0066FF;}
-
-.source .copycode
-{
- text-align: right;
- float: right;
-}
-
-.source .copycode a
-{
- cursor: pointer;
- color: blue;
-}
-
-.source .copycode_hover a
-{
- color: red;
-}
-
-div.last-modified
-{
- font-size: 0.8em;
- color: #999;
- margin-top: 5em;
- margin-bottom: -3em;
-}
-
-p.since-version, p.requires-version
-{
- display: none;
-}
-
-div.languages
-{
- display: none;
-} \ No newline at end of file
diff --git a/buildscripts/chmbuilder/classes/application.xml b/buildscripts/chmbuilder/classes/application.xml
deleted file mode 100644
index 13533b0c..00000000
--- a/buildscripts/chmbuilder/classes/application.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<application mode="Normal">
- <paths>
- <using namespace="Application.pages.*" />
- </paths>
- <services>
- <service id="page" class="TPageService" BasePath="Application.pages">
- <pages MasterClass="MainLayout" />
- </service>
- </services>
-</application>
diff --git a/buildscripts/chmbuilder/classes/pages/ClassDoc.page b/buildscripts/chmbuilder/classes/pages/ClassDoc.page
deleted file mode 100644
index ef941c5b..00000000
--- a/buildscripts/chmbuilder/classes/pages/ClassDoc.page
+++ /dev/null
@@ -1,30 +0,0 @@
-<%@ Title="PRADO - Documentation" %>
-
-<com:TContent ID="main">
-
-<div class="doc-namespace">
-Namespace: <a href="../manual/CHMdefaultConverter/li_<%= $this->Class['Package'] %>.html"><%= $this->Class['Package'] %></a>
-</div>
-<%= $this->Ancestors %>
-
-<div class="doc-title">
-<a href="../manual/CHMdefaultConverter/<%= $this->Class['Package'].'/'.$this->Class['Name'] %>.html"><%= $this->Class['Name'] %></a>
-</div>
-
-<div class="doc-menu">
-<a href="#properties">Properties</a> | <a href="#events">Events</a> | <a href="#methods">Methods</a> | <a href="#child">Derived classes</a> | <a href="Classes.html">All classes</a>
-</div>
-
-<div class="doc-subtitle"><a name="properties"></a>Properties</div>
-<%= $this->Properties %>
-
-<div class="doc-subtitle"><a name="events"></a>Events</div>
-<%= $this->Events %>
-
-<div class="doc-subtitle"><a name="methods"></a>Methods</div>
-<%= $this->Methods %>
-
-<div class="doc-subtitle"><a name="child"></a>Derived classes</div>
-<%= $this->Derived %>
-
-</com:TContent>
diff --git a/buildscripts/chmbuilder/classes/pages/ClassDoc.php b/buildscripts/chmbuilder/classes/pages/ClassDoc.php
deleted file mode 100644
index fc239890..00000000
--- a/buildscripts/chmbuilder/classes/pages/ClassDoc.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-
-class ClassDoc extends TPage
-{
- public $Class;
- private $_classes;
-
- public function onLoad($param)
- {
- parent::onLoad($param);
- $dataFile=Prado::getPathOfNamespace('Application.Data.classes','.data');
- $this->_classes=unserialize(file_get_contents($dataFile));
-
- if(($className=$this->Request['class'])!==null && isset($this->_classes[$className]))
- {
- $this->Class=$this->_classes[$className];
- $this->Class['Name']=$className;
- $this->Title='PRADO - Documentation of '.$className;
- }
- else
- $this->Response->redirect('/docs/classdoc/');
- }
-
- public function getAncestors()
- {
- $ancestors=array();
- $thisClass=$this->Class;
- while(true)
- {
- $parentClass=$thisClass['ParentClass'];
- if(isset($this->_classes[$parentClass]))
- {
- $ancestors[]=$parentClass;
- $thisClass=$this->_classes[$parentClass];
- }
- else
- break;
- }
- $ancestors=array_reverse($ancestors);
- $s='';
- foreach($ancestors as $ancestor)
- $s.="<a href=\"$ancestor.html\">$ancestor</a> &raquo;\n";
- if($s!=='')
- $s="<div class=\"doc-ancestors\">\nInheritance: $s</div>\n";
- return $s;
- }
-
- public function getProperties()
- {
- $class=$this->Class;
- $className=$this->Class['Name'];
- $s='';
- foreach($class['Properties'] as $name=>$property)
- {
- $inherited=strcasecmp($property['class'],$className)!==0;
- $rowclass=$inherited?'doc-inherited':'doc-native';
- $s.="<tr class=\"$rowclass\">\n";
- $access='';
- if($property['readonly'])
- $access.='R';
- if($property['protected'])
- $access.='P';
- if($access==='')
- $access='&nbsp;';
- $s.="<td width=\"1\" nowrap=\"nowrap\" align=\"center\">$access</td>\n";
-
- if($inherited)
- {
- $parentClass=$property['class'];
- if(isset($this->_classes[$parentClass]))
- {
- $url="../manual/CHMdefaultConverter/{$this->_classes[$parentClass]['Package']}/{$parentClass}.html#methodget{$name}";
- $s.="<td><a href=\"$url\">$name</a></td>\n";
- }
- else
- $s.="<td>$name</td>\n";
- }
- else
- {
- $url="../manual/CHMdefaultConverter/{$class['Package']}/{$className}.html#methodget{$name}";
- $s.="<td><a href=\"$url\">$name</a></td>\n";
- }
-
- $type=$property['type'];
- if(isset($this->_classes[$type]))
- {
- $url="$type.html";
- $s.="<td><a href=\"$url\">$type</a></td>\n";
- }
- else
- $s.="<td>$type</td>\n";
-
- $comments=rtrim($property['comments'],'.').'.';
- if($inherited)
- {
- $parentClass=$property['class'];
- if(isset($this->_classes[$parentClass]))
- {
- $url="$parentClass.html";
- $comments.=" (inherited from <a href=\"$url\">$parentClass</a>)";
- }
- else
- $comments.=" (inherited from {$parentClass})";
- }
- $s.="<td>$comments</td>\n";
- $s.="</tr>\n";
- }
-
- $header="<tr>\n<th>&nbsp;</th><th>Name</th><th>Type</th><th>Description</th>\n</tr>\n";
- return $s===''?'':"<div class=\"doc-properties\">\n<table>\n$header$s</table>\n</div>\n";
- }
-
- public function getEvents()
- {
- $class=$this->Class;
- $className=$this->Class['Name'];
- $s='';
- foreach($class['Events'] as $name=>$event)
- {
- $inherited=strcasecmp($event['class'],$className)!==0;
- $rowclass=$inherited?'doc-inherited':'doc-native';
- $s.="<tr class=\"$rowclass\">\n";
-
- $methodName=$name;
- $methodName[0]='o';
- if($inherited)
- {
- $parentClass=$event['class'];
- if(isset($this->_classes[$parentClass]))
- {
- $url="../manual/CHMdefaultConverter/{$this->_classes[$parentClass]['Package']}/{$parentClass}.html#method{$methodName}";
- $s.="<td><a href=\"$url\">$name</a></td>\n";
- }
- else
- $s.="<td>$name</td>\n";
- }
- else
- {
- $url="../manual/CHMdefaultConverter/{$class['Package']}/{$className}.html#method{$methodName}";
- $s.="<td><a href=\"$url\">$name</a></td>\n";
- }
-
- $comments=rtrim($event['comments'],'.').'.';
- if($inherited)
- {
- $parentClass=$event['class'];
- if(isset($this->_classes[$parentClass]))
- {
- $url="$parentClass.html";
- $comments.=" (inherited from <a href=\"$url\">$parentClass</a>)";
- }
- else
- $comments.=" (inherited from {$parentClass})";
- }
- $s.="<td>$comments</td>\n";
- $s.="</tr>\n";
- }
- $header="<tr>\n<th>Name</th><th>Description</th>\n</tr>\n";
- return $s===''?'':"<div class=\"doc-events\">\n<table>\n$header$s</table>\n</div>\n";
- }
-
- public function getMethods()
- {
- $class=$this->Class;
- $className=$this->Class['Name'];
- $s='';
- foreach($class['Methods'] as $name=>$method)
- {
- $inherited=strcasecmp($method['class'],$className)!==0;
- $rowclass=$inherited?'doc-inherited':'doc-native';
- $s.="<tr class=\"$rowclass\">\n";
- $access='';
- if($method['static'])
- $access.='S';
- if($method['protected'])
- $access.='P';
- if($access==='')
- $access='&nbsp;';
- $s.="<td nowrap=\"nowrap\" width=\"1\" align=\"center\">$access</td>\n";
-
- if($inherited)
- {
- $parentClass=$method['class'];
- if(isset($this->_classes[$parentClass]))
- {
- $url="../manual/CHMdefaultConverter/{$this->_classes[$parentClass]['Package']}/{$parentClass}.html#method{$name}";
- $s.="<td><a href=\"$url\">$name</a></td>\n";
- }
- else
- $s.="<td>$name</td>\n";
- }
- else
- {
- $url="../manual/CHMdefaultConverter/{$class['Package']}/{$className}.html#method{$name}";
- $s.="<td><a href=\"$url\">$name</a></td>\n";
- }
-
- $comments=rtrim($method['comments'],'.').'.';
- if($inherited)
- {
- $parentClass=$method['class'];
- if(isset($this->_classes[$parentClass]))
- {
- $url="$parentClass.html";
- $comments.=" (inherited from <a href=\"$url\">$parentClass</a>)";
- }
- else
- $comments.=" (inherited from {$parentClass})";
- }
- $s.="<td>$comments</td>\n";
- $s.="</tr>\n";
- }
- $header="<tr>\n<th>&nbsp;</th><th>Name</th><th>Description</th>\n</tr>\n";
- return $s===''?'':"<div class=\"doc-methods\">\n<table>\n$header$s</table>\n</div>\n";
- }
-
- public function getDerived()
- {
- $class=$this->Class;
- $s='';
- foreach($class['ChildClasses'] as $childName)
- $s.="<li><a href=\"$childName.html\">$childName</a></li>\n";
- return $s===''?'':"<div class=\"doc-derived\">\n<ul>\n$s</ul>\n</div>\n";
- }
-
-}
-
-?>
diff --git a/buildscripts/chmbuilder/classes/pages/Classes.page b/buildscripts/chmbuilder/classes/pages/Classes.page
deleted file mode 100644
index dd8f3440..00000000
--- a/buildscripts/chmbuilder/classes/pages/Classes.page
+++ /dev/null
@@ -1,9 +0,0 @@
-<%@ Title="PRADO - Class Documentation" %>
-
-<com:TContent ID="main">
-
-<h2>PRADO Framework Classes</h2>
-
-<com:TBulletedList ID="ClassList" DisplayMode="HyperLink" />
-
-</com:TContent>
diff --git a/buildscripts/chmbuilder/classes/pages/Classes.php b/buildscripts/chmbuilder/classes/pages/Classes.php
deleted file mode 100644
index aeaf0a0a..00000000
--- a/buildscripts/chmbuilder/classes/pages/Classes.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class Classes extends TPage
-{
- public function onLoad($param)
- {
- parent::onLoad($param);
- $dataFile=Prado::getPathOfNamespace('Application.Data.classes','.data');
- $classes=unserialize(file_get_contents($dataFile));
- $data=array();
- $baseUrl=$this->Request->ApplicationUrl;
- foreach(array_keys($classes) as $className)
- $data["$className.html"]=$className;
- $this->ClassList->DataSource=$data;
- $this->ClassList->dataBind();
- }
-}
-
-?>
diff --git a/buildscripts/chmbuilder/classes/pages/MainLayout.php b/buildscripts/chmbuilder/classes/pages/MainLayout.php
deleted file mode 100644
index 163c1c9f..00000000
--- a/buildscripts/chmbuilder/classes/pages/MainLayout.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-class MainLayout extends TTemplateControl
-{
-
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/chmbuilder/classes/pages/MainLayout.tpl b/buildscripts/chmbuilder/classes/pages/MainLayout.tpl
deleted file mode 100644
index 47fcfc85..00000000
--- a/buildscripts/chmbuilder/classes/pages/MainLayout.tpl
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or
-g/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
-
-<com:THead Title="PRADO PHP Framework">
-<meta name="Keywords" content="PHP framework" />
-<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="PHP framework, Web programming" />
-<com:TStyleSheet StyleSheetUrl=<%~ style.css %> />
-</com:THead>
-
-<body>
-
-<com:TForm>
-<div id="page">
-
-<div id="main">
-<com:TContentPlaceHolder ID="main" />
-<div style="clear: both;"></div>
-</div>
-
-</com:TForm>
-
-<div id="footer">
- Copyright &copy; 2006 by the PRADO Group.<br/>
-</div>
-
-</div>
-
-</body>
-</html>
diff --git a/buildscripts/chmbuilder/classes/pages/style.css b/buildscripts/chmbuilder/classes/pages/style.css
deleted file mode 100644
index 64f6a892..00000000
--- a/buildscripts/chmbuilder/classes/pages/style.css
+++ /dev/null
@@ -1,647 +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;
-}
-
-#header
-{
- position: relative;
- height: 98px;
-}
-
-#logo
-{
- height: 99px;
-}
-
-#mainmenu
-{
- position: absolute;
- top: 69px;
-}
-
-#mainmenu ul
-{
- margin-left: 0;
- padding-left: 0;
- display: inline;
-}
-
-#mainmenu ul li
-{
- margin-left: 0px;
- list-style: none;
- display: inline;
-}
-
-#mainmenu ul li a
-{
- display: block;
- float: left;
- font-size: 14px;
- font-weight: bold;
- padding-left: 7px;
- padding-right: 7px;
- padding-top: 5px;
- color: #FFFFCC;
- text-decoration: none;
- height: 29px;
-}
-
-#mainmenu ul li a:hover
-{
- color: #fff;
-}
-
-#mainmenu ul li a.active
-{
- color: #91A412;
-}
-
-/* main page */
-
-div.intro
-{
-}
-
-div.statements
-{
-}
-
-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;
-}
-
-div.whyprado ul.list li.one
-{
-}
-
-div.whyprado ul.list li.two
-{
-}
-
-div.whyprado ul.list li.three
-{
-}
-
-div.whyprado ul.list li a
-{
- color: #9F9291;
- text-decoration: 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;
-}
-
-#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/chmbuilder/index.php b/buildscripts/chmbuilder/index.php
deleted file mode 100644
index 359a53e1..00000000
--- a/buildscripts/chmbuilder/index.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-include('../../framework/prado.php');
- $app = new TApplication("classes");
- $app->run();
-
-
-?> \ No newline at end of file
diff --git a/buildscripts/classtree/build.php b/buildscripts/classtree/build.php
index fab1b12b..44700be4 100644
--- a/buildscripts/classtree/build.php
+++ b/buildscripts/classtree/build.php
@@ -254,5 +254,3 @@ class ClassTreeBuilder
return '';
}
}
-
-?>
diff --git a/buildscripts/index/api_index.php b/buildscripts/index/api_index.php
index 339cb042..1de8fb56 100644
--- a/buildscripts/index/api_index.php
+++ b/buildscripts/index/api_index.php
@@ -21,16 +21,15 @@ class api_index
function create_index()
{
echo "Building search index...\n";
- $files = $this->get_file_list($this->_api);
+ $files = $this->get_files($this->_api);
$count = 0;
foreach($files as $file)
{
- echo " processing $file...\n";
$content = $this->get_details($file, $this->_api);
$doc = new Zend_Search_Lucene_Document();
- $title = $content['namespace'].'.'.$content['class'];
+ $title = $content['class'];
echo " Adding ".$title."\n";
@@ -55,27 +54,6 @@ class api_index
return htmlentities(strip_tags( $input ));
}
-
- function get_file_list($path)
- {
-
- $d = dir($path);
-
- $files = array();
- while (false !== ($entry = $d->read()))
- {
- $filepath = $path.'/'.$entry;
-
- if(is_dir($filepath) && is_int(strpos($entry, 'System')))
- {
- $files = array_merge($files, $this->get_files($filepath));
- }
- }
-
- $d->close();
- return $files;
- }
-
function get_files($path)
{
$d = dir($path);
@@ -84,7 +62,7 @@ class api_index
while (false !== ($entry = $d->read()))
{
$filepath = $path.'/'.$entry;
- if(is_file($filepath) && $entry[0] !== '_')
+ if(is_file($filepath) && strpos($entry, 'class-')===0)
$files[] = realpath($filepath);
}
$d->close();
@@ -107,15 +85,11 @@ class api_index
function get_details($file, $base)
{
$result['content'] = $this->get_doc_content($file);
- $find = array($base, '.html', '-');
- $replace = array('', '', '.');
- $path = preg_split('/\/|\\\/', str_replace($find, $replace, $file));
- $result['namespace'] = $path[1];
- $result['class'] = $path[2];
- $result['link'] = self::API_URL.$path[1].'/'.$path[2].'.html';
+ $find = array($base, '.html', 'class-');
+ $replace = array('', '', '');
+ $path = str_replace($find, $replace, $file);
+ $result['class'] = $path;
+ $result['link'] = self::API_URL.$file;
return $result;
}
}
-
-
-?> \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE b/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE
deleted file mode 100644
index f820d4bd..00000000
--- a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Apache License
- * Version 2.0, January 2004
- * http://www.apache.org/licenses/
- *
- * TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
- *
- * 1. Definitions.
- *
- * "License" shall mean the terms and conditions for use, reproduction,
- * and distribution as defined by Sections 1 through 9 of this document.
- *
- * "Licensor" shall mean the copyright owner or entity authorized by
- * the copyright owner that is granting the License.
- *
- * "Legal Entity" shall mean the union of the acting entity and all
- * other entities that control, are controlled by, or are under common
- * control with that entity. For the purposes of this definition,
- * "control" means (i) the power, direct or indirect, to cause the
- * direction or management of such entity, whether by contract or
- * otherwise, or (ii) ownership of fifty percent (50%) or more of the
- * outstanding shares, or (iii) beneficial ownership of such entity.
- *
- * "You" (or "Your") shall mean an individual or Legal Entity
- * exercising permissions granted by this License.
- *
- * "Source" form shall mean the preferred form for making modifications,
- * including but not limited to software source code, documentation
- * source, and configuration files.
- *
- * "Object" form shall mean any form resulting from mechanical
- * transformation or translation of a Source form, including but
- * not limited to compiled object code, generated documentation,
- * and conversions to other media types.
- *
- * "Work" shall mean the work of authorship, whether in Source or
- * Object form, made available under the License, as indicated by a
- * copyright notice that is included in or attached to the work
- * (an example is provided in the Appendix below).
- *
- * "Derivative Works" shall mean any work, whether in Source or Object
- * form, that is based on (or derived from) the Work and for which the
- * editorial revisions, annotations, elaborations, or other modifications
- * represent, as a whole, an original work of authorship. For the purposes
- * of this License, Derivative Works shall not include works that remain
- * separable from, or merely link (or bind by name) to the interfaces of,
- * the Work and Derivative Works thereof.
- *
- * "Contribution" shall mean any work of authorship, including
- * the original version of the Work and any modifications or additions
- * to that Work or Derivative Works thereof, that is intentionally
- * submitted to Licensor for inclusion in the Work by the copyright owner
- * or by an individual or Legal Entity authorized to submit on behalf of
- * the copyright owner. For the purposes of this definition, "submitted"
- * means any form of electronic, verbal, or written communication sent
- * to the Licensor or its representatives, including but not limited to
- * communication on electronic mailing lists, source code control systems,
- * and issue tracking systems that are managed by, or on behalf of, the
- * Licensor for the purpose of discussing and improving the Work, but
- * excluding communication that is conspicuously marked or otherwise
- * designated in writing by the copyright owner as "Not a Contribution."
- *
- * "Contributor" shall mean Licensor and any individual or Legal Entity
- * on behalf of whom a Contribution has been received by Licensor and
- * subsequently incorporated within the Work.
- *
- * 2. Grant of Copyright License. Subject to the terms and conditions of
- * this License, each Contributor hereby grants to You a perpetual,
- * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- * copyright license to reproduce, prepare Derivative Works of,
- * publicly display, publicly perform, sublicense, and distribute the
- * Work and such Derivative Works in Source or Object form.
- *
- * 3. Grant of Patent License. Subject to the terms and conditions of
- * this License, each Contributor hereby grants to You a perpetual,
- * worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- * (except as stated in this section) patent license to make, have made,
- * use, offer to sell, sell, import, and otherwise transfer the Work,
- * where such license applies only to those patent claims licensable
- * by such Contributor that are necessarily infringed by their
- * Contribution(s) alone or by combination of their Contribution(s)
- * with the Work to which such Contribution(s) was submitted. If You
- * institute patent litigation against any entity (including a
- * cross-claim or counterclaim in a lawsuit) alleging that the Work
- * or a Contribution incorporated within the Work constitutes direct
- * or contributory patent infringement, then any patent licenses
- * granted to You under this License for that Work shall terminate
- * as of the date such litigation is filed.
- *
- * 4. Redistribution. You may reproduce and distribute copies of the
- * Work or Derivative Works thereof in any medium, with or without
- * modifications, and in Source or Object form, provided that You
- * meet the following conditions:
- *
- * (a) You must give any other recipients of the Work or
- * Derivative Works a copy of this License; and
- *
- * (b) You must cause any modified files to carry prominent notices
- * stating that You changed the files; and
- *
- * (c) You must retain, in the Source form of any Derivative Works
- * that You distribute, all copyright, patent, trademark, and
- * attribution notices from the Source form of the Work,
- * excluding those notices that do not pertain to any part of
- * the Derivative Works; and
- *
- * (d) If the Work includes a "NOTICE" text file as part of its
- * distribution, then any Derivative Works that You distribute must
- * include a readable copy of the attribution notices contained
- * within such NOTICE file, excluding those notices that do not
- * pertain to any part of the Derivative Works, in at least one
- * of the following places: within a NOTICE text file distributed
- * as part of the Derivative Works; within the Source form or
- * documentation, if provided along with the Derivative Works; or,
- * within a display generated by the Derivative Works, if and
- * wherever such third-party notices normally appear. The contents
- * of the NOTICE file are for informational purposes only and
- * do not modify the License. You may add Your own attribution
- * notices within Derivative Works that You distribute, alongside
- * or as an addendum to the NOTICE text from the Work, provided
- * that such additional attribution notices cannot be construed
- * as modifying the License.
- *
- * You may add Your own copyright statement to Your modifications and
- * may provide additional or different license terms and conditions
- * for use, reproduction, or distribution of Your modifications, or
- * for any such Derivative Works as a whole, provided Your use,
- * reproduction, and distribution of the Work otherwise complies with
- * the conditions stated in this License.
- *
- * 5. Submission of Contributions. Unless You explicitly state otherwise,
- * any Contribution intentionally submitted for inclusion in the Work
- * by You to the Licensor shall be under the terms and conditions of
- * this License, without any additional terms or conditions.
- * Notwithstanding the above, nothing herein shall supersede or modify
- * the terms of any separate license agreement you may have executed
- * with Licensor regarding such Contributions.
- *
- * 6. Trademarks. This License does not grant permission to use the trade
- * names, trademarks, service marks, or product names of the Licensor,
- * except as required for reasonable and customary use in describing the
- * origin of the Work and reproducing the content of the NOTICE file.
- *
- * 7. Disclaimer of Warranty. Unless required by applicable law or
- * agreed to in writing, Licensor provides the Work (and each
- * Contributor provides its Contributions) on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * implied, including, without limitation, any warranties or conditions
- * of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- * PARTICULAR PURPOSE. You are solely responsible for determining the
- * appropriateness of using or redistributing the Work and assume any
- * risks associated with Your exercise of permissions under this License.
- *
- * 8. Limitation of Liability. In no event and under no legal theory,
- * whether in tort (including negligence), contract, or otherwise,
- * unless required by applicable law (such as deliberate and grossly
- * negligent acts) or agreed to in writing, shall any Contributor be
- * liable to You for damages, including any direct, indirect, special,
- * incidental, or consequential damages of any character arising as a
- * result of this License or out of the use or inability to use the
- * Work (including but not limited to damages for loss of goodwill,
- * work stoppage, computer failure or malfunction, or any and all
- * other commercial damages or losses), even if such Contributor
- * has been advised of the possibility of such damages.
- *
- * 9. Accepting Warranty or Additional Liability. While redistributing
- * the Work or Derivative Works thereof, You may choose to offer,
- * and charge a fee for, acceptance of support, warranty, indemnity,
- * or other liability obligations and/or rights consistent with this
- * License. However, in accepting such obligations, You may act only
- * on Your own behalf and on Your sole responsibility, not on behalf
- * of any other Contributor, and only if You agree to indemnify,
- * defend, and hold each Contributor harmless for any liability
- * incurred by, or claims asserted against, such Contributor by reason
- * of your accepting any such warranty or additional liability.
- *
- * END OF TERMS AND CONDITIONS
- *
- * APPENDIX: How to apply the Apache License to your work.
- *
- * To apply the Apache License to your work, attach the following
- * boilerplate notice, with the fields enclosed by brackets "[]"
- * replaced with your own identifying information. (Don't include
- * the brackets!) The text should be enclosed in the appropriate
- * comment syntax for the file format. We also recommend that a
- * file or class name and description of purpose be included on the
- * same "printed page" as the copyright notice for easier
- * identification within third-party archives.
- *
- * Copyright [yyyy] [name of copyright owner]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
diff --git a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.dom b/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.dom
deleted file mode 100644
index 05013f19..00000000
--- a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.dom
+++ /dev/null
@@ -1,71 +0,0 @@
-This license came from:
-http://www.w3.org/Consortium/Legal/copyright-software-19980720
-
-
-W3C® SOFTWARE NOTICE AND LICENSE
-Copyright © 1994-2001 World
-Wide Web Consortium, <a href="http://www.w3.org/">World
-Wide Web Consortium</a>, (<a href=
-"http://www.lcs.mit.edu/">Massachusetts Institute of
-Technology</a>, <a href="http://www.inria.fr/">Institut National de
-Recherche en Informatique et en Automatique</a>, <a href=
-"http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.
-http://www.w3.org/Consortium/Legal/
-
-This W3C work (including software, documents, or other related
-items) is being provided by the copyright holders under the
-following license. By obtaining, using and/or copying this work,
-you (the licensee) agree that you have read, understood, and will
-comply with the following terms and conditions:
-Permission to use, copy, modify, and distribute this software
-and its documentation, with or without modification,  for any
-purpose and without fee or royalty is hereby granted, provided that
-you include the following on ALL copies of the software and
-documentation or portions thereof, including modifications, that
-you make:
-
-The full text of this NOTICE in a location viewable to users of
-the redistributed or derivative work.
-
-Any pre-existing intellectual property disclaimers, notices, or
-terms and conditions. If none exist, a short notice of the
-following form (hypertext is preferred, text is permitted) should
-be used within the body of any redistributed or derivative code:
-"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of
-Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
-http://www.w3.org/Consortium/Legal/"
-
-Notice of any changes or modifications to the W3C files,
-including the date changes were made. (We recommend you provide
-URIs to the location from which the code is derived.)
-
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND
-COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
-MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
-USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
-PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
-SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
-SOFTWARE OR DOCUMENTATION.
-
-The name and trademarks of copyright holders may NOT be used in
-advertising or publicity pertaining to the software without
-specific, written prior permission. Title to copyright in this
-software and any associated documentation will at all times remain
-with copyright holders.
-____________________________________
-This formulation of W3C's notice and license became active on
-August 14 1998 so as to improve compatibility with GPL. This
-version ensures that W3C software licensing terms are no more
-restrictive than GPL and consequently W3C software may be
-distributed in GPL packages. See the older formulation for the
-policy prior to this date. Please see our Copyright FAQ for common
-questions about using materials from
-our site, including specific terms and conditions for packages like
-libwww, Amaya, and Jigsaw.
-Other questions about this notice can be
-directed to site-policy@w3.org.
-
-webmaster
diff --git a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.sax b/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.sax
deleted file mode 100644
index 006c924b..00000000
--- a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.sax
+++ /dev/null
@@ -1,20 +0,0 @@
-This license came from: http://www.megginson.com/SAX/copying.html
- However please note future versions of SAX may be covered
- under http://saxproject.org/?selected=pd
-
-
-This page is now out of date -- see the new SAX site at
-http://www.saxproject.org/ for more up-to-date
-releases and other information. Please change your bookmarks.
-
-
-SAX2 is Free!
-
-I hereby abandon any property rights to SAX 2.0 (the Simple API for
-XML), and release all of the SAX 2.0 source code, compiled code, and
-documentation contained in this distribution into the Public Domain.
-SAX comes with NO WARRANTY or guarantee of fitness for any
-purpose.
-
-David Megginson, david@megginson.com
-2000-05-05 \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.xerces b/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.xerces
deleted file mode 100644
index 70cb54a0..00000000
--- a/buildscripts/jGrouseDoc/3rdparty/ant/LICENSE.xerces
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Xerces" and "Apache Software Foundation" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * nor may "Apache" appear in their name, without prior written
- * permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, International
- * Business Machines, Inc., http://www.ibm.com. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
diff --git a/buildscripts/jGrouseDoc/3rdparty/ant/NOTICE b/buildscripts/jGrouseDoc/3rdparty/ant/NOTICE
deleted file mode 100644
index 5ef72b96..00000000
--- a/buildscripts/jGrouseDoc/3rdparty/ant/NOTICE
+++ /dev/null
@@ -1,20 +0,0 @@
- =========================================================================
- == NOTICE file corresponding to the section 4 d of ==
- == the Apache License, Version 2.0, ==
- == in this case for the Apache Ant distribution. ==
- =========================================================================
-
- Apache Ant
- Copyright 1999-2006 The Apache Software Foundation
-
- This product includes software developed by
- The Apache Software Foundation (http://www.apache.org/).
-
- This product includes also software developed by :
- - the W3C consortium (http://www.w3c.org) ,
- - the SAX project (http://www.saxproject.org)
-
- The <sync> task is based on code Copyright (c) 2002, Landmark
- Graphics Corp that has been kindly donated to the Apache Software
- Foundation.
-
diff --git a/buildscripts/jGrouseDoc/3rdparty/velocity/LICENSE b/buildscripts/jGrouseDoc/3rdparty/velocity/LICENSE
deleted file mode 100644
index 75b52484..00000000
--- a/buildscripts/jGrouseDoc/3rdparty/velocity/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/buildscripts/jGrouseDoc/3rdparty/velocity/NOTICE b/buildscripts/jGrouseDoc/3rdparty/velocity/NOTICE
deleted file mode 100644
index c016d50c..00000000
--- a/buildscripts/jGrouseDoc/3rdparty/velocity/NOTICE
+++ /dev/null
@@ -1,7 +0,0 @@
-Apache Velocity
-
-Copyright (C) 2000-2007 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/buildscripts/jGrouseDoc/README-prado.txt b/buildscripts/jGrouseDoc/README-prado.txt
deleted file mode 100644
index 2f28a686..00000000
--- a/buildscripts/jGrouseDoc/README-prado.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-To keep the footprint as small as possible we've removed
-the /samples directory and some unused skins and themes
-from /skins and /themes.
-
-If you need these examples please got to
-http://code.google.com/p/jgrousedoc/. \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/build.xml b/buildscripts/jGrouseDoc/build.xml
deleted file mode 100644
index 61848820..00000000
--- a/buildscripts/jGrouseDoc/build.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0"?>
- <!--
- jGrouseDoc Sample build file.
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: build.xml 522 2008-03-31 23:34:36Z denis.riabtchik $
- -->
-
-<project name="jGrouseDoc Sample" basedir="." default="default" >
- <description>
- jGrouse sample file
- </description>
- <!--
- <taskdef name="jgdoc" classname="jgrouse.jgdoc.ant.JGTask" classpath="${jGrouseHome}/jgdoc.jar"></taskdef>
- <taskdef name="fastxslt" classname="jgrouse.jgdoc.ant.FastXsltTask" classpath="${jGrouseHome}/jgdoc.jar"></taskdef>
- -->
-
- <!-- =================================
- target: default
- ================================= -->
- <target name="default" description="jGrouseDoc task" depends="setup, clean, makeProjectFile, antgen, antrun, cleanupTempFiles">
- </target>
-
- <target name="makeProjectFile" description="Extract comments from source code" depends="setup">
- <mkdir dir="${outputDir}"/>
- <jgdoc output="${outputDir}/${projectFile}" encoding="${encoding}" stopOnErrors="${stopOnErrors}"
- suppressGlobalWarnings="${suppressGlobalWarnings}" outputformat="${outputFormat}" srcUrl="${srcUrl}"
- privateprefix="${privatePrefix}">
- <fileset dir="${inputDir}" includes="${fileMask}">
- </fileset>
- </jgdoc>
- </target>
-
- <target name="antgen" depends="antgenxml, antgenvm"></target>
-
- <target name="antgenxml" depends="setup" if="isXML">
- <delete file="${outputDir}/antgen.xml"/>
- <xslt style="${jGrouseHome}/skins/${skin}/xslt/antgen.xslt" in="${outputDir}/${projectFile}" out="${outputDir}/antgen.xml">
- <param name="jGrouseHome" expression="${jGrouseHome}"/>
- <param name="projectName" expression="${projectName}"/>
- <param name="projectDesc" expression="${projectDesc}"/>
- <param name="projectFile" expression="${projectFile}"/>
- <param name="useFullNames" expression="${useFullNames}"/>
- <param name="outDir" expression="${outputDir}"/>
- <param name="version" expression="${appVersion}"/>
- <param name="aux_css" expression="${aux_css}"/>
- <param name="skinDir" expression="${jGrouseHome}/skins/${skin}"/>
- </xslt>
- </target>
-
- <target name="antgenvm" depends="setup" if="isBIN">
- <delete file="${outputDir}/antgen.xml"/>
- <vmtask resourcePath="., ${jGrouseHome}" source="${outputDir}/${projectFile}" loglevel="INFO">
- <template templatename="skins/${skin}/vm/antgen.vm">
- <output file="${outputDir}/antgen.xml">
- <param key="jGrouseHome" value="${jGrouseHome}"/>
- <param key="projectName" value="${projectName}"/>
- <param key="projectDesc" value="${projectDesc}"/>
- <param key="projectFile" value="${projectFile}"/>
- <param key="useFullNames" value="${useFullNames}"/>
- <param key="outDir" value="${outputDir}"/>
- <param key="version" value="${appVersion}"/>
- <param key="aux_css" value="${aux_css}"/>
- <param key="skin" value="${skin}"/>
- <param key="skinDir" value="${jGrouseHome}/skins/${skin}"/>
- <param key="commonSkin" value="${jGrouseHome}/skins/common"/>
- </output>
- </template>
- </vmtask>
- </target>
-
- <target name="antrun" depends="setup">
- <ant antfile="${outputDir}/antgen.xml"></ant>
- <ant antfile="${jGrouseHome}/themes/${theme}/build.xml"></ant>
- </target>
-
- <target name="cleanupTempFiles" depends="setup">
- <delete file="${outputDir}/antgen.xml"/>
- <delete file="${outputDir}/${projectFile}"/>
- </target>
-
- <target name="clean" depends="setup">
- <delete dir="${outputDir}"></delete>
- </target>
-
- <target name="setup">
- <condition property="configFile" value="jgrousedoc.properties">
- <not><isset property="configFile"/></not>
- </condition>
- <property file="${configFile}"/>
- <fail message="jGrouseHome home not defined">
- <condition>
- <and>
- <not><isset property="jGrouseHome"/></not>
- <not><isset property="jGrouseHome.default"/></not>
- </and>
- </condition>
- </fail>
- <condition property="jGrouseHome" value="${jGrouseHome.default}">
- <not><isset property="jGrouseHome"/></not>
- </condition>
- <condition property="jgdocTask" value="${jGrouseHome}/jgdoc.jar">
- <not><isset property="jgdocTask"/></not>
- </condition>
- <taskdef name="jgdoc" classname="jgrouse.jgdoc.ant.JGTask" classpath="${jgdocTask}"></taskdef>
- <taskdef name="fastxslt" classname="jgrouse.jgdoc.ant.FastXsltTask" classpath="${jgdocTask}"></taskdef>
-
- <condition property="inputDir" value="${inputDir.default}">
- <isset property="inputDir.default"/>
- </condition>
- <condition property="inputDir" value="source">
- <not><isset property="inputDir"/></not>
- </condition>
- <condition property="fileMask" value="${fileMask.default}">
- <isset property="fileMask.default"/>
- </condition>
- <condition property="fileMask" value="**/*.js">
- <not><isset property="fileMask"/></not>
- </condition>
-
- <condition property="outputDir" value="${outputDir.default}">
- <isset property="outputDir.default"/>
- </condition>
- <condition property="outputDir" value="api">
- <not><isset property="outputDir"/></not>
- </condition>
-
- <condition property="skin" value="noframes">
- <not><isset property="skin"/></not>
- </condition>
- <condition property="theme" value="sample">
- <not><isset property="theme"/></not>
- </condition>
- <condition property="projectFile" value="jgrouse.jgd">
- <not><isset property="projectFile"/></not>
- </condition>
- <condition property="projectName" value="Project name not specified">
- <not><isset property="projectName"/></not>
- </condition>
- <condition property="appVersion" value="Version not specified">
- <not><isset property="appVersion"/></not>
- </condition>
- <condition property="projectDesc" value="Project Description not specified">
- <not><isset property="projectDesc"/></not>
- </condition>
- <condition property="stopOnErrors" value="false">
- <not><isset property="stopOnErrors"/></not>
- </condition>
- <condition property="srcUrl" value="not_defined">
- <not><isset property="srcUrl"/></not>
- </condition>
- <condition property="privatePrefix" value="not_defined">
- <not><isset property="privatePrefix"/></not>
- </condition>
- <condition property="outputFormat" value="BIN">
- <not><isset property="outputFormat"/></not>
- </condition>
- <condition property="isXML">
- <equals arg1="${outputFormat}" arg2="xml" casesensitive="false" trim="true"/>
- </condition>
- <condition property="isBIN">
- <equals arg1="${outputFormat}" arg2="bin" casesensitive="false" trim="true"/>
- </condition>
- <condition property="encoding" value="UTF-8">
- <not><isset property="encoding"/></not>
- </condition>
- <condition property="srcEncoding" value="DEFAULT">
- <not><isset property="srcEncoding"/></not>
- </condition>
- <condition property="aux_css" value="not_specified">
- <not><isset property="aux_css"/></not>
- </condition>
-
-
- <taskdef name="vmtask" classname="jgrouse.jgdoc.ant.VMTask" classpath="${jgdocTask};${jGrouseHome}/velocity-dep-1.5.jar"></taskdef>
- </target>
-
-
-</project>
diff --git a/buildscripts/jGrouseDoc/jgdoc.jar b/buildscripts/jGrouseDoc/jgdoc.jar
deleted file mode 100644
index f1665846..00000000
--- a/buildscripts/jGrouseDoc/jgdoc.jar
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/jgrousedoc.properties b/buildscripts/jGrouseDoc/jgrousedoc.properties
deleted file mode 100644
index ba3a0818..00000000
--- a/buildscripts/jGrouseDoc/jgrousedoc.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-#set jGrouseHome - location of jGrouseDoc distribution
-#jGrouseHome.default=buildscripts/jGrouseDoc
-jGrouseHome.default=.
-#set the location of your source files
-inputDir.default=../../framework/Web/Javascripts/source/prado
-#Set mask for input files
-#fileMask.default=**/scriptaculous-adapter.js
-fileMask.default=**/*.js
-#set output directory
-outputDir.default=../../docs/jsapi
-#set project information
-projectName=Prado
-projectDesc=v3.1.2 Javascript API Manual
-appVersion=3.1.2
-theme=prado
-########### for additional information regarding configuration parameters
-########### see http://code.google.com/p/jgrousedoc/wiki/AdvancedConfiguration \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/license.txt b/buildscripts/jGrouseDoc/license.txt
deleted file mode 100644
index ca9e7124..00000000
--- a/buildscripts/jGrouseDoc/license.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 2007, Denis Riabtchik and jGrouseDoc contributors, as shown on http://code.google.com/p/jgrousedoc/
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the names of jGrouse, jGrouseDoc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/skins/common/css/jgdoc.css b/buildscripts/jGrouseDoc/skins/common/css/jgdoc.css
deleted file mode 100644
index a56481d5..00000000
--- a/buildscripts/jGrouseDoc/skins/common/css/jgdoc.css
+++ /dev/null
@@ -1,301 +0,0 @@
-
-@CHARSET "ISO-8859-1";
-/*
- jGrouseDoc stylesheet file.
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: jgdoc.css 340 2008-01-21 16:13:59Z broofa $
-*/
-
-body
-{
- /*font-family: Helvetica,Arial,sans-serif;
- font-size: 0.9em;*/
-}
-
-
-a
-{
- text-decoration: none;
-}
-
-.overviewTitle
-{
- font-weight: bold;
- font-size: 1.3em;
- padding-top: 1em;
- clear: both;
-}
-
-.overviewItem
-{
-}
-
-
-.overviewSectionHeader
-{
- font-weight: bold;
- font-size: 1.1em;
- padding-top: 0.5em;
-}
-
-.sectionHeader
-{
- border: 2px groove black;
- font-size: 1.7em;
- text-align: left;
- font-weight: bold;
- background-color: #ccccff;
- color: black;
- padding: 3px;
-}
-
-.logicalSummary
-{
-}
-
-.summaryTable
-{
- border: 2px groove black;
-}
-
-.summaryTableHeader
-{
- font-size: 1.7em;
- text-align: left;
- font-weight: bold;
- background-color: #ccccff;
- color: black;
- padding: 4px;
-}
-
-.summaryTable .summaryItem
-{
- border-top: 1px solid;
- padding: 2px;
-}
-
-.summaryTable .summaryItemRef
-{
- font-weight: bold;
-}
-
-.summaryTable .summaryItemDef
-{
-}
-
-.summaryTable .inheritanceSummary
-{
- border-top: 1px solid;
- padding: 2px;
-}
-
-.summaryTable .summaryItemDesc
-{
- padding-left: 2em;
-}
-
-.elementName
-{
- font-weight: bold;
-}
-
-.descSection
-{
- font-weight: bold;
-}
-
-
-.navbar
-{
- font-size: 0.9em;
- padding-bottom: 4px;
-}
-
-.currentPage
-{
- font-weight: bold;
-}
-
-.navbaritem
-{
- float: left;
- width: 10em;
- background-color: #ccccff;
- color: black;
- padding: 4px;
- margin: 2px;
- padding-top: 2px;
- padding-bottom: 2px;
- text-align: center;
-}
-
-.navbaritem a
-{
- background-color: #ccccff;
- color: black;
- text-decoration: underline;
-}
-
-
-.projectDescRef
-{
- font-weight: bold;
-}
-
-.paddedDetails
-{
- padding-left: 5em;
-}
-
-.example
-{
- font-size: 0.8em;
- font-family: courier;
- white-space: pre;
-}
-
-
-
-.searchItem
-{
- cursor: pointer;
-}
-
-.jgdSelectedItem
-{
- background-color: #0a246a;
- color: white;
-}
-
-.jgdSearchRect
-{
- width:60%;
- height:20em;
- border: 2px inset;
- overflow: auto;
-}
-
-.jgdSearchString
-{
- width:60%;
-}
-
-.jgsInfo
-{
- white-space: pre
-}
-
-
-
-/*---------- NavTree ----------------*/
-
-
-#content {
- font-size: .9em;
- line-height:1.6;
-}
-.navTree a {
- text-decoration: none;
-}
-.navTree a:hover {
- text-decoration: underline;
-}
-
-.navTree .contents
-{
- list-style: none;
- padding-left: 6px;
- margin-left: 0px;
- clear: both;
-}
-
-.navTree .contents li
-{
- clear: both;
- white-space: nowrap;
-}
-
-
-.navTree .contents ul
-{
- border-left: 1px solid #cccccc;
- margin-left: 6px;
- clear: both;
-}
-
-
-.navTree .contents span.node
-{
- display: block;
- float: left;
-}
-
-.navTree span.node
-{
- cursor: pointer;
- background-repeat: no-repeat;
- background-position: 0em 0.2em;
-}
-
-.navTree .open span.node
-{
- background-image: url(open.gif) ;
-}
-
-.navTree .closed span.node
-{
- background-image: url(closed.gif) ;
-}
-
-.navTree .leaf span.node
-{
- background-image: url(node.gif) ;
-}
-
-.navTree .closed .contents
-{
- display: none;
-}
-
-.navTree .markerSpace
-{
- padding-left: 12px;
-}
-
-.navTree .openAll,
-.navTree .closeAll {
- font-size: .9em;
- background-repeat: no-repeat;
- padding-left: 16px;
- padding-right: 7px;
- background-position: left center;
- cursor: pointer;
-}
-
-.navTree .openAll {
- background-image: url(openLarge.gif);
-}
-
-.navTree .closeAll
-{
- background-image: url(closedLarge.gif);
-}
-
-.comment
-{
- padding-top: 0.5em;
- padding-bottom: 0.5em;
-}
-
-ul.paramoption
-{
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-a.srcUrlLink
-{
- color:#66f;
- float: right;
- font-size: 11px;
-}
diff --git a/buildscripts/jGrouseDoc/skins/common/css/jgindex.css b/buildscripts/jGrouseDoc/skins/common/css/jgindex.css
deleted file mode 100644
index c113487f..00000000
--- a/buildscripts/jGrouseDoc/skins/common/css/jgindex.css
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- jGrouseDoc stylesheet file for index page.
- Copyright (c) 2007 by Robert Kieffer and jGrouseDoc contributors
- $Id: jgindex.css 302 2007-12-24 22:51:11Z denis.riabtchik $
-*/
-@CHARSET "ISO-8859-1";
-
- dt {
- clear:both;
- float:left;
- width: 200px;
- margin-left: 20px;
- }
- a {
- color: #009;
- text-decoration: none;
- }
- a:hover {
- color: #009;
- text-decoration: underline;
- }
- dd {
- /*float:left;*/
- }
- dt, dd {
- margin: 0px;
- }
- dt.even, dd.even {
- border-bottom: dashed 1px #ddd;
- }
- dt.odd, dd.odd {
- border-bottom: dotted 1px #eee;
- }
- dt.is_namespace {
- font-weight:bold;
- }
-
- #toc {
- font-size: 12pt;
- font-weight: bold;
- }
- #toc .has_entries a,
- #toc .no_entries {padding: 0px 3px;}
- #toc .no_entries {color:#999}
-
- .letter_section {
- clear:both;
- margin: 0px;
- padding:15px 0px 6px;
- }
- .letter_section a {
- color:#000;
- }
diff --git a/buildscripts/jGrouseDoc/skins/common/img/closed.gif b/buildscripts/jGrouseDoc/skins/common/img/closed.gif
deleted file mode 100644
index ab9701f2..00000000
--- a/buildscripts/jGrouseDoc/skins/common/img/closed.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/skins/common/img/closedLarge.gif b/buildscripts/jGrouseDoc/skins/common/img/closedLarge.gif
deleted file mode 100644
index 97e3ab95..00000000
--- a/buildscripts/jGrouseDoc/skins/common/img/closedLarge.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/skins/common/img/node.gif b/buildscripts/jGrouseDoc/skins/common/img/node.gif
deleted file mode 100644
index 82362651..00000000
--- a/buildscripts/jGrouseDoc/skins/common/img/node.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/skins/common/img/open.gif b/buildscripts/jGrouseDoc/skins/common/img/open.gif
deleted file mode 100644
index 01286477..00000000
--- a/buildscripts/jGrouseDoc/skins/common/img/open.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/skins/common/img/openLarge.gif b/buildscripts/jGrouseDoc/skins/common/img/openLarge.gif
deleted file mode 100644
index d4162470..00000000
--- a/buildscripts/jGrouseDoc/skins/common/img/openLarge.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/skins/common/js/jgdoc.js b/buildscripts/jGrouseDoc/skins/common/js/jgdoc.js
deleted file mode 100644
index 7b1281bf..00000000
--- a/buildscripts/jGrouseDoc/skins/common/js/jgdoc.js
+++ /dev/null
@@ -1,239 +0,0 @@
-/**
- * Searcher for JGrouseDoc
- * $Id: jgdoc.js 324 2008-01-06 16:44:39Z denis.riabtchik $
- */
-
-jgdoc = {}
-
-jgdoc.Searcher =
-{
- initialize : function()
- {
- this._searchBox = document.getElementById("jgsSearchString");
- this._searchResults = document.getElementById("jgsSearchResults");
- this._info = document.getElementById("jgsInfo");
- this._currentValue = "";
- this._currentItems = [];
- this._currentItem = -1;
- this._data = null;
- return this;
- },
-
- _getEvent : function(event)
- {
- return window.event? window.event : event;
- },
-
- _getTarget : function(event)
- {
- return event.target || event.srcElement
- },
-
- addClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- return;
- }
- }
- a.push(className);
- element.className = a.join(' ');
- },
-
- removeClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- a.splice(i, 1);
- break;
- }
- }
- element.className = a.join(' ');
-
- },
-
- dispatcher : function(event)
- {
- if (this != jgdoc.Searcher)
- {
- arguments.callee.apply(jgdoc.Searcher, arguments)
- return;
- }
- event = this._getEvent(event);
- var type = event.type;
- var handler = "on" + type;
- this[handler](event, this._getTarget(event));
- },
-
- onclick : function(event, target)
- {
- window.location.href = target._data.ref;
- },
-
- onmouseover : function(event, target)
- {
- this.selectItem(target.index);
- },
-
- onmouseout : function(event, target)
- {
- this.unselectItem(target.index);
- },
-
- selectItem : function(index)
- {
- if (index != this._currentItem)
- {
- this._currentItem = index;
- var item = this._currentItems[index];
- this.addClass(item, 'jgdSelectedItem');
- var text = item._data.summary.split('\n').join('<br/>');
- this._info.innerHTML = text;
- }
- },
-
- unselectItem : function(index)
- {
- this._currentItem = -1;
- var item = this._currentItems[index];
- this.removeClass(item, 'jgdSelectedItem');
- this._info.innerHTML = '';
- },
-
-
- onTimer : function()
- {
- if (this != jgdoc.Searcher)
- {
- arguments.callee.apply(jgdoc.Searcher, arguments)
- return;
- }
- var val = this._searchBox.value;
- if (val != this._currentValue)
- {
- this._currentValue = val;
- this.redraw();
- }
- },
-
- setData : function(data)
- {
- this._data = data;
- this.redraw();
- this._searchBox.focus();
- },
-
- addListener : function(element, eventName, handler)
- {
- if (element.addEventListener)
- {
- element.addEventListener(eventName, handler, false);
- }
- else
- {
- element.attachEvent('on' + eventName, handler);
- }
- },
-
- removeListener : function(element, eventName, handler)
- {
- if (element.removeEventListener)
- {
- element.removeEventListener(eventName, handler, false);
- }
- else
- {
- element.detachEvent('on' + eventName, handler);
- }
- },
-
- findMatches : function()
- {
- var result = [];
- if (this._currentValue)
- {
- var v = this._currentValue.toUpperCase();
- for (var i = 0; i < this._data.length; i++)
- {
- var item = this._data[i];
- if (item.localName.toUpperCase().indexOf(v) == 0)
- {
- result.push(item);
- }
- }
- }
- return result;
- },
-
-
- clearItem : function(item)
- {
- item._data = null;
- this.removeListener(item, 'click', this.dispatcher);
- this.removeListener(item, 'mouseover', this.dispatcher);
- this.removeListener(item, 'mouseout', this.dispatcher);
- },
-
- clear : function()
- {
- for (var i = 0; i < this._currentItems.length; i++)
- {
- this.clearItem(this._currentItems[i]);
- }
- this._currentItems = [];
- this._searchResults.innerHTML = "";
- this._currentItem = -1;
- },
-
-
- createItem : function(item, index)
- {
- var d = document.createElement("div");
- d.className = "searchItem";
- //d.title = item.summary;
- d.innerHTML = item.fullName;
- d.index = index;
- d._data = item;
- this.addListener(d, 'click', this.dispatcher);
- this.addListener(d, 'mouseover', this.dispatcher);
- this.addListener(d, 'mouseout', this.dispatcher);
- //todo - set listeners
- return d;
- },
-
- redraw : function()
- {
- this.clear();
- var res = this.findMatches();
- if (res.length > 0)
- {
- for (var i = 0; i < res.length; i++)
- {
- var d = this.createItem(res[i], i);
- this._currentItems.push(d);
- this._searchResults.appendChild(d);
- }
- }
- else
- {
- var s = (this._currentValue)? "Not found" : "Start typing the name of the item";
- this._searchResults.innerHTML = s;
- }
- },
-
- start : function()
- {
- var instance = jgdoc.Searcher.initialize();
- instance.setData([]);
- instance._timer = window.setInterval(instance.onTimer, 100);
- }
-}
-
diff --git a/buildscripts/jGrouseDoc/skins/common/js/jgindex.js b/buildscripts/jGrouseDoc/skins/common/js/jgindex.js
deleted file mode 100644
index d1944cff..00000000
--- a/buildscripts/jGrouseDoc/skins/common/js/jgindex.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Script that builds jGrouseDoc Index Page
- * Copyright (c) 2007 by Robert Kieffer and jGrouseDoc contributors
- * $Id: jgindex.js 303 2007-12-24 22:52:30Z denis.riabtchik $
- */
-
-var jgindex = {
- load: function() {
- // Sort data by localName
- jgindex.data.sort(function(a,b) {
- var c = (a.localName || a.fullName).toLowerCase();
- var d = (b.localName || b.fullName).toLowerCase();
- return c < d ? -1 : (c > d ? 1 : 0);
- });
-
- // Now render the index
- jgindex.renderEntries();
- },
-
- renderEntries: function() {
- var h = [];
-
- // Use a DL, since this is the most semantically correct structure
- h.push('<dl>');
-
- // Hash to track which letters have entries
- var letters = {};
-
- // Loop through each entry
- for (var i = 0; i < jgindex.data.length; i++) {
- var entry = jgindex.data[i];
-
- // Get name/url for the entry's namespace
- var srcName = entry.parent;
- var srcLink = entry.ref.replace(/#.*/, '');
-
- // Apply odd/even classname (makes styling even/odd rows easy)
- var cn = [(i % 2) ? 'odd' : 'even'];
- cn.push(/^(class|interface|struct|object)/.test(entry.summary) ? 'is_namespace' : 'is_not_namespace');
-
- // Get the entry's first letter
- var ln = entry.localName || entry.fullName || '_unnamed';
- var letter = ln.charAt(0).toUpperCase();
-
- // ... and see if it's the first one for that letter
- if (!letters[letter]) {
- letters[letter] = true;
- } else {
- letter = null;
- }
-
- // ... and if it is, render the section header
- if (letter) {
- h.push('<h3 class="letter_section"><a name="' + letter + '">' + letter + '</a></h3>');
- }
-
- // Render the entry's HTML
- cn = cn.join(' ');
- h.push(
- '<dt title="' + entry.summary + '" class="' + cn + '">' +
- '<a href="' + entry.ref + '">' + ln + '</a>' +
- '</dt>' +
- '<dd class="' + cn + '">' +
- '<a href="' + srcLink + '">' + srcName + '</a>' +
- '</dd>'
- );
- }
- h.push('</dl>');
-
- // Stick it all into the element
- document.getElementById('index').innerHTML = h.join('\n');
-
- // Render the letters table-of-contents at the top
- h = [];
- var toc = '$_ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- for (var i = 0; i < toc.length; i++) {
- var letter = toc.charAt(i);
- h.push(letters[letter] ?
- '<span class="has_entries"><a href="#' + letter + '">' + letter + '</a></span>' :
- '<span class="no_entries">' + letter + '</span>'
- );
- }
- document.getElementById('toc').innerHTML = h.join('\n');
- }
-}
-
-
-// Hack so we can get access to the index data
-var jgdoc = {
- Searcher: {
- setData: function(data) {
- jgindex.data = data;
- jgindex.load();
- }
- }
-}
diff --git a/buildscripts/jGrouseDoc/skins/common/js/navTree.js b/buildscripts/jGrouseDoc/skins/common/js/navTree.js
deleted file mode 100644
index 5a71ec51..00000000
--- a/buildscripts/jGrouseDoc/skins/common/js/navTree.js
+++ /dev/null
@@ -1,213 +0,0 @@
-jgdoc = {};
-jgdoc.TreeItem = function(nodeName, item)
-{
- this._nodeName = nodeName;
- this._data = item;
- this._children = [];
-
-}
-
-jgdoc.Searcher =
-{
- setData : function(data) {
- this._data = data;
- this.processItems();
- this.render();
- },
-
- sorter: function(o1, o2) {
- var l1 = o1.localName;
- var l2 = o2.localName;
- return l1 < l2? -1 : (l1 > l2 ? 1 : 0);
- },
-
- processItems : function() {
- var root;
-
- // Pass 1: Build index by fullName, and locate the root element
- this._byName = {};
- for (var i = 0; i < this._data.length; i++) {
- var d = this._data[i];
- if (d.fullName == "GLOBAL") {
- root = this._root = d;
- }
- this._byName[d.fullName] = d;
- }
-
- // Pass 2: Populate _children arrays
- for (var i = 0; i < this._data.length; i++) {
- var item = this._data[i];
- if (item.elementType == "logical_container" && item != this._root) {
- var parent = this._byName[item.parent];
- parent._children = parent._children || [];
- parent._children.push(item);
- }
- }
- },
-
- addClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- return;
- }
- }
- a.push(className);
- element.className = a.join(' ');
- },
-
- removeClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- var found = false;
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- a.splice(i, 1);
- found = true;
- break;
- }
- }
- element.className = a.join(' ');
- return found;
- },
-
- clicked : function(event)
- {
- event = window.event? window.event : event;
- var target = event.target || event.srcElement;
- var span = target.parentNode;
- var li = span.parentNode;
- var wasOpen = jgdoc.Searcher.removeClass(li, 'open');
- if (wasOpen)
- {
- jgdoc.Searcher.addClass(li, 'closed');
- }
- else
- {
- jgdoc.Searcher.removeClass(li, 'closed');
- jgdoc.Searcher.addClass(li, 'open');
- }
- span.title = "Click to " + (wasOpen? "expand" : "collapse");
-
- },
-
- addListener : function(element, eventName, handler)
- {
- if (element.addEventListener)
- {
- element.addEventListener(eventName, handler, false);
- }
- else
- {
- element.attachEvent('on' + eventName, handler);
- }
- },
-
- removeListener : function(element, eventName, handler)
- {
- if (element.removeEventListener)
- {
- element.removeEventListener(eventName, handler, false);
- }
- else
- {
- element.detachEvent('on' + eventName, handler);
- }
- },
-
-
- render : function()
- {
- var d = document.getElementById('content');
- d.innerHTML = '';
- var athis = this;
- function renderNode(item)
- {
- var node = document.createElement('li');
- node.className = item.type;
- node.innerHTML = "<span class='node'><span class='markerSpace'>&nbsp;</span></span><a href='" + item.ref + "' target='classFrame' title='" + item.summary + "'>" + item.localName + "</a>";
- var span = node.firstChild;
- var img = span.firstChild;
- athis.addListener(img, 'mousedown', athis.clicked);
- if (item._children)
- {
- item._children.sort(jgdoc.Searcher.sorter);
- node.className += (item == athis._root)? ' open' : ' closed';
- span.title = "Click to " + (item != athis._root? 'expand' : 'collapse');
- var subnode = document.createElement("ul");
- subnode.className = 'contents';
- for (var i = 0; i < item._children.length; i++)
- {
- var child = renderNode(item._children[i]);
- subnode.appendChild(child);
- }
- node.appendChild(subnode);
- }
- else
- {
- node.className += ' leaf';
- }
- item._node = node;
- return node;
- }
- var root = renderNode(this._root);
- d.appendChild(root);
- },
-
- cancelEvent : function(event)
- {
- if (event.preventDefault)
- {
- event.preventDefault();
- event.stopPropagation();
- }
- else
- {
- event.preventDefault();
- event.stopPropagation();
- }
- },
-
- switchAll : function(doOpen)
- {
- var ac = doOpen? 'open' : 'closed';
- var rc = doOpen? 'closed' : 'open';
-
- var athis = this;
-
- function doSwitchNode(anode)
- {
- if (anode._children)
- {
- if (doOpen || anode != athis._root)
- {
- athis.removeClass(anode._node, rc);
- athis.addClass(anode._node, ac);
- }
- for (var i = 0; i < anode._children.length; i++)
- {
- doSwitchNode(anode._children[i]);
- }
- }
- }
- doSwitchNode(this._root);
- },
-
- onOpenAll : function()
- {
- jgdoc.Searcher.switchAll(true);
- },
-
- onCloseAll : function()
- {
- jgdoc.Searcher.switchAll(false);
- }
-
-};
diff --git a/buildscripts/jGrouseDoc/skins/common/vm/common.vm b/buildscripts/jGrouseDoc/skins/common/vm/common.vm
deleted file mode 100644
index b46b62c6..00000000
--- a/buildscripts/jGrouseDoc/skins/common/vm/common.vm
+++ /dev/null
@@ -1,604 +0,0 @@
-#macro(writeLink $link)
-#set ($linkElement = $jg.get($link))
-$rootPath#if($linkElement.isContainer())
-#if($linkElement.isLogicalContainer())logical#{else}physical#end/${linkElement.path}.html#{else}
-logical/${linkElement.owner.path}.html#___$linkElement.localName#end
-#end
-
-
-#macro(writeContent $content)
-#foreach ($section in $content.sections)
-#if ($section.link && $section.resolvedPath && $section.resolvedPath.length() > 0)
-<a href="#writeLink($section.resolvedPath)">$section.text</a>#else$section.text#end
-#end
-#end
-
-#macro (writeType $type)
-<span class="type">#writeContent($type)</span>
-#end
-
-
-
-
-#macro(genCommonAttrs $comment)
- #if($comment.author.size() > 0)
- <div class="authors">
- <span class="descSection">Authors:</span>
- #foreach($author in $comment.author)
- <div class="paddedDetails">#writeContent($author.content)</div>
- #end
- </div>
- #end
- #if ($comment.see.size() > 0)
- <div class="seealso">
- <span class="descSection">See also:</span>
- #foreach($see in $comment.see)
- <div class="paddedDetails">#writeContent($see.content)</div>
- #end
- </div>
- #end
- #if ($comment.version.size() > 0)
- <div class="version">
- <span class="descSection">Version:</span>
- #foreach($version in $comment.version)
- <div class="paddedDetails">#writeContent($version.content)</div>
- #end
- </div>
- #end
- #if ($comment.timestamp.size() > 0)
- <div class="generated">
- <span class="descSection">Generated on:</span>
- <div class="paddedDetails">$jg.project.timestamp</div>
- </div>
- #end
- #if ($comment.since.size() > 0)
- <div class="since">
- <span class="descSection">Since:</span>
- #foreach($since in $comment.since)
- <div class="paddedDetails">#writeContent($since.content)</div>
- #end
- </div>
- #end
- #if ($comment.deprecated.size() > 0)
- <div class="deprecated">
- <span class="descSection">Deprecated:</span>
- #foreach($dep in $comment.deprecated)
- <div class="paddedDetails">#writeContent($dep.content)</div>
- #end
- </div>
- #end
-#end
-
-
-#macro (writeFunctionParams $paramSet)
-#foreach($param in $paramSet.params)#if($velocityCount > 1), #end#if($param.hasModifier('optional'))[#end#writeType($param.typeLink) $param.name#if($param.hasModifier('optional'))]#end#end
-#end
-
-
-#macro(writeSrcURL $obj)
- #if($obj.comment.srcUrl)
- <a href="$obj.comment.srcUrl" class="srcUrlLink">view source</a>
- #end
-#end
-
-
-#macro(writeParamOption $paramOption)
- <li>
- <code>
- #if($paramOption.hasModifier("optional"))[#end
- <span class="modifiers">$paramOption.strModifiers</span>
- #writeType($paramOption.typeLink)
- $paramOption.name
- #if($paramOption.hasModifier("optional"))]#end
- </code>
- #writeContent($paramOption.content)
- </li>
-#end
-
-
-#macro(writeParam $param)
- <div class="param paddedDetails">
- <code>
- #if($param.hasModifier("optional"))[#end${param.name}#if($param.hasModifier("optional"))]#end
- </code>
- #writeContent($param.content)
- #if($param.children.size() > 0)
- <ul class="paramoption">
- #foreach($paramOption in $param.children)
- #writeParamOption($paramOption)
- #end
- </ul>
- #end
- </div>
-#end
-
-
-#macro(writePhysOwner $element)
- #if($element.hasSamePhysOwner)
- <span class="definedIn">Defined in </span>
- <a href="#writeLink($element.physOwner)">$element.physOwner.comment.name</a>
- #end
-#end
-
-
-
-
-#macro(writeFunctionDetails $func $memberType)
- #set ($funcModifiers = $func.comment.modifiers)
- #if ($func.comment.inheritdesc.size() == 0)
- #set ($funcItself = $func)
- #else
- #set ($funcItself = $jg.get($func.comment.inheritdesc.get(0).name))
- #end
- #writeSrcURL($func)
- <h3>
- <a name="___$func.localName">
- <span class="objType">$memberType</span>
- <span class="objName">$func.localName</span>
- </a>
- </h3>
- #if ($funcItself.comment.paramSets.size() > 0)
- #foreach($paramSet in $funcItself.comment.paramSets)
- <div>
- <code>
- <span class="modifiers">$funcModifiers</span>
- #writeType($funcItself.comment.typeLink)
- ${funcItself.localName}(#writeFunctionParams($paramSet))
- </code>
- </div>
- #end
- #else
- <div>
- <code>
- <span class="modifiers">$funcModifiers</span>
- #writeType($funcItself.comment.typeLink)
- ${funcItself.localName}()
- </code>
- </div>
- #end
- <div class="comment">
- #writeContent($funcItself.comment.content)
- </div>
- #if ($funcItself.comment.paramSets.size() > 0)
- <div class="parameters">
- <span class="descSection">Parameters:</span><br/>
- #foreach($paramSet in $funcItself.comment.paramSets)
- <div>
- <div class="paramset">#writeContent($paramSet.content)</div>
- <div>
- #foreach($param in $paramSet.params)
- #writeParam($param)
- #end
- </div>
- </div>
- #end
- </div>
- #end
- #if($funcItself.comment.returnsTag )
- <div class="returns">
- <span class="descSection">Returns:</span><br/>
- <div class="paddedDetails">
- #set ($return = $funcItself.comment.returnsTag)
- #writeContent($return.content)
- #if($return.children.size() > 0)
- <ul class="paramoption">
- #foreach($paramOption in $return.children)
- #writeParamOption($paramOption)
- #end
- </ul>
- #end
- </div>
- </div>
- #end
- #if($funcItself.comment.throws.size() > 0)
- <div class="throws">
- <span class="descSection">Throws:</span><br/>
- #foreach($throws in $funcItself.comment.throws)
- <div class="paddedDetails">#writeContent($throws.content)</div>
- #end
- </div>
- #end
- #genCommonAttrs($funcItself.comment)
- #writePhysOwner($func)
- <hr/>
-#end
-
-
-#macro(writeVarDetails $var)
- #set ($varModifiers = $var.comment.modifiers)
- #if ($var.comment.inheritdesc.size() == 0)
- #set ($varItself = $var)
- #else
- #set ($varItself = $jg.get($var.comment.inheritdesc.get(0).name))
- #end
-
- #writeSrcURL($var)
- <h3>
- <a name="___$var.localName">
- <span class="objType">$var.commentType</span> <span class="modifiers">$varModifiers</span>
- #writeType($varItself.comment.typeLink)
- <span class="objName">$var.localName</span>
- </a>
- </h3>
- <div class="comment">
- #writeContent($varItself.comment.content)
- </div>
- #genCommonAttrs($varItself.comment)
- #writePhysOwner($var)
- <hr />
-#end
-
-
-
-
-#macro(writeLegacies $obj $memberType $memberName )
- #foreach($legacy in $obj.legacies)
- #if ($legacy.get($memberType).size() > 0)
- <div class="summaryTable">
- <div class="summaryTableHeader">
- $memberName inherited from <a href="#writeLink($legacy.ancestor.fullName)">$legacy.ancestor.fullName</a>
- </div>
- <div class="inheritanceSummary">
- #foreach($item in $legacy.get($memberType))#if($velocityCount > 1), #end<a href="#writeLink($item.fullName)">$item.localName</a>#end
- </div>
- </div>
- <br/>
- #end
- #end
-#end
-
-
-
-#macro(writeVarSummary $variable)
- #set ($varModifiers = $variable.comment.modifiers)
- #if ($variable.comment.inheritdesc.size() == 0)
- #set ($varItself = $variable)
- #else
- #set ($varItself = $jg.get($variable.comment.inheritdesc.get(0).name))
- #end
- <div class="summaryItemDef">
- <span class="modifiers">$varModifiers</span>
- #writeType($variable.comment.typeLink)
- <a href="#writeLink($variable.fullName)"><span class="elementName">$variable.localName</span></a>
- </div>
- <div class="summaryItemDesc">
- #writeContent($varItself.comment.summary)
- </div>
-#end
-
-
-#macro(writeFuncSummary $func)
- #set ($funcModifiers = $func.comment.modifiers)
- #if ($func.comment.inheritdesc.size() == 0)
- #set ($funcItself = $func)
- #else
- #set ($funcItself = $jg.get($func.comment.inheritdesc.get(0).name))
- #end
- #if ($funcItself.comment.paramSets.size() != 0)
- #foreach($paramSet in $funcItself.comment.paramSets)
- <div class="summaryItemDef">
- <span class="modifiers">$funcModifiers</span>
- #writeType($func.comment.typeLink)
- <a href="#writeLink($func.fullName)"><span class="elementName">$func.localName</span></a>
- (#writeFunctionParams($paramSet))
- </div>
- #end
- #else
- <div class="summaryItemDef">
- <span class="modifiers">$funcModifiers</span>
- #writeType($func.comment.typeLink)
- <a href="#writeLink($func.fullName)"><span class="elementName">$func.localName</span></a>()
- </div>
- #end
- <div class="summaryItemDesc">
- #writeContent($funcItself.comment.summary)
- </div>
-#end
-
-
-#macro(writeLogicalSummary $class)
- <div class="summaryItemDef">
- <span class="elementName">
- <a href="${rootPath}logical/${class.path}.html">$class.comment.name</a>
- </span>
- </div>
- <div class="summaryItemDesc">
- #writeContent($class.comment.summary)
- </div>
-#end
-
-
-#macro(writeSummary $coll $elemType $elemName)
- #if($coll.size() != 0)
- <div class="summaryTable $elemType">
- <div class="summaryTableHeader">
- <span class="objType">$elemName</span> Summary
- </div>
- #foreach($item in $coll)
- <div class="summaryItem">
- #if ($elemType == "namespace" || $elemType == "class" || $elemType == "interface" || $elemType == "struct"|| $elemType == "object")
- #writeLogicalSummary($item)
- #elseif ($elemType == "function" || $elemType == "constructor" || $elemType == "ifunction" || $elemType == "event")
- #writeFuncSummary($item)
- #elseif ($elemType == "variable" || $elemType == "property")
- #writeVarSummary($item)
- #end
- </div>
- #end
- </div>
- <p/>
- #end
-#end
-
-
-
-#macro(writeDetails $object $elemType $memberName)
- #if ($object.get($elemType).size() > 0)
- <div class="details $elemType">
- <h2 class="sectionHeader">$memberName Details</h2>
- #foreach($item in $object.get($elemType))
- #if ($elemType == "function" || $elemType == "constructor" || $elemType == "ifunction" || $elemType == "event")
- #writeFunctionDetails($item $elemType)
- #elseif ($elemType == "variable" || $elemType == "property")
- #writeVarDetails($item)
- #end
- #end
- </div>
- #end
-#end
-
-
-
-
-
-#macro(navigationPane $elementType)
-<div class="navigation" id="navigation">
- <ul class="navContent#if($elementType != "logical") closed#end">
- <li>
- <div class="navTree">
- <h2 onclick="jgdoc.NavPanel.clicked(event)">
- <a href="javascript:jgdoc.NavPanel.dummy()">Navigation</a>
- </h2>
- <ul class="navContent2">
- <li>
- <div>
- <a class="openAll" href="javascript:jgdoc.NavTree.onOpenAll()">Open All</a>
- <a class="closeAll" href="javascript:jgdoc.NavTree.onCloseAll()">Close All</a>
- </div>
- <div>
- <ul id = "content" class="contents">
- Loading...
- </ul>
- </div>
- </li>
- </ul>
- </div>
- </li>
- </ul>
- <ul class="navContent#if($elementType != "file") closed#end">
- <li>
- <div class="fileTree">
- <h2 onclick="jgdoc.NavPanel.clicked(event)">
- <a href="javascript:jgdoc.NavPanel.dummy()">Files</a>
- </h2>
- <ul class="navContent2">
- <li>
- #foreach($file in $jg.files)
- #if(!$file.isModuleFile())
- <div>
- <a href="physical/${file.path}.html">$file.comment.name</a>
- </div>
- #end
- #end
- </li>
- </ul>
- </div>
- </li>
- </ul>
- <ul class="navContent#if($elementType != "module") closed#end">
- <li>
- <div class="moduleTree">
- <h2 onclick="jgdoc.NavPanel.clicked(event)">
- <a href="javascript:jgdoc.NavPanel.dummy()">Modules</a>
- </h2>
- <ul class="navContent2">
- <li>
- #foreach($module in $jg.modules)
- <div>
- <a href="physical/${module.path}.html">$module.comment.name</a>
- </div>
- #end
- </li>
- </ul>
- </div>
- </li>
- </ul>
-</div>
-
-#end
-
-#macro(writeCSS $rootPath $aux_path)
- <link rel="stylesheet" type="text/css" href="${rootPath}jgdoc.css"/>
- <link rel="stylesheet" type="text/css" href="${rootPath}theme.css"/>
- #if($aux_path && $aux_path != 'not_specified')
- <link rel="stylesheet" type="text/css" href="${rootPath}$aux_css"/>
- #end
-#end
-
-#macro(navbarPhys $isStartup)
- <div class="navbar">
- <div class="navbaritem">
- #if ($isStartup == "yes")
- <a href="$rootPath/overview-summary-log.html">Logical View</a>
- #else
- <a href="$rootPath/overview-summary.html">Start</a>
- #end
- </div>
- <div class="navbaritem">
- <a href="$rootPath/jgindex.html">Index</a>
- </xsl:element>
- </div>
- <div class="navbaritem">
- <a href="$rootPath/jgsearch.html">Search</a>
- </div>
- </div>
-#end
-
-#macro(navbarLog $isStartup)
- <div class="navbar">
- <div class="navbaritem">
- #if ($isStartup == "yes")
- <a href="$rootPath/overview-summary.html">Physical View</a>
- #else
- <a href="$rootPath/overview-summary-log.html">Start</a>
- #end
- </div>
- <div class="navbaritem">
- <a href="$rootPath/jgindex.html">Index</a>
- </xsl:element>
- </div>
- <div class="navbaritem">
- <a href="$rootPath/jgsearch.html">Search</a>
- </div>
- </div>
-#end
-
-#macro(writeClassAttributes $obj)
-#if($obj.comment.extends.size() > 0)
- <div class="extends">
- <span class="descSection">Extends </span>
- #foreach ($tagContent in $obj.comment.extends)
- #if($velocityCount > 1), #end #writeContent($tagContent.content)
- #end
- </div>
-#end
-#if($obj.comment.implements.size() > 0)
- <div class="implements">
- <span class="descSection">Implements </span>
- #foreach ($tagContent in $obj.comment.implements)
- #if($velocityCount > 1), #end #writeContent($tagContent.content)
- #end
- </div>
-#end
-
-#if($obj.subClasses.size() > 0)
- <div class="subclasses">
- <div class="descSection">
- #if($obj.commentType == "class")Direct Known Subclasses:#{else}All Known Subinterfaces:#end
- </div>
- <div class="paddedDetails">
- #foreach($subclass in $obj.subClasses)#if($velocityCount > 1), #end<a href="#writeLink($subclass.fullName)">$subclass.fullName</a>#end
- </div>
- </div>
-#end
-
-#if($obj.implementors.size() > 0)
- <div>
- <div>
- All Known Implementing Classes:
- </div>
- <div>
- #foreach($subclass in $obj.implementors)#if($velocityCount > 1), #end<a href="#writeLink($subclass.fullName)">$subclass.fullName</a>#end
- </div>
- </div>
-#end
-#end
-
-#macro(writeModuleAttributes $obj)
-#if ($obj.comment.requires.size() > 0)
- <div class="requires">
- <span class="descSection">Requires modules: </span>
- #foreach($tagContent in $obj.comment.requires)
- #if($velocityCount > 1), #end #writeContent($tagContent.content)
- #end
- </div>
-#end
-#end
-
-
-#macro(writeLogicalContainerSummary $obj)
- #if ($obj.elementType == "logical_container" && $obj.commentType != "namespace")
- #set($nested = "Nested")
- #else
- #set ($nested = "")
- #end
-
- #writeSummary($obj.get("class") "class" "$nested Class")
- #writeSummary($obj.get("interface") "interface" "$nested Interface")
- #writeSummary($obj.object "object" "$nested Object")
- #writeSummary($obj.structure "structure" "$nested Structure")
-
- #writeSummary($obj.variable "variable" "Variable")
- #writeLegacies($obj "variable" "Variables")
-
-
- #writeSummary($obj.property "property" "Property")
- #writeLegacies($obj "property" "Properties" )
-
- #writeSummary($obj.constructor "constructor" "Constructor")
-
- #writeSummary($obj.function "function" "Function")
- #writeLegacies($obj "function" "Functions" )
-
- #writeSummary($obj.event "event" "Event")
- #writeSummary($obj.ifunction "ifunction" "Function Interface")
-#end
-
-#macro(writeLogicalContainerDetails $obj)
- #writeDetails($obj "variable" "Variable")
- #writeDetails($obj "property" "Property")
- #writeDetails($obj "constructor" "Constructor")
- #writeDetails($obj "function" "Function")
- #writeDetails($obj "event" "Event")
- #writeDetails($obj "ifunction" "Function Interface")
-#end
-
-#macro(writeContainer $obj)
- #if($obj.comment.srcUrl)
- <a href="$obj.comment.srcUrl" class="srcUrlLink">view source</a>
- #end<H2>
- <span class="objType">$obj.capCommentType</span> $obj.comment.name
- </H2>
- #writeClassAttributes($obj)
- <hr/>
- <!-- description -->
- <div>
- <code>
- <span class="modifiers">$obj.comment.modifiers</span>
- <span class="objType">$obj.commentType</span>
- <b>$obj.comment.name</b>
- </code>
- </div>
- #writeModuleAttributes($obj)
- #if($obj.comment.content)
- <div class="comment">#writeContent($obj.comment.content)</div>
- #end
- #genCommonAttrs($obj.comment)
- #if ($obj.physOwner)
- <span class="definedIn">Defined in </span>
- <a href="#writeLink($obj.physOwner.fullName)">$obj.physOwner.comment.name</a>
- #end
- <hr/>
- <p />
-
- #writeLogicalContainerSummary($obj)
- <!-- ============== Details coming here =================== -->
- #writeLogicalContainerDetails($obj)
-#end
-
-#macro(writeOverview $object)
- <div class="overviewItem">
- <a href="#writeLink($object.fullName)" target="classFrame">
- $object.fullName
- </a>
- </div>
-#end
-
-#macro(writeRefOverview $coll $elementType $elementName)
- #if ($coll.size() > 0)
- <div class="overviewTitle">$elementName</div>
- #foreach($item in $coll)
- #writeOverview($item)
- #end
- #end
-#end \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/skins/common/xslt/common.xslt b/buildscripts/jGrouseDoc/skins/common/xslt/common.xslt
deleted file mode 100644
index b8477c76..00000000
--- a/buildscripts/jGrouseDoc/skins/common/xslt/common.xslt
+++ /dev/null
@@ -1,704 +0,0 @@
-<!--
- jGrouseDoc template file. Shared templates.
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: common.xslt 515 2008-03-31 19:32:57Z denis.riabtchik $
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:template name="parentPath">
- <xsl:param name="parentName"/>
- <xsl:value-of select="/jgdoc/items/*[@id=$parentName]/@path" />
- </xsl:template>
-
- <xsl:template match="type">
- <span class="type"><xsl:apply-templates select="*"/></span>
- <xsl:text> </xsl:text>
- </xsl:template>
-
- <xsl:template match="*" mode="writeFuncSummary">
- <xsl:choose>
- <xsl:when test="count(comment/inheritdesc) != 0">
- <xsl:variable name="fn"><xsl:value-of select="comment/inheritdesc/tagContent/@name"/></xsl:variable>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$fn]" mode="writeFuncSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="comment/modifiers/@name"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="writeFuncSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="comment/modifiers/@name"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="*" mode="writeFuncSummary1">
- <xsl:param name="origName"/>
- <xsl:param name="modifiers"/>
- <xsl:choose>
- <xsl:when test="count(comment/paramSet) != 0">
- <xsl:for-each select="comment/paramSet">
- <div class="summaryItemDef">
- <span class="modifiers"><xsl:value-of select="$modifiers"/></span>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="../../comment/type" />
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="$origName"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <span class="elementName"><xsl:value-of select="../../@localName"/></span>
- </xsl:element>
- <xsl:call-template name="writeFunctionParams">
- <xsl:with-param name="funcName"><xsl:value-of select="../../@id"/></xsl:with-param>
- <xsl:with-param name="paramSetCount"><xsl:value-of select="position()"/></xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <div class="summaryItemDef">
- <span class="modifiers"><xsl:value-of select="$modifiers"/></span>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="comment/type" />
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="$origName"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <span class="elementName"><xsl:value-of select="@localName"/></span>
- </xsl:element>()
- </div>
- </xsl:otherwise>
- </xsl:choose>
- <div class="summaryItemDesc">
- <xsl:apply-templates select="comment/summary/content"/>
- </div>
- </xsl:template>
-
- <xsl:template match="*" mode="writeVarSummary">
- <xsl:choose>
- <xsl:when test="count(comment/inheritdesc) != 0">
- <xsl:variable name="fn"><xsl:value-of select="comment/inheritdesc/tagContent/@name"/></xsl:variable>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$fn]" mode="writeVarSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="comment/modifiers/@name"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="writeVarSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="comment/modifiers/@name"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="*" mode="writeVarSummary1">
- <xsl:param name="origName"/>
- <xsl:param name="modifiers"/>
- <div class="summaryItemDef">
- <span class="modifiers"><xsl:value-of select="$modifiers"/></span>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="comment/type" />
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="$origName"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <span class="elementName"><xsl:value-of select="@localName" /></span>
- </xsl:element>
- </div>
- <div class="summaryItemDesc">
- <xsl:apply-templates select="comment/summary/content"/>
- </div>
- </xsl:template>
-
- <xsl:template match="*" mode="writeLogicalSummary">
- <div class="summaryItemDef">
- <span class="elementName"><xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>logical/<xsl:value-of select="@path"/>.html</xsl:attribute>
- <xsl:value-of select="comment/name"/>
- </xsl:element></span>
- </div>
- <div class="summaryItemDesc">
- <xsl:apply-templates select="comment/summary/content"/>
- </div>
- </xsl:template>
-
- <xsl:template name="writeFunctionParams">
- <xsl:param name="funcName"/>
- <xsl:param name="paramSetCount"/>(<xsl:for-each select="/jgdoc/items/*[@id=$funcName]/comment/paramSet[$paramSetCount]/param"><xsl:if test="position() != 1">, </xsl:if><xsl:if test="@optional = 'true'">[</xsl:if><xsl:apply-templates select="type"/><xsl:value-of select="normalize-space(@name)"/><xsl:if test="@optional = 'true'">]</xsl:if></xsl:for-each>)</xsl:template>
-
- <xsl:template name="writeLink">
- <xsl:param name="refName"/>
- <xsl:for-each select="/jgdoc/items/*[@id=$refName]">
- <xsl:value-of select="$rootPath"/><xsl:choose>
- <xsl:when test="@elementType='phys_container'">physical/</xsl:when>
- <xsl:otherwise>logical/</xsl:otherwise>
- </xsl:choose>
- <xsl:choose >
- <xsl:when test="(@elementType='phys_container') or (@elementType='logical_container')"
- ><xsl:value-of select="@path"/>.html</xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="parentPath">
- <xsl:with-param name="parentName" select="@parentName"/>
- </xsl:call-template>.html#___<xsl:value-of select="@localName" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="contentSection">
- <xsl:value-of select="." disable-output-escaping="yes"/>
- </xsl:template>
-
- <xsl:template match="link">
- <xsl:choose>
- <xsl:when test="string-length(@resolvedPath) > 0">
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="rootPath"><xsl:value-of select="$rootPath"/></xsl:with-param>
- <xsl:with-param name="refName"><xsl:value-of select="@resolvedPath"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute><xsl:value-of select="." disable-output-escaping="yes"/></xsl:element>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="content">
- <xsl:apply-templates />
- </xsl:template>
-
-
- <xsl:template match="comment" mode="genCommonAttrs">
- <xsl:if test="count(author/tagContent) != 0">
- <div class="authors">
- <span class="descSection">Authors:</span>
- <xsl:for-each select="author/tagContent">
- <div class="paddedDetails"><xsl:apply-templates select="."/></div>
- </xsl:for-each>
- </div>
- </xsl:if>
- <xsl:if test="count(see/tagContent) != 0">
- <div class="seealso">
- <span class="descSection">See also:</span>
- <xsl:for-each select="see/tagContent">
- <div class="paddedDetails"><xsl:apply-templates select="content"/></div>
- </xsl:for-each>
- </div>
- </xsl:if>
- <xsl:if test="count(version) != 0">
- <div class="version">
- <span class="descSection version">Version:</span>
- <div class="paddedDetails"><xsl:value-of select="$version"/></div>
- </div>
- </xsl:if>
- <xsl:if test="count(timestamp) != 0">
- <div class="generated">
- <span class="descSection">Generated on:</span>
- <div class="paddedDetails"><xsl:value-of select="/jgdoc/project/@timestamp"/> <xsl:text> </xsl:text> <xsl:apply-templates select="version/tagContent"/></div>
- </div>
- </xsl:if>
- <xsl:if test="count(since/tagContent) != 0">
- <div class="since">
- <span class="descSection">Since:</span>
- <div class="paddedDetails"><xsl:apply-templates select="since/tagContent"/></div>
- </div>
- </xsl:if>
- <xsl:if test="count(deprecated/tagContent) != 0">
- <div class="deprecated">
- <span class="descSection">Deprecated</span>
- <div class="paddedDetails"><xsl:apply-templates select="deprecated/tagContent"/></div>
- </div>
- </xsl:if>
- </xsl:template>
-
-
-
- <!-- new stuff -->
-
- <xsl:template match="function|constructor|ifunction|event" mode="writeSummary">
- <xsl:apply-templates select="." mode="writeFuncSummary"/>
- </xsl:template>
-
- <xsl:template match="variable|property" mode="writeSummary">
- <xsl:apply-templates select="." mode="writeVarSummary"/>
- </xsl:template>
-
- <xsl:template match="namespace|class|interface|struct|object" mode="writeSummary">
- <xsl:apply-templates select="." mode="writeLogicalSummary"/>
- </xsl:template>
-
- <xsl:template match="module" mode="writeSummary">
- <div class="summaryItemDef">
- <span class="elementName"><xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>physical/<xsl:value-of select="@path"/>.html</xsl:attribute>
- <xsl:value-of select="comment/name"/>
- </xsl:element></span>
- </div>
- <div class="summaryItemDesc">
- <xsl:apply-templates select="comment/summary/content"/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
- </div>
- </xsl:template>
-
-
- <xsl:template name="writeRefSummary">
- <xsl:param name="fullName"/>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$fullName]" mode="writeSummary">
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="children" mode="writeSummary">
- <xsl:param name="elementType"/>
- <xsl:param name="elementName"/>
- <xsl:if test="count(ref[@type=$elementType]) != 0">
- <xsl:element name="div">
- <xsl:attribute name="class">
- <xsl:text>summaryTable </xsl:text>
- <xsl:value-of select="$elementType"/>
- </xsl:attribute>
- <div class="summaryTableHeader" >
- <span class="objType"><xsl:value-of select="$elementName"/></span> Summary
- </div>
- <xsl:for-each select="ref[@type=$elementType]">
- <div class="summaryItem">
- <xsl:call-template name="writeRefSummary">
- <xsl:with-param name="fullName"><xsl:value-of select="@refId"/></xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:for-each>
- </xsl:element>
- <p/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="writeOverview">
- <xsl:param name="objName"/>
- <div class="overviewItem">
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="$objName"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:attribute name="target">classFrame</xsl:attribute>
- <xsl:choose>
- <xsl:when test="/jgdoc/items/*[@id=$objName]/@parentName='_GLOBAL_NAMESPACE'">
- <xsl:value-of select="/jgdoc/items/*[@id=$objName]/comment/name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/jgdoc/items/*[@id=$objName]/@id"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </div>
- </xsl:template>
-
- <xsl:template match="children" mode="writeRefOverview">
- <xsl:param name="elementType"/>
- <xsl:param name="elementName"/>
- <xsl:if test="count(ref[@type=$elementType]) != 0">
- <div class="overviewTitle"><xsl:value-of select="$elementName"/></div>
- <xsl:for-each select="ref[@type=$elementType]">
- <xsl:call-template name="writeOverview">
- <xsl:with-param name="objName"><xsl:value-of select="@refId"/></xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="navbarPhys">
- <xsl:param name="isStartup">no</xsl:param>
- <div class="navbar">
- <xsl:if test="$isStartup='yes'">
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>overview-summary-log.html</xsl:attribute>
- Logical View
- </xsl:element>
- </div>
- </xsl:if>
- <xsl:if test="$isStartup != 'yes'">
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>overview-summary.html</xsl:attribute>
- Start
- </xsl:element>
- </div>
- </xsl:if>
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>jgindex.html</xsl:attribute>
- Index
- </xsl:element>
- </div>
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>jgsearch.html</xsl:attribute>
- Search
- </xsl:element>
- </div>
- </div>
- </xsl:template>
-
- <xsl:template name="navbarLog">
- <xsl:param name="isStartup">no</xsl:param>
- <div class="navbar">
- <xsl:if test="$isStartup='yes'">
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>overview-summary.html</xsl:attribute>
- Physical View
- </xsl:element>
- </div>
- </xsl:if>
- <xsl:if test="$isStartup != 'yes'">
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>overview-summary-log.html</xsl:attribute>
- Start
- </xsl:element>
- </div>
- </xsl:if>
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>jgindex.html</xsl:attribute>
- Index
- </xsl:element>
- </div>
- <div class="navbaritem">
- <xsl:element name="a">
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>jgsearch.html</xsl:attribute>
- Search
- </xsl:element>
- </div>
- </div>
- </xsl:template>
-
- <xsl:template match="legacies" mode="inheritance">
- <xsl:param name="memberName"/>
- <xsl:param name="memberType"/>
- <xsl:for-each select="legacy[count(legacyItem[@type=$memberType]) != 0]">
- <div class="summaryTable">
- <div class="summaryTableHeader">
- <xsl:value-of select="$memberName"/> inherited from
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="@parent"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:value-of select="@parent" />
- </xsl:element>
- </div>
- <div class="inheritanceSummary">
- <xsl:for-each select="legacyItem[@type=$memberType]">
- <xsl:if test="position() != 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="@idRef"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:value-of select="@ref" />
- </xsl:element>
- <xsl:text> </xsl:text>
- </xsl:for-each>
- </div>
- </div>
- <br/>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="ref" mode="writeDetails">
- <xsl:param name="memberName"/>
- <xsl:param name="memberType"/>
- <xsl:param name="original"/>
- <xsl:param name="modifiers"/>
- <xsl:variable name="curName"><xsl:value-of select="@refId"/></xsl:variable>
-
- <xsl:apply-templates select="/jgdoc/items/*[@id=$curName]" mode="writeDetails">
- <xsl:with-param name="memberName"><xsl:value-of select="$memberName"/></xsl:with-param>
- <xsl:with-param name="memberType"><xsl:value-of select="$memberType"/></xsl:with-param>
- <xsl:with-param name="original"><xsl:value-of select="$original"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="$modifiers"/></xsl:with-param>
- </xsl:apply-templates>
-
- </xsl:template>
-
- <xsl:template match="function|constructor|ifunction|event" mode="writeDetails">
- <xsl:param name="memberName"/>
- <xsl:param name="memberType"/>
- <xsl:param name="original"/>
- <xsl:param name="modifiers"/>
- <xsl:variable name="effMods">
- <xsl:choose>
- <xsl:when test="$original = 'true'"><xsl:value-of select="comment/modifiers/@name"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="$modifiers"/></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="count(comment/inheritdesc) != 0">
- <xsl:variable name="fn"><xsl:value-of select="comment/inheritdesc/tagContent/@name"/></xsl:variable>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$fn]" mode="writeDetails">
- <xsl:with-param name="memberName"><xsl:value-of select="$memberName"/></xsl:with-param>
- <xsl:with-param name="memberType"><xsl:value-of select="$memberType"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="$effMods"/></xsl:with-param>
- <xsl:with-param name="original">false</xsl:with-param>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="writeDetails1">
- <xsl:with-param name="memberName"><xsl:value-of select="$memberName"/></xsl:with-param>
- <xsl:with-param name="memberType"><xsl:value-of select="$memberType"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="$effMods"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="variable|property" mode="writeDetails">
- <xsl:param name="original"/>
- <xsl:param name="modifiers"/>
- <xsl:variable name="effMods">
- <xsl:choose>
- <xsl:when test="$original = 'true'"><xsl:value-of select="comment/modifiers/@name"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="$modifiers"/></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="count(comment/inheritdesc) != 0">
- <xsl:variable name="fn"><xsl:value-of select="comment/inheritdesc/tagContent/@name"/></xsl:variable>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$fn]" mode="writeVarDetails1"/>
- <xsl:with-param name="modifiers"><xsl:value-of select="$effMods"/></xsl:with-param>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="writeVarDetails1">
- <xsl:with-param name="modifiers"><xsl:value-of select="$effMods"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="variable|property" mode="writeVarDetails1">
- <xsl:param name="modifiers"/>
- <xsl:apply-templates select="comment/srcUrl" mode="writeDetails1"/>
- <h3>
- <xsl:element name="a">
- <xsl:attribute name="name">___<xsl:value-of select='@localName'/>
- </xsl:attribute>
- <span class="objType"><xsl:value-of select="name()"/></span> <xsl:text> </xsl:text> <span class="modifiers"><xsl:value-of select="$modifiers"/></span> <xsl:text> </xsl:text>
- <xsl:apply-templates select="comment/type" /><span class="objName"><xsl:value-of select='@localName' /></span>
- </xsl:element>
- </h3>
- <div class="comment">
- <xsl:apply-templates select='comment/commentContent/content'/>
- </div>
- <xsl:apply-templates select="comment" mode="genCommonAttrs" />
- <xsl:apply-templates select="." mode="physOwner">
- <xsl:with-param name="testNode"><xsl:value-of select='@id'/></xsl:with-param>
- </xsl:apply-templates>
- <hr />
- </xsl:template>
-
- <xsl:template match="param" mode="writeDetails1">
- <div class="param paddedDetails">
- <code><xsl:if test="@optional = 'true'">[</xsl:if><xsl:value-of select="@name"/><xsl:if test="@optional = 'true'">]</xsl:if></code> <xsl:text> </xsl:text>
- <xsl:apply-templates select="content"/>
- <xsl:if test="count(paramOptions/paramoption) != 0">
- <ul class="paramoption">
- <xsl:apply-templates select="paramOptions/paramoption" mode="writeDetails1"/>
- </ul>
- </xsl:if>
- </div>
- </xsl:template>
-
- <xsl:template match="modifiers" mode="writeDetails1">
- <span class="modifiers"><xsl:value-of select="@name"/></span>
- <xsl:text> </xsl:text>
- </xsl:template>
-
- <xsl:template match="paramoption" mode="writeDetails1">
- <li >
- <code>
- <xsl:if test="@optional = 'true'">[</xsl:if>
- <xsl:apply-templates select="modifiers" mode="writeDetails1"/>
- <xsl:apply-templates select="type" />
- <xsl:value-of select="@name"/>
- <xsl:if test="@optional = 'true'">]</xsl:if>
- </code> <xsl:text> </xsl:text>
- <xsl:apply-templates select="content"/>
- </li>
- </xsl:template>
-
- <xsl:template match="comment/srcUrl" mode="writeDetails1">
- <xsl:element name="a">
- <xsl:attribute name="class">srcUrlLink</xsl:attribute>
- <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
- view source
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="function|constructor|ifunction|event" mode="writeDetails1">
- <xsl:param name="memberName"/>
- <xsl:param name="memberType"/>
- <xsl:param name="modifiers"/>
- <xsl:apply-templates select="comment/srcUrl" mode="writeDetails1"/>
- <h3>
- <xsl:element name="a">
- <xsl:attribute name="name">___<xsl:value-of select='@localName'/>
- </xsl:attribute>
- <span class="objType"><xsl:value-of select="$memberType"/></span><xsl:text> </xsl:text>
- <span class="objName"><xsl:value-of select='@localName'/></span>
- </xsl:element>
- </h3>
- <xsl:choose>
- <xsl:when test="count(comment/paramSet) != 0">
- <xsl:for-each select="comment/paramSet">
- <div>
- <code>
- <span class="modifiers"><span class="modifiers"><xsl:value-of select="$modifiers"/></span></span>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="../../comment/type" />
- <xsl:value-of select="../../@localName"/>
- <xsl:call-template name="writeFunctionParams">
- <xsl:with-param name="funcName"><xsl:value-of select="../../@id"/></xsl:with-param>
- <xsl:with-param name="paramSetCount"><xsl:value-of select="position()"/></xsl:with-param>
- </xsl:call-template>
- </code>
- </div>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <div>
- <code>
- <span class="modifiers"><xsl:value-of select="$modifiers"/></span>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="comment/type" />
- <xsl:value-of select="@localName"/>()
- </code>
- </div>
- </xsl:otherwise>
- </xsl:choose>
- <div class="comment">
- <xsl:apply-templates select="comment/commentContent/content" />
- </div>
- <xsl:if test="count(comment/paramSet) != 0">
- <div class="parameters">
- <span class="descSection">Parameters:</span><br/>
- <xsl:for-each select='comment/paramSet'>
- <div class="paramset">
- <xsl:apply-templates select="paramSetDesc/content"/>
- </div>
- <div>
- <xsl:apply-templates select="param" mode="writeDetails1"/>
- </div>
- </xsl:for-each>
- </div>
- </xsl:if>
- <xsl:if test="count(comment/returns/tagContent) > 0">
- <div class="returns">
- <span class="descSection">Returns:</span><br/>
- <div class="paddedDetails">
- <xsl:apply-templates select='comment/returns/tagContent'/>
- <xsl:if test="count(comment/returns/paramOptions/paramoption) != 0">
- <ul class="paramoption">
- <xsl:apply-templates select="comment/returns/paramOptions/paramoption" mode="writeDetails1"/>
- </ul>
- </xsl:if>
- </div>
- </div>
- </xsl:if>
- <xsl:if test="count(comment/throws/tagContent) > 0">
- <div class="throws">
- <span class="descSection">Throws:</span><br/>
- <xsl:for-each select='comment/throws/tagContent/content'>
- <div class="paddedDetails"><xsl:apply-templates select='.'/></div>
- </xsl:for-each>
- </div>
- </xsl:if>
-
- <xsl:apply-templates select="comment" mode="genCommonAttrs" />
-
- <xsl:apply-templates select="." mode="physOwner">
- <xsl:with-param name="testNode"><xsl:value-of select='@id'/></xsl:with-param>
- </xsl:apply-templates>
- <hr />
- </xsl:template>
-
-
- <xsl:template name="writeDetails">
- <xsl:param name="memberName"/>
- <xsl:param name="memberType"/>
- <xsl:param name="objectName"/>
- <xsl:if
- test="count(/jgdoc/items/*[@id=$objectName]/children/ref[@type=$memberType]) != 0">
- <xsl:element name="div">
- <xsl:attribute name="class"><xsl:text>details </xsl:text><xsl:value-of select="$memberType"/></xsl:attribute>
- <h2 class="sectionHeader"><xsl:value-of select="$memberName"/> Details</h2>
- <xsl:for-each
- select="/jgdoc/items/*[@id=$objectName]/children/ref[@type=$memberType]">
- <xsl:apply-templates select="." mode="writeDetails">
- <xsl:with-param name="memberName"><xsl:value-of select="$memberName"/></xsl:with-param>
- <xsl:with-param name="memberType"><xsl:value-of select="$memberType"/></xsl:with-param>
- <xsl:with-param name="original">true</xsl:with-param>
- </xsl:apply-templates>
- </xsl:for-each>
- </xsl:element>
- </xsl:if>
- </xsl:template>
-
-
- <xsl:template match = "*" mode="physOwner">
- <xsl:param name="testNode"/>
- <xsl:variable name='owner' select="@parentName"/>
-
- <xsl:variable name='parentPhys'><xsl:value-of select='/jgdoc/items/*[@id=$owner]/@physOwner'/></xsl:variable>
- <xsl:variable name='phys'><xsl:value-of select='@physOwner'/></xsl:variable>
- <xsl:if test="$phys != $parentPhys">
- <span class="definedIn">Defined in </span><xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:value-of select="$rootPath"/>physical/<xsl:value-of select="/jgdoc/items/*[@id=$phys]/@path"/>.html</xsl:attribute>
- <xsl:value-of select="/jgdoc/items/*[@id=$phys]/comment/name"/>
- </xsl:element>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="writeCss">
- <xsl:param name="rootPath"/>
- <xsl:param name="aux_path"/>
- <xsl:element name="link">
- <xsl:attribute name="rel">stylesheet</xsl:attribute>
- <xsl:attribute name="type">text/css</xsl:attribute>
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>jgdoc.css</xsl:attribute>
- </xsl:element>
- <xsl:element name="link">
- <xsl:attribute name="rel">stylesheet</xsl:attribute>
- <xsl:attribute name="type">text/css</xsl:attribute>
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/>theme.css</xsl:attribute>
- </xsl:element>
- <xsl:if test="$aux_css != 'not_specified'">
- <xsl:element name="link">
- <xsl:attribute name="rel">stylesheet</xsl:attribute>
- <xsl:attribute name="type">text/css</xsl:attribute>
- <xsl:attribute name="href"><xsl:value-of select="$rootPath"/><xsl:value-of select="$aux_css"/></xsl:attribute>
- </xsl:element>
- </xsl:if>
-
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/css/jgdoc.css b/buildscripts/jGrouseDoc/skins/noframes/css/jgdoc.css
deleted file mode 100644
index 5abe5de6..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/css/jgdoc.css
+++ /dev/null
@@ -1,473 +0,0 @@
-
-@CHARSET "ISO-8859-1";
-/*
- jGrouseDoc "NO FRAMES" stylesheet file.
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: jgdoc.css 340 2008-01-21 16:13:59Z broofa $
-*/
-
-body
-{
- /*font-family: Helvetica,Arial,sans-serif;
- font-size: 0.9em;*/
-}
-
-
-a
-{
- text-decoration: none;
-}
-
-.overviewTitle
-{
- font-weight: bold;
- font-size: 1.3em;
- padding-top: 1em;
- clear: both;
-}
-
-.overviewItem
-{
-}
-
-
-.overviewSectionHeader
-{
- font-weight: bold;
- font-size: 1.1em;
- padding-top: 0.5em;
-}
-
-.sectionHeader
-{
- border: 2px groove black;
- font-size: 1.7em;
- text-align: left;
- font-weight: bold;
- background-color: #ccccff;
- color: black;
- padding: 3px;
-}
-
-.logicalSummary
-{
-}
-
-.summaryTable
-{
- border: 2px groove black;
-}
-
-.summaryTableHeader
-{
- font-size: 1.7em;
- text-align: left;
- font-weight: bold;
- background-color: #ccccff;
- color: black;
- padding: 4px;
-}
-
-.summaryTable .summaryItem
-{
- border-top: 1px solid;
- padding: 2px;
-}
-
-.summaryTable .summaryItemRef
-{
- font-weight: bold;
-}
-
-.summaryTable .summaryItemDef
-{
-}
-
-.summaryTable .inheritanceSummary
-{
- border-top: 1px solid;
- padding: 2px;
-}
-
-.summaryTable .summaryItemDesc
-{
- padding-left: 2em;
-}
-
-.elementName
-{
- font-weight: bold;
-}
-
-.descSection
-{
- font-weight: bold;
-}
-
-
-.navbar
-{
- font-size: 0.9em;
- padding-bottom: 4px;
-}
-
-.currentPage
-{
- font-weight: bold;
-}
-
-.navbaritem
-{
- float: left;
- width: 10em;
- background-color: #ccccff;
- color: black;
- padding: 4px;
- margin: 2px;
- padding-top: 2px;
- padding-bottom: 2px;
- text-align: center;
-}
-
-.navbaritem a
-{
- background-color: #ccccff;
- color: black;
- text-decoration: underline;
-}
-
-
-.projectDescRef
-{
- font-weight: bold;
-}
-
-.paddedDetails
-{
- padding-left: 5em;
-}
-
-.example
-{
- font-size: 0.8em;
- font-family: courier;
- white-space: pre;
-}
-
-
-
-a.searchItem:visited, a.searchItem:link
-{
- cursor: pointer;
- display: block;
- color: black;
- padding-top: 2px;
- padding-bottom: 2px;
-}
-
-
-
-.jgdSelectedItem, a.jgdSelectedItem:visited, a.jgdSelectedItem:link
-{
- background-color: #0a246a;
- color: white;
-}
-
-
-
-
-.jgdSearchRect
-{
- width:100%;
- height:20em;
- border: 2px inset;
- overflow: auto;
- background-color: white;
-}
-
-.jgsSearchPanel
-{
- position: absolute;
- background-color: transparent;
- clear: both;
- line-height: 1.2em;
-}
-
-.jgdSearchString
-{
-
-}
-
-.jgsInfo
-{
- white-space: pre;
- background-color: white;
- padding: 0.5em;
- position: absolute;
- border: 1px solid;
-}
-
-
-
-/*---------- NavTree ----------------*/
-
-
-
-.navTree a {
- text-decoration: none;
-}
-.navTree a:hover {
- text-decoration: underline;
-}
-
-.navTree .contents
-{
- list-style: none;
- padding-left: 10px;
- margin-left: 0px;
- clear: both;
-}
-
-.navTree .contents li
-{
- clear: both;
-}
-
-
-.navTree .contents ul
-{
- border-left: 1px solid #cccccc;
- margin-left: 6px;
- clear: both;
-}
-
-
-.navTree .contents span.node
-{
- display: block;
- float: left;
-}
-
-.navTree span.node
-{
- cursor: pointer;
-}
-
-.navTree .open span.node
-{
- background: url(open.gif) ;
- background-repeat: no-repeat;
- background-position: 0em 0.2em;
-}
-
-.navTree .closed span.node
-{
- background: url(closed.gif) ;
- background-repeat: no-repeat;
- background-position: 0em 0.2em;
-}
-
-.navTree .leaf span.node
-{
- background: url(node.gif) ;
- background-repeat: no-repeat;
- background-position: 0em 0.2em;
-}
-
-.navTree .closed .contents
-{
- display: none;
-}
-
-.navTree .markerSpace
-{
- padding-left: 15px;
-}
-
-.navTree .openAll
-{
- background-image: url(openLarge.gif);
- background-repeat: no-repeat;
- padding-left: 25px;
- padding-right: 10px;
- background-position: left center;
- cursor: pointer;
-}
-
-.navTree .closeAll
-{
- background-image: url(closedLarge.gif);
- background-repeat: no-repeat;
- padding-left: 25px;
- padding-right: 10px;
- background-position: left center;
- cursor: pointer;
-}
-
-.navTree .currentNode
-{
- background-color: aqua;
-}
-
-.comment
-{
- padding-top: 0.5em;
- padding-bottom: 0.5em;
-}
-
-body
-{
- font-family: sans-serif;
- font-size: 0.9em;
-}
-
-.banner
-{
-}
-.banner h1
-{
- margin: 0px;
-}
-
-.banner h1 a
-{
- background: transparent url(logo.gif) no-repeat scroll left center;
- line-height: 100px;
- margin: 0px;
- padding-left: 130px;
- display: block;
- height: 100%;
- color: black;
- text-decoration: none;
-}
-
-.banner .bar
-{
- background-color: #567a58;
- color: white;
- text-align: right;
- font-size: 1.5em;
- font-weight: bolder;
- padding-right: 0.5em;
- font-style: oblique;
-}
-
-.projectName
-{
-}
-
-.content
-{
- float: right;
- margin-left: -25em;
- width: 100%;
- overflow-Y: hidden;
-}
-
-.startup
-{
- height: 100%;
- overflow: hidden;
-}
-
-.navigation
-{
- border: 2px outset;
- float: left;
- width: 20em;
- background-color: white;
- line-height: 1.3em;
- /*padding-left: 0.5em;*/
- overflow-x: auto;
- margin-top: 0.5em;
-}
-
-.block
-{
- margin-left: 22em;
- float: none;
- height: 100%;
-}
-
-.search
-{
- padding-top: 0.5em;
-}
-
-.search .searchLabel
-{
- float:left;
- padding-right: 0.5em;
- height: 1.4em;
- padding-top: 4px;
- font-weight: bold;
-}
-
-.search .searchBlock
-{
-
-}
-
-.navigation h2
-{
- text-align: center;
- margin: 0px;
- padding: 8px;
- border-bottom: thin outset;
- background-color: #D8D8D0;
- cursor: pointer;
-}
-
-.navigation h2 a
-{
- color: black;
-}
-
-.navigation h2 a:hover
-{
- text-decoration: underline;
-}
-
-
-
-ul.navContent
-{
- list-style-image: none;
- list-style-position: outside;
- list-style-type: none;
- margin: 0px;
- padding: 0px;
-}
-
-ul.navContent2
-{
- list-style-image: none;
- list-style-position: outside;
- list-style-type: none;
- margin: 0px;
- padding: 4px;
-}
-
-ul.navContent.closed ul.navContent2
-{
- display: none;
-}
-
-.docScroll
-{
- clear: both;
- overflow-Y: auto;
-}
-
-ul.paramoption
-{
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-a.srcUrlLink
-{
- color:#66f;
- font-size: 11px;
- float: right;
-}
diff --git a/buildscripts/jGrouseDoc/skins/noframes/img/logo.gif b/buildscripts/jGrouseDoc/skins/noframes/img/logo.gif
deleted file mode 100644
index caf9699e..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/img/logo.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js b/buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js
deleted file mode 100644
index 3e6a9aa5..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js
+++ /dev/null
@@ -1,326 +0,0 @@
-/**
- * Searcher for JGrouseDoc
- * $Id: jgdoc.js 324 2008-01-06 16:44:39Z denis.riabtchik $
- */
-
-if (typeof jgdoc == 'undefined')
-{
- jgdoc = {}
-
- jgdoc._dataHandlers = [];
-
- jgdoc.setData = function(data)
- {
- for (var i = 0; i < jgdoc._dataHandlers.length; i++)
- {
- jgdoc._dataHandlers[i](data);
- }
- }
-}
-
-jgdoc.Searcher =
-{
- initialize : function()
- {
- this._searchBox = document.getElementById("jgsSearchString");
- this._searchResults = document.getElementById("jgsSearchResults");
- this._info = document.getElementById("jgsInfo");
- this._currentValue = "";
- this._currentItems = [];
- this._currentItem = -1;
- this._data = null;
- this._searchPanel = document.getElementById("jgsSearchPanel");
- this.addListener(this._searchBox, 'focus', this.dispatcher);
- this.addListener(this._searchBox, 'blur', this.dispatcher);
- this.addListener(window, 'resize', this.dispatcher);
- var width = this._searchBox.offsetWidth - 4;
- this._searchPanel.style.width = width + 'px';
-
- /*var node = this._searchBox;
- var current = 0;
- var currentTop = 0;
- while (node)
- {
- current += node.offsetLeft;
- currentTop += node.offsetTop;
- node = node.offsetParent;
- }
-
- this._searchPanel.style.left = current + 'px';*/
- this.positionBox();
- return this;
- },
-
- positionBox : function()
- {
- var node = this._searchBox;
- var current = 0;
- var currentTop = 0;
- while (node)
- {
- current += node.offsetLeft;
- currentTop += node.offsetTop;
- node = node.offsetParent;
- }
-
- this._searchPanel.style.left = current + 'px';
- this._searchPanel.style.top = (currentTop + this._searchBox.offsetHeight) + "px";
-
- },
-
- _getEvent : function(event)
- {
- return window.event? window.event : event;
- },
-
- _getTarget : function(event)
- {
- return event.target || event.srcElement
- },
-
- addClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- return;
- }
- }
- a.push(className);
- element.className = a.join(' ');
- },
-
- removeClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- a.splice(i, 1);
- break;
- }
- }
- element.className = a.join(' ');
-
- },
-
- dispatcher : function(event)
- {
- if (this != jgdoc.Searcher)
- {
- arguments.callee.apply(jgdoc.Searcher, arguments)
- return;
- }
- event = this._getEvent(event);
- var type = event.type;
- var handler = "on" + type;
- this[handler](event, this._getTarget(event));
- },
-
- onclick : function(event, target)
- {
- // workaround for IE bug
- window.location.href = target.getAttribute("href", 1);
- },
-
- onmouseover : function(event, target)
- {
- this.selectItem(target.index);
- },
-
- onresize : function(event, target)
- {
- if (this._searchPanel.style.display != 'none')
- {
- this.positionBox();
- }
- },
-
- onmouseout : function(event, target)
- {
- this.unselectItem(target.index);
- },
-
- onfocus : function(event, target)
- {
- this._searchPanel.style.display = '';
- this.positionBox();
- },
-
- onblur : function(event, target)
- {
- var athis = this;
- window.setTimeout(function()
- {
- athis._searchPanel.style.display = 'none';
- }, 300);
-
- },
-
- selectItem : function(index)
- {
- if (index != this._currentItem)
- {
- this._currentItem = index;
- var item = this._currentItems[index];
- this.addClass(item, 'jgdSelectedItem');
- var text = item._data.summary.split('\n').join('<br/>');
- this._info.innerHTML = text;
- }
- },
-
- unselectItem : function(index)
- {
- this._currentItem = -1;
- var item = this._currentItems[index];
- this.removeClass(item, 'jgdSelectedItem');
- this._info.innerHTML = 'No selection';
- },
-
- openItem : function(name)
- {
-
- },
-
-
- onTimer : function()
- {
- if (this != jgdoc.Searcher)
- {
- arguments.callee.apply(jgdoc.Searcher, arguments)
- return;
- }
- var val = this._searchBox.value;
- if (val != this._currentValue)
- {
- this._currentValue = val;
- this.redraw();
- }
- },
-
- setData : function(data)
- {
- this._data = data;
- this.redraw();
- //this._searchBox.focus();
- },
-
- addListener : function(element, eventName, handler)
- {
- if (element.addEventListener)
- {
- element.addEventListener(eventName, handler, false);
- }
- else
- {
- element.attachEvent('on' + eventName, handler);
- }
- },
-
- removeListener : function(element, eventName, handler)
- {
- if (element.removeEventListener)
- {
- element.removeEventListener(eventName, handler, false);
- }
- else
- {
- element.detachEvent('on' + eventName, handler);
- }
- },
-
- findMatches : function()
- {
- var result = [];
- if (this._currentValue)
- {
- var v = this._currentValue.toUpperCase();
- for (var i = 0; i < this._data.length; i++)
- {
- var item = this._data[i];
- if (item.localName.toUpperCase().indexOf(v) == 0)
- {
- result.push(item);
- }
- }
- }
- return result;
- },
-
-
- clearItem : function(item)
- {
- item._data = null;
- this.removeListener(item, 'click', this.dispatcher);
- this.removeListener(item, 'mouseover', this.dispatcher);
- this.removeListener(item, 'mouseout', this.dispatcher);
- },
-
- clear : function()
- {
- for (var i = 0; i < this._currentItems.length; i++)
- {
- this.clearItem(this._currentItems[i]);
- }
- this._currentItems = [];
- this._searchResults.innerHTML = "";
- this._currentItem = -1;
- },
-
-
- createItem : function(item, index)
- {
- var d1 = document.createElement("div");
- d1.innerHTML = "<a href='" + item.ref + "'>" + item.fullName + "</a>";
- d = d1.firstChild;
- /*d.href = item.ref;
- item.ref = d.href;*/
- d.className = "searchItem";
- //d.title = item.summary;
- //d.innerHTML = item.fullName;
- d.index = index;
- d._data = item;
- this.addListener(d, 'click', this.dispatcher);
- this.addListener(d, 'mouseover', this.dispatcher);
- this.addListener(d, 'mouseout', this.dispatcher);
- //todo - set listeners
- return d;
- },
-
- redraw : function()
- {
- this.clear();
- var res = this.findMatches();
- if (res.length > 0)
- {
- for (var i = 0; i < res.length; i++)
- {
- var d = this.createItem(res[i], i);
- this._currentItems.push(d);
- this._searchResults.appendChild(d);
- }
- }
- else
- {
- var s = (this._currentValue)? "Not found" : "Start typing the name of the item";
- this._searchResults.innerHTML = s;
- }
- },
-
- start : function()
- {
- var instance = jgdoc.Searcher.initialize();
- instance.setData([]);
- instance._timer = window.setInterval(instance.onTimer, 100);
- }
-}
-
-jgdoc._dataHandlers.push(function(data)
-{
- jgdoc.Searcher.setData(data);
-}); \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/skins/noframes/js/navTree.js b/buildscripts/jGrouseDoc/skins/noframes/js/navTree.js
deleted file mode 100644
index 98e30a29..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/js/navTree.js
+++ /dev/null
@@ -1,409 +0,0 @@
-if (typeof jgdoc == 'undefined')
-{
- jgdoc = {}
-
- jgdoc._dataHandlers = [];
-
- jgdoc.setData = function(data)
- {
- for (var i = 0; i < jgdoc._dataHandlers.length; i++)
- {
- jgdoc._dataHandlers[i](data);
- }
- }
-}
-
-jgdoc.TreeItem = function(nodeName, item)
-{
- this._nodeName = nodeName;
- this._data = item;
- this._children = [];
-
-}
-
-jgdoc.Common =
-{
- addClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- return;
- }
- }
- a.push(className);
- element.className = a.join(' ');
- },
-
- removeClass : function(element, className)
- {
- var s = element.className;
- var a = s.split(' ');
- var found = false;
- for (var i = 0; i < a.length; i++)
- {
- if (a[i] == className)
- {
- a.splice(i, 1);
- found = true;
- break;
- }
- }
- element.className = a.join(' ');
- return found;
- },
-
- addListener : function(element, eventName, handler)
- {
- if (element.addEventListener)
- {
- element.addEventListener(eventName, handler, false);
- }
- else
- {
- element.attachEvent('on' + eventName, handler);
- }
- },
-
- removeListener : function(element, eventName, handler)
- {
- if (element.removeEventListener)
- {
- element.removeEventListener(eventName, handler, false);
- }
- else
- {
- element.detachEvent('on' + eventName, handler);
- }
- }
-}
-
-jgdoc.NavPanel =
-{
- clicked : function(e)
- {
- e = window.event? window.event : e;
- var target = e.target || e.srcElement;
- var node = target;
- while (node != null && node.tagName != 'UL')
- {
- node = node.parentNode;
- }
- if (node)
- {
- var parent = node.parentNode;
- var current = parent.firstChild;
- while (current)
- {
- if (current != node && current.nodeType === 1)
- {
- jgdoc.Common.addClass(current, "closed");
- }
- current = current.nextSibling;
- }
- jgdoc.Common.removeClass(node, "closed");
- }
- },
-
- dummy : function()
- {
- }
-}
-
-/*
-jgdoc.App =
-{
- initialize : function()
- {
- this._container = document.getElementById("startup");
- this._banner = document.getElementById("banner");
- this._content = document.getElementById("docContent");
- this._navigation = document.getElementById("navigation");
- this._docScroll = document.getElementById("docScroll");
- this._html = document.getElementsByTagName('html')[0];
- this._body = document.getElementsByTagName("body")[0];
- this._searchBlock = document.getElementById("searchBlock");
- this._html.style.overflowY = "hidden";
-
- }
-}*/
-
-jgdoc.NavTree =
-{
- initialize : function(defaultName)
- {
- this._defaultName = defaultName;
- },
-
-
- setData : function(data) {
- this._data = data;
- this.processItems();
- this.render();
- this.openItem(this._defaultName);
- },
-
- sorter: function(o1, o2) {
- var l1 = o1.localName;
- var l2 = o2.localName;
- return l1 < l2? -1 : (l1 > l2 ? 1 : 0);
- },
-
- processItems : function() {
- var root;
-
- // Pass 1: Build index by fullName, and locate the root element
- this._byName = {};
- for (var i = 0; i < this._data.length; i++) {
- var d = this._data[i];
- if (d.fullName == "GLOBAL") {
- root = this._root = d;
- }
- this._byName[d.fullName] = d;
- }
-
- // Pass 2: Populate _children arrays
- for (var i = 0; i < this._data.length; i++) {
- var item = this._data[i];
- if (item.elementType == "logical_container" && item != this._root) {
- var parent = this._byName[item.parent];
- parent._children = parent._children || [];
- parent._children.push(item);
- }
- }
- },
-
- findItem : function(name)
- {
- return this._byName[name];
- },
-
- /*setData : function(data)
- {
- this._data = data;
- data.sort(this.sorter);
- this._root = data[0];
- this.processItems();
- this.render();
- this.openItem(this._defaultName);
- },
-
- findItem : function(name)
- {
- if (name === '' || name == 'GLOBAL')
- {
- return this._root;
- }
- var s = name.split('.');
- var current = this._root._children;
- var found = null;
- for (var i = 0; i < s.length; i++)
- {
- var detected = false;
- for (var j = 0; j < current.length; j++)
- {
- var item = current[j];
- if (item.localName == s[i])
- {
- detected = true;
- current = item._children;
- found = item;
- break;
- }
- }
- if (!detected)
- {
- return false;
- }
- }
- return found;
- },
-
- processItems : function()
- {
- for (var i = 1; i < this._data.length; i++)
- {
- var item = this._data[i];
- if (item.elementType == "logical_container")
- {
- var parent = this.findItem(item.parent);
- if (!parent._children)
- {
- parent._children = [];
- }
- parent._children.push(item);
- }
- }
- },
-
-
- sorter : function(item1, item2)
- {
- if (item1.parent == "")
- {
- return -1;
- }
- if (item2.parent == "")
- {
- return 1;
- }
- if (item1.parent == item2.parent)
- {
- return item1.localName < item2.localName? -1 : item1.localName > item2.localName? 1 : 0;
- }
- if (item1.parent == "GLOBAL")
- {
- return -1;
- }
- if (item2.parent == "GLOBAL")
- {
- return 1;
- }
- return item1.parent < item2.parent? -1 : 1;
- },
- */
-
-
- clicked : function(event)
- {
- event = window.event? window.event : event;
- var target = event.target || event.srcElement;
- var span = target.parentNode;
- var li = span.parentNode;
- var wasOpen = jgdoc.Common.removeClass(li, 'open');
- if (wasOpen)
- {
- jgdoc.Common.addClass(li, 'closed');
- }
- else
- {
- jgdoc.Common.removeClass(li, 'closed');
- jgdoc.Common.addClass(li, 'open');
- }
- span.title = "Click to " + (wasOpen? "expand" : "collapse");
-
- },
-
-
-
-
- render : function()
- {
- var d = document.getElementById('content');
- d.innerHTML = '';
- var athis = this;
- function renderNode(item)
- {
- var node = document.createElement('li');
- node.className = item.type;
- node.innerHTML = "<span class='node'><span class='markerSpace'>&nbsp;</span></span><a href='" + item.ref + "' title='" + item.summary + "'>" + item.localName + "</a>";
- var span = node.firstChild;
- var img = span.firstChild;
- jgdoc.Common.addListener(img, 'mousedown', athis.clicked);
- if (item._children)
- {
- node.className += (item == athis._root)? ' open' : ' closed';
- span.title = "Click to " + (item != athis._root? 'expand' : 'collapse');
- var subnode = document.createElement("ul");
- subnode.className = 'contents';
- for (var i = 0; i < item._children.length; i++)
- {
- var child = renderNode(item._children[i]);
- subnode.appendChild(child);
- }
- node.appendChild(subnode);
- }
- else
- {
- node.className += ' leaf';
- }
- if (item.fullName == athis._defaultName)
- {
- node.firstChild.nextSibling.className += ' currentNode';
- }
- item._node = node;
- return node;
- }
- var root = renderNode(this._root);
- d.appendChild(root);
- },
-
- cancelEvent : function(event)
- {
- if (event.preventDefault)
- {
- event.preventDefault();
- event.stopPropagation();
- }
- else
- {
- event.preventDefault();
- event.stopPropagation();
- }
- },
-
- switchAll : function(doOpen)
- {
- var ac = doOpen? 'open' : 'closed';
- var rc = doOpen? 'closed' : 'open';
-
- var athis = this;
-
- function doSwitchNode(anode)
- {
- if (anode._children)
- {
- if (doOpen || anode != athis._root)
- {
- jgdoc.Common.removeClass(anode._node, rc);
- jgdoc.Common.addClass(anode._node, ac);
- }
- for (var i = 0; i < anode._children.length; i++)
- {
- doSwitchNode(anode._children[i]);
- }
- }
- }
- doSwitchNode(this._root);
- },
-
- openItem : function(name)
- {
- this.switchAll(false);
- while (name != 'GLOBAL')
- {
- var item = this.findItem(name);
- if (item)
- {
- var node = item._node;
- jgdoc.Common.removeClass(node, 'closed');
- jgdoc.Common.addClass(node, 'open');
- name = item.parent;
- }
- else
- {
- return;
- }
- }
- },
-
- onOpenAll : function()
- {
- jgdoc.NavTree.switchAll(true);
- },
-
- onCloseAll : function()
- {
- jgdoc.NavTree.switchAll(false);
- }
-
-};
-
-jgdoc._dataHandlers.push(function(data)
-{
- //jgdoc.App.initialize();
- jgdoc.NavTree.setData(data);
-});
diff --git a/buildscripts/jGrouseDoc/skins/noframes/vm/antgen.vm b/buildscripts/jGrouseDoc/skins/noframes/vm/antgen.vm
deleted file mode 100644
index 7ed8671f..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/vm/antgen.vm
+++ /dev/null
@@ -1,77 +0,0 @@
-#if ($jg.project.comment.name)
- #set($projectName=$jg.project.comment.name.trim())
-#end
-#if ($jg.project.comment.version.size() > 0)
- #set ($version = $jg.project.comment.version.get(0).content.originalString.trim())
-#end
-#if ($jg.project.comment.description.size() > 0)
- #set ($projectDesc = $jg.project.comment.description.get(0).content.originalString.trim())
-#end
-#macro (genSummary $coll $pathPart $section)
- #foreach($le in $coll)
-
- <output file="$outDir/$pathPart/${le.path}.html">
- <param key="projectName" value="$projectName"/>
- <param key="projectDesc" value="$projectDesc"/>
- <param key="version" value="$version"/>
- #if($aux_css != "not_specified")
- <param key="aux_css" value="$aux_css"/>
- #end
- <param key="objectName" value="$le.fullName"/>
- <param key="rootPath" value=""/>
- <param key="navSection" value="$section"/>
- <param key="trueRootPath" value="../$le.rootPath"/>
- </output>
- #end
-#end
-<?xml version="1.0" encoding="$encoding"?>
- <!-- Documentation build file for $projectName. Generated by jGrouseDoc-->
-<project name="$projectName" default="applyJGrouseDoc">
- <target name="applyJGrouseDoc">
- <copy todir="$outDir" overwrite="yes">
- <fileset dir="$commonSkin/css" />
- </copy>
- <copy todir="$outDir" overwrite="yes">
- <fileset dir="$skinDir/css" />
- </copy>
- <copy todir="$outDir">
- <fileset dir="$commonSkin/img" />
- </copy>
- <copy todir="$outDir" overwrite="yes">
- <fileset dir="$skinDir/img" />
- </copy>
- <copy todir="$outDir" overwrite="yes">
- <fileset dir="$skinDir/js" />
- </copy>
-
-
- <vmtask resourcePath="., ${jGrouseHome}" source="${outDir}/${projectFile}" loglevel="INFO">
- <template templatename="skins/${skin}/vm/jsindex.vm" vmlibs="skins/common/vm/common.vm">
- <output file="$outDir/jsindex.js">
- <param key="projectName" value="$projectName"/>
- <param key="projectDesc" value="$projectDesc"/>
- <param key="version" value="$version"/>
- <param key="rootPath" value=""/>
- </output>
- </template>
- <template templatename="skins/${skin}/vm/detail.vm" vmlibs="skins/common/vm/common.vm">
- <output file="$outDir/index.html">
- <param key="projectName" value="$projectName"/>
- <param key="projectDesc" value="$projectDesc"/>
- <param key="version" value="$version"/>
- #if($aux_css != "not_specified")
- <param key="aux_css" value="$aux_css"/>
- #end
- <param key="objectName" value="_not_specified_"/>
- <param key="navSection" value="logical"/>
- <param key="trueRootPath" value=""/>
- <param key="rootPath" value=""/>
- </output>
-
- #genSummary($jg.logical "logical" "logical")
- #genSummary($jg.files "physical" "file")
- #genSummary($jg.modules "physical" "module")
- </template>
- </vmtask>
- </target>
-</project>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/vm/detail.vm b/buildscripts/jGrouseDoc/skins/noframes/vm/detail.vm
deleted file mode 100644
index 8cb95d88..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/vm/detail.vm
+++ /dev/null
@@ -1,94 +0,0 @@
-#if ($jg.get($objectName)) #set ($obj = $jg.get($objectName)) #end
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
- <head>
- <title>$projectName</title>
- <META http-equiv="Content-Type" content="text/html; charset=$encoding">
- <script>
-
- (function()
- {
- var loc = window.location.protocol + '//' + window.location.hostname + window.location.pathname;
- loc = loc.split('\\');
- loc = loc.join('/');
- loc = loc.split('/');
- loc.pop();
- loc = loc.join('/');
- loc += '/' + '$trueRootPath';
-
- document.write("<base href='" + loc + "'></base>");
- })();
-
- </script>
-
- <link rel="stylesheet" type="text/css" href="${rootPath}jgdoc.css">
- <link rel="stylesheet" type="text/css" href="${rootPath}theme.css">
- #if ($aux_css)
- <link rel="stylesheet" type="text/css" href="${rootPath}$aux_css">
- #end
- <script type="text/javascript" src="navTree.js"></script>
- <script type="text/javascript" src="jgdoc.js"></script>
- </head>
- <body>
- <div class="startup" id="startup">
- <div class="banner" id="banner">
- <h1 class="projectName">
- <a href=".">$projectName</a>
- </h1>
- <div class="bar">
- version $version
- </div>
- </div>
- <div class="content" id="docContent">
- <div class="block">
- <div id="searchBlock">
- <div class="search" >
- <div class="searchLabel">Search:</div>
- <div class="searchBlock" style="height:100%">
- <input id="jgsSearchString" type="text" size="60" class="jgdSearchString"/>
- <div id="jgsSearchPanel" class="jgsSearchPanel" style="display:none">
- <div class="jgdSearchRect" >
- <div id="jgsSearchResults">
- Loading....
- </div>
- </div>
- <div id="jgsInfo" class="jgsInfo" >No selection</div>
- </div>
- </div>
- </div>
- </div>
- <div id="docScroll" class="docScroll">
- <div>
- <hr/>
- <div>
- #if ($obj)
- #writeContainer($obj)
- #else
- <hr/>
- #if($jg.project)
- <div class="projectDesc">
- <a name="desc"></a><br/>
- #if($projectDesc && $projectDesc.length() > 0)
- <h1>$projectDesc</h1>
- #end
- #writeContent($jg.project.comment.content)
- <p />
- #genCommonAttrs($jg.project.comment)
- </div>
- #end
- #end
- </div>
- </div>
- </div>
- </div>
- </div>
- #navigationPane($navSection)
- </div>
- </body>
- <script type="text/javascript">
- jgdoc.Searcher.start();
- jgdoc.NavTree.initialize("#if($obj)$obj.fullName#else'GLOBAL'#end");
- </script>
- <script type="text/javascript" src="jsindex.js">
- </script>
-</html>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/vm/jsindex.vm b/buildscripts/jGrouseDoc/skins/noframes/vm/jsindex.vm
deleted file mode 100644
index 9f1496a0..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/vm/jsindex.vm
+++ /dev/null
@@ -1,57 +0,0 @@
-#macro (writeFunctionJSParams $paramSet)
-#foreach($param in $paramSet.params)#if($velocityCount > 1), #end#if($param.hasModifier('optional'))[#end#if($param.typeLink)$param.typeLink.originalString.trim() #end$param.name#if($param.hasModifier('optional'))]#end#end
-#end
-
-#macro(writeFuncJSSummary $func)
-#set ($funcModifiers = $func.comment.modifiers)
-#if ($func.comment.inheritdesc.size() == 0)
-#set ($funcItself = $func)
-#else
-#set ($funcItself = $jg.get($func.comment.inheritdesc.get(0).name))
-#end
-#if($funcModifiers.length() > 0)$funcModifiers #end$func.commentType #if ($funcItself.comment.paramSets.size() != 0)#foreach($paramSet in $funcItself.comment.paramSets)#if ($velocityCount > 1)\n#end#if($funcItself.comment.typeLink)$funcItself.comment.typeLink.originalString #end${func.localName}(#writeFunctionJSParams($paramSet))#end
-#else
-#if($funcItself.comment.typeLink)$funcItself.comment.typeLink.originalString #end${funcItself.localName}()#end
-#end
-
-
-#macro(writeVarJSSummary $var)
-#set ($varModifiers = $var.comment.modifiers)
-#if ($var.comment.inheritdesc.size() == 0)
-#set ($varItself = $var)
-#else
-#set ($varItself = $jg.get($var.comment.inheritdesc.get(0).name))
-#end
-#if($varModifiers.length() > 0)$varModifiers #end$var.commentType #if($varItself.comment.typeLink)$varItself.comment.typeLink.originalString #end${varItself.localName}#end
-
-#macro(writeContainerJSSummary $cont)
-#if($cont.comment.modifiers.length() > 0)$cont.comment.modifiers #end$cont.commentType $cont.localName#end
-#macro(writeJSSummary $obj)
-#if ($obj.commentType == "variable" || $obj.commentType == "property")#writeVarJSSummary($obj)
-#elseif($obj.commentType == "class" || $obj.commentType == "namespace" || $obj.commentType == "struct" || $obj.commentType == "interface" || $obj.commentType == "object")#writeContainerJSSummary($obj)
-#elseif($obj.commentType == "function" || $obj.commentType == "constructor" || $obj.commentType == "ifunction" || $obj.commentType == "event")#writeFuncJSSummary($obj)#end
-#end
-
-#macro(writeJS $item)
-
- {
- localName : "$item.localName",
- fullName : "$item.fullName",
- summary : "#writeJSSummary($item)",
- ref : "#writeLink($item.fullName)",
- parent : "#if($item.parentName)$item.parentName#end",
- type : "$item.commentType",
- elementType : "$item.elementType"
- }#end
-
-
-
-/*Generated by jGrouseDoc*/
-(function()
-{
- var data = [#foreach($item in $jg.all())#if($item.commentType != 'file' && $item.commentType != 'module')#if($velocityCount > 1), #end #writeJS($item) #end#end
- ];
- jgdoc.setData(data);
-
-})()
-
diff --git a/buildscripts/jGrouseDoc/skins/noframes/vm/test.vm b/buildscripts/jGrouseDoc/skins/noframes/vm/test.vm
deleted file mode 100644
index bde0e031..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/vm/test.vm
+++ /dev/null
@@ -1 +0,0 @@
-$jg.get("_bla").comment.returnsTag \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/skins/noframes/xslt/antgen.xslt b/buildscripts/jGrouseDoc/skins/noframes/xslt/antgen.xslt
deleted file mode 100644
index 6a9e656b..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/xslt/antgen.xslt
+++ /dev/null
@@ -1,357 +0,0 @@
-<!--
- jGrouseDoc template file. Creates ant file that renders all documentation
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: antgen.xslt 331 2008-01-08 02:11:41Z denis.riabtchik $
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:output method="XML"/>
- <xsl:param name="projectName"/>
- <xsl:param name="projectDesc"/>
- <xsl:param name="jGrouseHome"/>
- <xsl:param name="projectFile"/>
- <xsl:param name="outDir"/>
- <xsl:param name="version"/>
- <xsl:param name="useFullNames">true</xsl:param>
- <xsl:param name="css"><xsl:value-of select="$jGrouseHome"/>/skins/noframes/css/jgdoc.css</xsl:param>
- <xsl:param name='aux_css'>not_specified</xsl:param>
- <xsl:param name="skinDir">not_specified</xsl:param>
-
- <xsl:variable name="commonSkin"><xsl:value-of select="$jGrouseHome"/>/skins/common</xsl:variable>
-
- <xsl:template name="dotdot">
- <xsl:param name="arg"/>
- <xsl:param name="sep"/>
- <xsl:param name="firstPart" select="substring-before($arg, $sep)"/>
- <xsl:param name="lastPart" select="substring-after($arg, $sep)"/>
- <xsl:if test="string-length($firstPart) != 0">../</xsl:if>
- <xsl:if test="string-length($lastPart) != 0"><xsl:call-template name="dotdot">
- <xsl:with-param name="arg" select="$lastPart"/>
- <xsl:with-param name="sep" select="$sep"/>
- </xsl:call-template></xsl:if>
- </xsl:template>
-
-
-
- <xsl:template match="/">
- <xsl:variable name="_projectName">
- <xsl:choose>
- <xsl:when test="count(/jgdoc/project/comment/name) != 0">
- <xsl:value-of select="normalize-space(/jgdoc/project/comment/name)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$projectName"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="_version">
- <xsl:choose>
- <xsl:when test="count(/jgdoc/project/comment/version/tagContent/content) != 0">
- <xsl:value-of select="normalize-space(/jgdoc/project/comment/version/tagContent/content)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$version"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="_projectDesc">
- <xsl:choose>
- <xsl:when test="count(/jgdoc/project/comment/description/tagContent/content) != 0">
- <xsl:value-of select="normalize-space(/jgdoc/project/comment/description/tagContent/content)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$projectDesc"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:comment>Documentation build file for <xsl:value-of select="projectName"/>. Generated by jGrouseDoc</xsl:comment>
- <xsl:element name="project">
- <xsl:attribute name="name"><xsl:value-of select="$_projectName"/></xsl:attribute>
- <xsl:attribute name="default">applyJGrouseDoc</xsl:attribute>
- <xsl:element name="target">
- <xsl:attribute name="name">applyJGrouseDoc</xsl:attribute>
- <!-- copy CSS file -->
- <xsl:element name="copy">
- <xsl:attribute name="todir"><xsl:value-of select="$outDir"/></xsl:attribute>
- <xsl:attribute name="overwrite">yes</xsl:attribute>
- <xsl:element name="fileset">
- <xsl:attribute name="dir"><xsl:value-of select="$commonSkin"/>/css</xsl:attribute>
- </xsl:element>
- </xsl:element>
- <xsl:element name="copy">
- <xsl:attribute name="todir"><xsl:value-of select="$outDir"/></xsl:attribute>
- <xsl:attribute name="overwrite">yes</xsl:attribute>
- <xsl:element name="fileset">
- <xsl:attribute name="dir"><xsl:value-of select="$skinDir"/>/css</xsl:attribute>
- </xsl:element>
- </xsl:element>
- <!--
- <xsl:element name="copy">
- <xsl:attribute name="file"><xsl:value-of select="$css"/></xsl:attribute>
- <xsl:attribute name="tofile"><xsl:value-of select='$outDir'/>/jgdoc.css</xsl:attribute>
- <xsl:attribute name="overwrite">yes</xsl:attribute>
- </xsl:element>
- -->
- <xsl:element name="copy">
- <xsl:attribute name="todir"><xsl:value-of select="$outDir"/></xsl:attribute>
- <xsl:element name="fileset">
- <xsl:attribute name="dir"><xsl:value-of select="$commonSkin"/>/img</xsl:attribute>
- </xsl:element>
- </xsl:element>
- <xsl:element name="copy">
- <xsl:attribute name="todir"><xsl:value-of select="$outDir"/></xsl:attribute>
- <xsl:element name="fileset">
- <xsl:attribute name="dir"><xsl:value-of select="$skinDir"/>/img</xsl:attribute>
- </xsl:element>
- </xsl:element>
-
- <!-- copy JS file -->
- <xsl:element name="copy">
- <xsl:attribute name="todir"><xsl:value-of select='$outDir'/></xsl:attribute>
- <xsl:element name="fileset">
- <xsl:attribute name="dir"><xsl:value-of select="$skinDir"/>/js</xsl:attribute>
- </xsl:element>
- </xsl:element>
-
- <!-- create main file -->
- <xsl:element name="xslt">
- <xsl:attribute name="style"><xsl:value-of select="$skinDir"/>/xslt/startup.xslt</xsl:attribute>
- <xsl:attribute name="in"><xsl:value-of select='$outDir'/>/<xsl:value-of select="$projectFile"/></xsl:attribute>
- <xsl:attribute name="out"><xsl:value-of select='$outDir'/>/index.html</xsl:attribute>
- <xsl:element name="param">
- <xsl:attribute name="name">projectName</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectName"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">projectDesc</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectDesc"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">version</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_version"/></xsl:attribute>
- </xsl:element>
- <xsl:if test="$aux_css != 'not_specified'">
- <xsl:element name="param">
- <xsl:attribute name="name">aux_css</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$aux_css"/></xsl:attribute>
- </xsl:element>
- </xsl:if>
- </xsl:element>
- <!-- =========== javascript index ================= -->
- <xsl:element name="xslt">
- <xsl:attribute name="style"><xsl:value-of select="$skinDir"/>/xslt/jsindex.xslt</xsl:attribute>
- <xsl:attribute name="in"><xsl:value-of select='$outDir'/>/<xsl:value-of select="$projectFile"/></xsl:attribute>
- <xsl:attribute name="out"><xsl:value-of select='$outDir'/>/jsindex.js</xsl:attribute>
- <xsl:element name="param">
- <xsl:attribute name="name">projectName</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectName"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">projectDesc</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectDesc"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">version</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_version"/></xsl:attribute>
- </xsl:element>
- </xsl:element>
- <!-- ============ logical stuff ================= -->
- <xsl:element name="fastxslt">
- <xsl:attribute name="template"><xsl:value-of select="$skinDir"/>/xslt/detail.xslt</xsl:attribute>
- <xsl:attribute name="source"><xsl:value-of select='$outDir'/>/<xsl:value-of select="$projectFile"/></xsl:attribute>
- <xsl:element name="param">
- <xsl:attribute name="key">version</xsl:attribute>
- <xsl:attribute name="value"><xsl:value-of select="$_version"/></xsl:attribute>
- </xsl:element>
- <xsl:if test="$aux_css != 'not_specified'">
- <xsl:element name="param">
- <xsl:attribute name="key">aux_css</xsl:attribute>
- <xsl:attribute name="value"><xsl:value-of select="$aux_css"/></xsl:attribute>
- </xsl:element>
- </xsl:if>
- <xsl:element name="param">
- <xsl:attribute name="key">projectName</xsl:attribute>
- <xsl:attribute name="value"><xsl:value-of select="$_projectName"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">projectDesc</xsl:attribute>
- <xsl:attribute name="value"><xsl:value-of select="$_projectDesc"/></xsl:attribute>
- </xsl:element>
-
- <xsl:for-each select="/jgdoc/items/*[@elementType='logical_container']">
- <xsl:element name="output">
- <xsl:attribute name="file"><xsl:value-of select='$outDir'/>/logical/<xsl:value-of select="@path"/>.html</xsl:attribute>
- <xsl:element name="param">
- <xsl:attribute name="key">objectName</xsl:attribute>
- <xsl:attribute name="value"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">rootPath</xsl:attribute>
- <xsl:attribute name="value"></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">navSection</xsl:attribute>
- <xsl:attribute name="value">logical</xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">trueRootPath</xsl:attribute>
- <xsl:attribute name="value">../<xsl:call-template name="dotdot">
- <xsl:with-param name="arg" select="comment/name" />
- <xsl:with-param name="sep" select="'.'"/>
- </xsl:call-template></xsl:attribute>
- </xsl:element>
- </xsl:element>
- </xsl:for-each>
-
- <xsl:for-each select="/jgdoc/items/file">
- <xsl:element name="output">
- <xsl:attribute name="file"><xsl:value-of select='$outDir'/>/physical/<xsl:value-of select="@path"/>.html</xsl:attribute>
- <xsl:element name="param">
- <xsl:attribute name="key">objectName</xsl:attribute>
- <xsl:attribute name="value"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">rootPath</xsl:attribute>
- <xsl:attribute name="value"></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">navSection</xsl:attribute>
- <xsl:attribute name="value">file</xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">trueRootPath</xsl:attribute>
- <xsl:attribute name="value">../<xsl:call-template name="dotdot">
- <xsl:with-param name="arg" select="comment/name" />
- <xsl:with-param name="sep" select="'/'"/>
- </xsl:call-template>
- </xsl:attribute>
- </xsl:element>
- </xsl:element>
- </xsl:for-each>
- <xsl:for-each select="/jgdoc/items/module">
- <xsl:element name="output">
- <xsl:attribute name="file"><xsl:value-of select='$outDir'/>/physical/<xsl:value-of select="@path"/>.html</xsl:attribute>
- <xsl:element name="param">
- <xsl:attribute name="key">objectName</xsl:attribute>
- <xsl:attribute name="value"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">rootPath</xsl:attribute>
- <xsl:attribute name="value"></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">navSection</xsl:attribute>
- <xsl:attribute name="value">module</xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="key">trueRootPath</xsl:attribute>
- <xsl:attribute name="value">../<xsl:call-template name="dotdot">
- <xsl:with-param name="arg" select="comment/name" />
- <xsl:with-param name="sep" select="'.'"/>
- </xsl:call-template>
- </xsl:attribute>
- </xsl:element>
- </xsl:element>
- </xsl:for-each>
- </xsl:element>
-
-
- <!--
- <xsl:for-each select="/jgdoc/items/file">
- <xsl:element name="xslt">
- <xsl:attribute name="style"><xsl:value-of select="$skinDir"/>/xslt/detail.xslt</xsl:attribute>
- <xsl:attribute name="in"><xsl:value-of select='$outDir'/>/<xsl:value-of select="$projectFile"/></xsl:attribute>
- <xsl:attribute name="out"><xsl:value-of select='$outDir'/>/physical/<xsl:value-of select="@path"/>.html</xsl:attribute>
-
- <xsl:element name="param">
- <xsl:attribute name="name">objectName</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">rootPath</xsl:attribute>
- <xsl:attribute name="expression"></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">trueRootPath</xsl:attribute>
- <xsl:attribute name="expression">../<xsl:call-template name="dotdot">
- <xsl:with-param name="arg" select="comment/name" />
- <xsl:with-param name="sep" select="'/'"/>
- </xsl:call-template></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">version</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_version"/></xsl:attribute>
- </xsl:element>
- <xsl:if test="$aux_css != 'not_specified'">
- <xsl:element name="param">
- <xsl:attribute name="name">aux_css</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$aux_css"/></xsl:attribute>
- </xsl:element>
- </xsl:if>
- <xsl:element name="param">
- <xsl:attribute name="name">projectName</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectName"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">projectDesc</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectDesc"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">navSection</xsl:attribute>
- <xsl:attribute name="expression">file</xsl:attribute>
- </xsl:element>
- </xsl:element>
- </xsl:for-each>
-
- <xsl:for-each select="/jgdoc/items/module">
- <xsl:element name="xslt">
- <xsl:attribute name="style"><xsl:value-of select="$skinDir"/>/xslt/detail.xslt</xsl:attribute>
- <xsl:attribute name="in"><xsl:value-of select='$outDir'/>/<xsl:value-of select="$projectFile"/></xsl:attribute>
- <xsl:attribute name="out"><xsl:value-of select='$outDir'/>/physical/<xsl:value-of select="@path"/>.html</xsl:attribute>
-
- <xsl:element name="param">
- <xsl:attribute name="name">objectName</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="@id"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">rootPath</xsl:attribute>
- <xsl:attribute name="expression"></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">trueRootPath</xsl:attribute>
- <xsl:attribute name="expression">../<xsl:call-template name="dotdot">
- <xsl:with-param name="arg" select="comment/name" />
- <xsl:with-param name="sep" select="'.'"/>
- </xsl:call-template></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">version</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_version"/></xsl:attribute>
- </xsl:element>
- <xsl:if test="$aux_css != 'not_specified'">
- <xsl:element name="param">
- <xsl:attribute name="name">aux_css</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$aux_css"/></xsl:attribute>
- </xsl:element>
- </xsl:if>
- <xsl:element name="param">
- <xsl:attribute name="name">projectName</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectName"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">projectDesc</xsl:attribute>
- <xsl:attribute name="expression"><xsl:value-of select="$_projectDesc"/></xsl:attribute>
- </xsl:element>
- <xsl:element name="param">
- <xsl:attribute name="name">navSection</xsl:attribute>
- <xsl:attribute name="expression">module</xsl:attribute>
- </xsl:element>
- </xsl:element>
- </xsl:for-each>
- -->
-
- </xsl:element>
- </xsl:element>
-
- </xsl:template>
-</xsl:stylesheet>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/xslt/detail.xslt b/buildscripts/jGrouseDoc/skins/noframes/xslt/detail.xslt
deleted file mode 100644
index b5fc4ca1..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/xslt/detail.xslt
+++ /dev/null
@@ -1,360 +0,0 @@
-<!--
- jGrouseDoc template file.
- Creates content for top-left frame with all namespaces
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: detail.xslt 339 2008-01-21 00:21:30Z denis.riabtchik $
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:param name='rootPath' />
- <xsl:param name='trueRootPath' />
- <xsl:param name="projectDesc"/>
- <xsl:param name="projectName"/>
- <xsl:param name='version'/>
- <xsl:param name='objectName' />
- <xsl:param name='aux_css'>not_specified</xsl:param>
- <xsl:param name="navSection"/>
-
- <xsl:output method='HTML' doctype-public="-//W3C//DTD HTML 4.01//EN"
- doctype-system="http://www.w3.org/TR/html4/strict.dtd">
-
- </xsl:output>
- <xsl:import href="../../common/xslt/common.xslt"/>
- <xsl:import href="nfcommon.xslt"/>
-
-
- <xsl:template match="/jgdoc/items/*">
- <xsl:variable name="objType"><xsl:value-of select="name()"/></xsl:variable>
- <div>
- <xsl:apply-templates select="comment/srcUrl" mode="writeDetails1"/>
- <H2>
- <span class="objType">
- <xsl:choose>
- <xsl:when test="$objType = 'namespace'">Namespace </xsl:when>
- <xsl:when test="$objType = 'class'">Class </xsl:when>
- <xsl:when test="$objType = 'struct'">Structure </xsl:when>
- <xsl:when test="$objType = 'interface'">Interface </xsl:when>
- <xsl:when test="$objType = 'object'">Object </xsl:when>
- </xsl:choose>
- </span>
- <xsl:value-of
- select="comment/name" />
- </H2>
- <xsl:if test="($objType = 'class') or ($objType = 'interface')">
- <xsl:if test="count(comment/extends) > 0">
- <div class="extends">
- <span class="descSection">Extends </span>
- <xsl:for-each select="comment/extends/tagContent">
- <xsl:if test="position() > 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:apply-templates select="content"/>
- </xsl:for-each>
- </div>
- </xsl:if>
- </xsl:if>
- <xsl:if test="($objType = 'class')">
- <xsl:if test="count(comment/implements) > 0">
- <div class="implements">
- <span class="descSection">Implements </span>
- <xsl:for-each select="comment/implements/tagContent">
- <xsl:if test="position() > 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:apply-templates select="content"/>
- </xsl:for-each>
- </div>
- </xsl:if>
- </xsl:if>
-
- <xsl:if test="count(/jgdoc/items/*[(name() = 'class' or name() = 'interface') and comment/extends/tagContent[@name=$objectName]]) != 0">
- <div class="subclasses">
- <div class="descSection">
- <xsl:if test="name() = 'class'">Direct Known Subclasses:</xsl:if>
- <xsl:if test="name() = 'interface'">All Known Subinterfaces:</xsl:if>
- </div>
- <div class="paddedDetails">
- <xsl:for-each select="/jgdoc/items/*[comment/extends/tagContent[@name=$objectName]]">
- <xsl:if test="position() > 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="@id"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <span><xsl:value-of select="@id"/></span>
- </xsl:element>
- </xsl:for-each>
- </div>
- </div>
- </xsl:if>
-
- <xsl:if test="count(/jgdoc/items/class[comment/implements/tagContent[@name=$objectName]]) != 0">
- <div>
- <div>
- All Known Implementing Classes:
- </div>
- <div>
- <xsl:for-each select="/jgdoc/items/class[comment/implements/tagContent[@name=$objectName]]">
- <xsl:if test="position() > 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:call-template name="writeLink">
- <xsl:with-param name="refName"><xsl:value-of select="@id"/></xsl:with-param>
- </xsl:call-template>
- </xsl:attribute>
- <span><xsl:value-of select="@id"/></span>
- </xsl:element>
- </xsl:for-each>
- </div>
- </div>
- </xsl:if>
-
-
- <hr/>
- <!-- description -->
- <div>
- <code>
- <span class="modifiers"><xsl:value-of select="comment/modifiers/@name"/></span>
- <xsl:text> </xsl:text>
- <span class="objType"><xsl:value-of select="$objType"/></span>
- <xsl:text> </xsl:text>
- <b><xsl:value-of select="comment/name"/></b>
- </code>
- </div>
- <xsl:for-each
- select='comment/commentContent/content'>
- <div class="comment">
- <xsl:apply-templates select='.'/>
- </div>
- </xsl:for-each>
- <xsl:apply-templates select="comment" mode="genCommonAttrs" />
- <xsl:for-each select="/jgdoc/items/*[@id=$objectName and @physOwner != '']">
- <span class="definedIn">Defined in </span>
- <xsl:element name='a'>
- <xsl:attribute name='href'>
- <xsl:value-of select="$rootPath"/>physical/<xsl:value-of select="/jgdoc/items/*[@id=/jgdoc/items/*[@id=$objectName]/@physOwner]/@path"/>.html</xsl:attribute>
- <xsl:value-of select='/jgdoc/items/*[@id=/jgdoc/items/*[@id=$objectName]/@physOwner]/comment/name'/>
- </xsl:element>
- </xsl:for-each>
- <hr/>
- <p />
-
- <xsl:variable name="nested"><xsl:if test="@elementType = 'logical_container' and name() != 'namespace'">Nested</xsl:if></xsl:variable>
-
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">class</xsl:with-param>
- <xsl:with-param name="elementName"><xsl:value-of select="$nested"/> Class</xsl:with-param>
- </xsl:apply-templates>
-
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">interface</xsl:with-param>
- <xsl:with-param name="elementName"><xsl:value-of select="$nested"/> Interface</xsl:with-param>
- </xsl:apply-templates>
-
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">object</xsl:with-param>
- <xsl:with-param name="elementName"><xsl:value-of select="$nested"/> Object</xsl:with-param>
- </xsl:apply-templates>
-
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">struct</xsl:with-param>
- <xsl:with-param name="elementName"><xsl:value-of select="$nested"/> Structure</xsl:with-param>
- </xsl:apply-templates>
-
-
- <!-- Variables -->
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">variable</xsl:with-param>
- <xsl:with-param name="elementName">Variable</xsl:with-param>
- </xsl:apply-templates>
-
-
- <xsl:apply-templates select="legacies" mode="inheritance">
- <xsl:with-param name="memberName">Variables</xsl:with-param>
- <xsl:with-param name="memberType">variable</xsl:with-param>
- </xsl:apply-templates>
-
-
- <!-- properties -->
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">property</xsl:with-param>
- <xsl:with-param name="elementName">Property</xsl:with-param>
- </xsl:apply-templates>
-
-
- <xsl:apply-templates select="legacies" mode="inheritance">
- <xsl:with-param name="memberName">Properties</xsl:with-param>
- <xsl:with-param name="memberType">property</xsl:with-param>
- </xsl:apply-templates>
-
-
-
- <!-- Constructors -->
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">constructor</xsl:with-param>
- <xsl:with-param name="elementName">Constructor</xsl:with-param>
- </xsl:apply-templates>
-
- <!-- Functions -->
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">function</xsl:with-param>
- <xsl:with-param name="elementName">Function</xsl:with-param>
- </xsl:apply-templates>
-
- <!-- Events -->
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">event</xsl:with-param>
- <xsl:with-param name="elementName">Event</xsl:with-param>
- </xsl:apply-templates>
-
- <xsl:apply-templates select="legacies" mode="inheritance">
- <xsl:with-param name="memberName">Functions</xsl:with-param>
- <xsl:with-param name="memberType">function</xsl:with-param>
- </xsl:apply-templates>
-
-
- <!-- Function interfaces -->
- <xsl:apply-templates select="children" mode="writeSummary">
- <xsl:with-param name="elementType">ifunction</xsl:with-param>
- <xsl:with-param name="elementName">Function Interface</xsl:with-param>
- </xsl:apply-templates>
-
- <!-- ============== Details coming here =================== -->
-
- <!-- variables -->
- <xsl:call-template name="writeDetails">
- <xsl:with-param name="memberName">Variable</xsl:with-param>
- <xsl:with-param name="memberType">variable</xsl:with-param>
- <xsl:with-param name="objectName"><xsl:value-of select="$objectName"/></xsl:with-param>
- </xsl:call-template>
-
- <!-- properties -->
- <xsl:call-template name="writeDetails">
- <xsl:with-param name="memberName">Property</xsl:with-param>
- <xsl:with-param name="memberType">property</xsl:with-param>
- <xsl:with-param name="objectName"><xsl:value-of select="$objectName"/></xsl:with-param>
- </xsl:call-template>
-
-
- <!-- constructors -->
- <xsl:call-template name="writeDetails">
- <xsl:with-param name="memberName">Constructor</xsl:with-param>
- <xsl:with-param name="memberType">constructor</xsl:with-param>
- <xsl:with-param name="objectName"><xsl:value-of select="$objectName"/></xsl:with-param>
- </xsl:call-template>
-
- <!-- functions -->
- <xsl:call-template name="writeDetails">
- <xsl:with-param name="memberName">Function</xsl:with-param>
- <xsl:with-param name="memberType">function</xsl:with-param>
- <xsl:with-param name="objectName"><xsl:value-of select="$objectName"/></xsl:with-param>
- </xsl:call-template>
-
- <!-- events -->
- <xsl:call-template name="writeDetails">
- <xsl:with-param name="memberName">Event</xsl:with-param>
- <xsl:with-param name="memberType">event</xsl:with-param>
- <xsl:with-param name="objectName"><xsl:value-of select="$objectName"/></xsl:with-param>
- </xsl:call-template>
-
- <!-- function interfaces -->
- <xsl:call-template name="writeDetails">
- <xsl:with-param name="memberName">Function Interface</xsl:with-param>
- <xsl:with-param name="memberType">ifunction</xsl:with-param>
- <xsl:with-param name="objectName"><xsl:value-of select="$objectName"/></xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
-
-
- <xsl:template match="/">
- <xsl:comment>Generated by jGrouseDoc</xsl:comment>
- <html>
- <head>
- <title><xsl:value-of select="$projectName"/></title>
- <script>
-
- (function()
- {
- var loc = window.location.protocol + '//' + window.location.hostname + window.location.pathname;
- loc = loc.split('\\');
- loc = loc.join('/');
- loc = loc.split('/');
- loc.pop();
- loc = loc.join('/');
- loc += '/' + '<xsl:value-of select="$trueRootPath"/>';
-
- document.write("&lt;base href='" + loc + "'&gt;&lt;/base&gt;");
- })();
-
- </script>
-
- <xsl:call-template name="writeCss">
- <xsl:with-param name="rootPath"></xsl:with-param>
- <xsl:with-param name="aux_css"><xsl:value-of select="$aux_css"/></xsl:with-param>
- </xsl:call-template>
- <script type="text/javascript" src="navTree.js"></script>
- <script type="text/javascript" src="jgdoc.js"></script>
- </head>
- <body>
- <div class="startup" id="startup">
- <div class="banner" id="banner">
- <h1 class="projectName">
- <xsl:element name="a">
- <xsl:attribute name="href">.</xsl:attribute>
- <xsl:value-of select="$projectName"/>
- </xsl:element>
- </h1>
- <div class="bar">
- version <xsl:value-of select="$version"/>
- </div>
- </div>
- <div class="content" id="docContent">
- <div class="block">
- <div id="searchBlock">
- <div class="search" >
- <div class="searchLabel">Search:</div>
- <div class="searchBlock" style="height:100%">
- <input id="jgsSearchString" type="text" size="60" class="jgdSearchString"/>
- <div id="jgsSearchPanel" class="jgsSearchPanel" style="display:none">
- <div class="jgdSearchRect" >
- <div id="jgsSearchResults">
- Loading....
- </div>
- </div>
- <div id="jgsInfo" class="jgsInfo" >No selection</div>
- </div>
- </div>
- </div>
- </div>
- <div id="docScroll" class="docScroll">
- <div>
- <hr/>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$objectName]"/>
- </div>
- </div>
- </div>
- </div>
- <xsl:call-template name="navigationPane">
- <xsl:with-param name="elementType"><xsl:value-of select="$navSection"/></xsl:with-param>
- </xsl:call-template>
- </div>
- </body>
- <script type="text/javascript">
- jgdoc.Searcher.start();
- jgdoc.NavTree.initialize('<xsl:value-of select="$objectName"/>');
- </script>
- <script type="text/javascript" src="jsindex.js">
- </script>
- </html>
- </xsl:template>
-
-
-
-</xsl:stylesheet>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/xslt/jgsearch.xslt b/buildscripts/jGrouseDoc/skins/noframes/xslt/jgsearch.xslt
deleted file mode 100644
index a8766ff0..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/xslt/jgsearch.xslt
+++ /dev/null
@@ -1,51 +0,0 @@
-<!--
- jGrouseDoc template file. Renders search pane
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: jgsearch.xslt 276 2007-12-09 00:50:40Z denis.riabtchik $
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:param name='rootPath' />
- <xsl:param name="projectDesc"/>
- <xsl:param name='version'/>
- <xsl:param name='aux_css'>not_specified</xsl:param>
-
- <xsl:output method='HTML' doctype-public="-//W3C//DTD HTML 4.01//EN"
- doctype-system="http://www.w3.org/TR/html4/strict.dtd">
-
- </xsl:output>
- <xsl:import href="../../common/xslt/common.xslt"/>
-
- <xsl:template match="/">
- <xsl:comment>Generated by jGrouseDoc</xsl:comment>
-
- <html>
- <head>
- <xsl:call-template name="writeCss">
- <xsl:with-param name="rootPath"><xsl:value-of select="$rootPath"/></xsl:with-param>
- <xsl:with-param name="aux_css"><xsl:value-of select="$aux_css"/></xsl:with-param>
- </xsl:call-template>
- <script type="text/javascript" src="jgdoc.js">
- </script>
- </head>
- <body>
- <div class="search">
- <h1>Search</h1>
- <input id="jgsSearchString" type="text" class="jgdSearchString"/>
- <div class="jgdSearchRect" >
- <div id="jgsSearchResults">
- Loading....
- </div>
- </div>
- <div id="jgsInfo" class="jgsInfo" ></div>
- </div>
- </body>
- <script type="text/javascript">
- jgdoc.Searcher.start();
- </script>
- <script type="text/javascript" src="jsindex.js">
- </script>
- </html>
- </xsl:template>
-</xsl:stylesheet>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/xslt/jsindex.xslt b/buildscripts/jGrouseDoc/skins/noframes/xslt/jsindex.xslt
deleted file mode 100644
index bddc7a42..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/xslt/jsindex.xslt
+++ /dev/null
@@ -1,124 +0,0 @@
-<!--
- jGrouseDoc template file. Creates Javascript index
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: jsindex.xslt 276 2007-12-09 00:50:40Z denis.riabtchik $
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:param name='fileName' />
- <xsl:param name='rootPath' />
- <xsl:param name='version'/>
- <xsl:param name='aux_css'>not_specified</xsl:param>
-
- <xsl:output method='text'>
- </xsl:output>
- <xsl:import href="../../common/xslt/common.xslt"/>
-
- <xsl:template match="function|constructor|ifunction|event" mode="JSwriteSummary">
- <xsl:choose>
- <xsl:when test="count(comment/inheritdesc) != 0">
- <xsl:variable name="fn"><xsl:value-of select="comment/inheritdesc/tagContent/@name"/></xsl:variable>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$fn]" mode="JSwriteFuncSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="comment/modifiers/@name"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="JSwriteFuncSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- <xsl:with-param name="modifiers"><xsl:value-of select="comment/modifiers/@name"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="function|constructor|ifunction|event" mode="JSwriteFuncSummary1">
- <xsl:param name="origName"/>
- <xsl:param name="modifiers"/>
- <xsl:value-of select="name()"/><xsl:text> </xsl:text>
- <xsl:choose>
- <xsl:when test="count(comment/paramSet) != 0">
- <xsl:for-each select="comment/paramSet"><xsl:if test="position() != 1"><xsl:text>\n</xsl:text></xsl:if><xsl:if test="string-length($modifiers) != 0">
- <xsl:value-of select="$modifiers"/><xsl:text> </xsl:text>
- </xsl:if>
- <xsl:if test="count(../../comment/type) != 0">
- <xsl:apply-templates select="../../comment/type"/>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:value-of select="../../@localName"/>
- <xsl:call-template name="writeFunctionParams">
- <xsl:with-param name="funcName"><xsl:value-of select="../../@id"/></xsl:with-param>
- <xsl:with-param name="paramSetCount"><xsl:value-of select="position()"/></xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="string-length($modifiers) != 0">
- <xsl:value-of select="$modifiers"/>
- <xsl:text> </xsl:text></xsl:if>
- <xsl:if test="count(comment/type) != 0">
- <xsl:apply-templates select="comment/type"/>
- <xsl:text> </xsl:text></xsl:if><xsl:value-of select="@localName"/>()</xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="class|namespace|struct|interface|object" mode="JSwriteSummary">
- <xsl:if test="count(comment/modifiers) != 0"><xsl:value-of select="comment/modifiers/@name"/><xsl:text> </xsl:text></xsl:if>
- <xsl:value-of select="name()"/><xsl:text> </xsl:text>
- <xsl:value-of select="@localName"/>
- </xsl:template>
-
-
- <xsl:template match="variable|property" mode="JSwriteSummary">
- <xsl:choose>
- <xsl:when test="count(comment/inheritdesc) != 0">
- <xsl:variable name="fn"><xsl:value-of select="comment/inheritdesc/tagContent/@name"/></xsl:variable>
- <xsl:apply-templates select="/jgdoc/items/*[@id=$fn]" mode="JSwriteVarSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="JSwriteVarSummary1">
- <xsl:with-param name="origName"><xsl:value-of select="@id"/></xsl:with-param>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="variable|property" mode="JSwriteVarSummary1">
- <xsl:param name="origName"/>
- <xsl:value-of select="name()"/><xsl:text> </xsl:text>
- <xsl:if test="count(comment/type) != 0">
- <xsl:apply-templates select="comment/type"/>
- <xsl:text> </xsl:text></xsl:if>
- <xsl:value-of select="@localName" />
- </xsl:template>
-
-
-
- <xsl:template match="/">
-/*Generated by jGrouseDoc*/
-(function()
-{
- var data = [<xsl:for-each select="/jgdoc/items/*[@elementType != 'phys_container']//comment"><xsl:sort select="@localName"/><xsl:if test="position() != 1">,</xsl:if>
- <xsl:call-template name="writeJS"/>
- </xsl:for-each>];
- jgdoc.setData(data);
-
-})()
- </xsl:template>
-
- <xsl:template name="writeJS">
- {
- localName : "<xsl:value-of select="../@localName"/>",
- fullName : "<xsl:value-of select="../@id"/>",
- summary : "<xsl:apply-templates select=".." mode="JSwriteSummary"/>",
- ref : "<xsl:call-template name="writeLink"><xsl:with-param name="refName"><xsl:value-of select="../@id"/></xsl:with-param></xsl:call-template>",
- parent : "<xsl:value-of select="../@parentName"/>",
- type : "<xsl:value-of select="name(..)"/>",
- elementType : "<xsl:value-of select="../@elementType"/>"
-
- }
- </xsl:template>
-</xsl:stylesheet>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/xslt/nfcommon.xslt b/buildscripts/jGrouseDoc/skins/noframes/xslt/nfcommon.xslt
deleted file mode 100644
index 16759432..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/xslt/nfcommon.xslt
+++ /dev/null
@@ -1,98 +0,0 @@
-<!--
- jGrouseDoc template file. Renders search pane
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: nfcommon.xslt 276 2007-12-09 00:50:40Z denis.riabtchik $
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:template name="navigationPane">
- <xsl:param name="elementType"/>
- <div class="navigation" id="navigation">
- <xsl:element name="ul">
- <xsl:if test="$elementType = 'logical'">
- <xsl:attribute name="class">navContent</xsl:attribute>
- </xsl:if>
- <xsl:if test="$elementType != 'logical'">
- <xsl:attribute name="class">navContent closed</xsl:attribute>
- </xsl:if>
- <li>
- <div class="navTree">
- <h2 onclick="jgdoc.NavPanel.clicked(event)">
- <a href="javascript:jgdoc.NavPanel.dummy()">Navigation</a></h2>
- <ul class="navContent2">
- <li>
- <div>
- <a class="openAll" href="javascript:jgdoc.NavTree.onOpenAll()">Open All</a>
- <a class="closeAll" href="javascript:jgdoc.NavTree.onCloseAll()">Close All</a>
- </div>
-
- <div>
- <ul id = "content" class="contents">
- Loading...
- </ul>
- </div>
- </li>
- </ul>
- </div>
- </li>
- </xsl:element>
- <xsl:element name="ul">
- <xsl:if test="$elementType = 'file'">
- <xsl:attribute name="class">navContent</xsl:attribute>
- </xsl:if>
- <xsl:if test="$elementType != 'file'">
- <xsl:attribute name="class">navContent closed</xsl:attribute>
- </xsl:if>
- <li>
- <div class="fileTree">
- <h2 onclick="jgdoc.NavPanel.clicked(event)">
- <a href="javascript:jgdoc.NavPanel.dummy()">Files</a></h2>
- <ul class="navContent2">
- <li>
- <xsl:for-each select="/jgdoc/items/file[@isModuleFile='false']">
- <xsl:sort select="@id"/>
- <div>
- <xsl:element name="a">
- <xsl:attribute name="href">physical/<xsl:value-of select="@path"/>.html</xsl:attribute>
- <xsl:value-of select="comment/name"/>
- </xsl:element>
- </div>
- </xsl:for-each>
- </li>
- </ul>
- </div>
- </li>
- </xsl:element>
- <xsl:element name="ul">
- <xsl:if test="$elementType = 'module'">
- <xsl:attribute name="class">navContent</xsl:attribute>
- </xsl:if>
- <xsl:if test="$elementType != 'module'">
- <xsl:attribute name="class">navContent closed</xsl:attribute>
- </xsl:if>
- <li>
- <div class="moduleTree">
- <h2 onclick="jgdoc.NavPanel.clicked(event)">
- <a href="javascript:jgdoc.NavPanel.dummy()">Modules</a></h2>
- <ul class="navContent2">
- <li>
- <xsl:for-each select="/jgdoc/items/module">
- <xsl:sort select="@id"/>
- <div>
- <xsl:element name="a">
- <xsl:attribute name="href">physical/<xsl:value-of select="@path"/>.html</xsl:attribute>
- <xsl:value-of select="comment/name"/>
- </xsl:element>
- </div>
- </xsl:for-each>
- </li>
- </ul>
- </div>
- </li>
- </xsl:element>
- </div>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/buildscripts/jGrouseDoc/skins/noframes/xslt/startup.xslt b/buildscripts/jGrouseDoc/skins/noframes/xslt/startup.xslt
deleted file mode 100644
index f751561a..00000000
--- a/buildscripts/jGrouseDoc/skins/noframes/xslt/startup.xslt
+++ /dev/null
@@ -1,99 +0,0 @@
-<!--
- jGrouseDoc template file.
- Creates content for top-left frame with all namespaces
- @Copyright (c) 2007 by Denis Riabtchik. All rights reserved. See license.txt and http://jgrouse.com for details@
- $Id: startup.xslt 276 2007-12-09 00:50:40Z denis.riabtchik $
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:param name='rootPath' />
- <xsl:param name="projectDesc"/>
- <xsl:param name="projectName"/>
- <xsl:param name='version'/>
- <xsl:param name='aux_css'>not_specified</xsl:param>
-
- <xsl:output method='HTML' doctype-public="-//W3C//DTD HTML 4.01//EN"
- doctype-system="http://www.w3.org/TR/html4/strict.dtd">
-
- </xsl:output>
- <xsl:import href="../../common/xslt/common.xslt"/>
- <xsl:import href="nfcommon.xslt"/>
-
- <xsl:template match="/">
- <xsl:comment>Generated by jGrouseDoc</xsl:comment>
- <html>
- <head>
- <xsl:call-template name="writeCss">
- <xsl:with-param name="rootPath"><xsl:value-of select="$rootPath"/></xsl:with-param>
- <xsl:with-param name="aux_css"><xsl:value-of select="$aux_css"/></xsl:with-param>
- </xsl:call-template>
- <script type="text/javascript" src="navTree.js"></script>
- <script type="text/javascript" src="jgdoc.js"></script>
- <title><xsl:value-of select="$projectName"/></title>
- </head>
- <body>
- <div class="startup" id="startup">
- <div class="banner" id="banner">
- <h1 class="projectName">
- <xsl:element name="a">
- <xsl:attribute name="href">.</xsl:attribute>
- <xsl:attribute name="class">banner</xsl:attribute>
- <xsl:value-of select="$projectName"/>
- </xsl:element>
- </h1>
- <div class="bar">
- version <xsl:value-of select="$version"/>
- </div>
- </div>
- <div class="content" id="docContent">
- <div class="block">
- <div class="search" id="searchBlock">
- <div class="searchLabel">Search:</div>
- <div class="searchBlock">
- <input id="jgsSearchString" type="text" size="60" class="jgdSearchString"/>
- <div id="jgsSearchPanel" class="jgsSearchPanel" style="display:none">
- <div class="jgdSearchRect" >
- <div id="jgsSearchResults">
- Loading....
- </div>
- </div>
- <div id="jgsInfo" class="jgsInfo" >No selection</div>
- </div>
- </div>
- </div>
- <div id="docScroll" class="docScroll">
- <div>
- <hr/>
- <xsl:if test="count(/jgdoc/project) != 0">
- <div class="projectDesc">
- <a name="desc"></a><br/>
- <xsl:if test="string-length($projectDesc) != 0">
- <h1><xsl:value-of select="$projectDesc"/></h1>
- </xsl:if>
- <xsl:apply-templates select='/jgdoc/project/comment/commentContent/content'/>
- <p />
- <xsl:apply-templates select="/jgdoc/project/comment" mode="genCommonAttrs" />
- </div>
- </xsl:if>
- </div>
- </div>
- </div>
- </div>
- <xsl:call-template name="navigationPane">
- <xsl:with-param name="elementType">logical</xsl:with-param>
- </xsl:call-template>
- </div>
- </body>
- <script type="text/javascript">
- jgdoc.Searcher.start();
- jgdoc.NavTree.initialize('GLOBAL');
- </script>
- <script type="text/javascript" src="jsindex.js">
- </script>
- </html>
- </xsl:template>
-
-
-
-</xsl:stylesheet>
diff --git a/buildscripts/jGrouseDoc/themes/prado/build.xml b/buildscripts/jGrouseDoc/themes/prado/build.xml
deleted file mode 100644
index 80b31b40..00000000
--- a/buildscripts/jGrouseDoc/themes/prado/build.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="prado theme" default="applyJGrouseDoc">
-
- <target name="applyJGrouseDoc">
- <echo>Applying simple theme</echo>
- <copy todir="${outputDir}">
- <fileset dir="${jGrouseHome}/themes/prado/css" includes="*.css"></fileset>
- </copy>
- </target>
-</project>
diff --git a/buildscripts/jGrouseDoc/themes/prado/css/theme.css b/buildscripts/jGrouseDoc/themes/prado/css/theme.css
deleted file mode 100644
index 8fffb79e..00000000
--- a/buildscripts/jGrouseDoc/themes/prado/css/theme.css
+++ /dev/null
@@ -1,99 +0,0 @@
-body {
- margin:10px;
- padding:0px;
-}
-body,div,span,p,input {
- color:#333333;
- font-family:Verdana,sans-serif,Arial;
- font-size: 10pt;
-}
-h1, h2, h3, h4 {
- color:#821B18;
- font-family:Verdana,Helvetica,Arial,Lucida Grande,Trebuchet MS;
- font-weight:normal;
- margin:0px 0px 10px;
- padding:0px;
-}
-
-a, a span {
- color:#CD2C27;
- text-decoration:none;
-}
-a:hover {
- color:#821B18;
- text-decoration:underline;
-}
-
-hr{
- border: 0px;
- border-top: solid 1px silver;
- border-bottom: solid 1px #fff;
-}
-
-.banner { display: none }
-
-.comment {
- background-color:#F0F0F0;
- margin-bottom:5px;
- margin-top:10px;
- padding:1em 8px;
-}
-
-.summaryTable, .details {
- margin-top: .5em;
- border: 1px solid silver;
- font-size: 1em;
-}
-.summaryTableHeader, .details .sectionHeader {
- border: 0;
- background-color:#F0F0F0;
- font-size:1.2em;
- font-weight:bold;
- padding:5px;
- text-align:left;
-}
-.summaryTable .summaryItem {
- padding: .25em;
- border-top: 1px solid silver;
-}
-.summaryTable .summaryItemDef {
- font-family: "courier new", courier;
-}
-.summaryTable .summaryItemDesc {
- margin-top: .25em;
-}
-
-.details .comment {
- background-color: #fff;
-}
-
-.details h3, .details div code {
- margin-top: .25em;
- padding: .25em;
-}
-.details h3 a span {
- font-size: 18px;
- color:#750000;
-}
-.details div code {
- color: #000;
- font-weight: bold;
-}
-.details div code span {
- font-weight: normal;
-}
-
-.details .returns, .details .parameters {
- border: 1px solid silver;
- margin: .5em;
-}
-.details .returns br, .details .parameters br, .details h3 a span.objType {
- display: none;
-}
-.details .returns .descSection, .details .parameters .descSection {
- display: block;
- border-bottom: 1px solid silver;
- background-color:#F0F0F0;
- padding: .25em;
-}
- \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/themes/sample/build.xml b/buildscripts/jGrouseDoc/themes/sample/build.xml
deleted file mode 100644
index 9e029fe5..00000000
--- a/buildscripts/jGrouseDoc/themes/sample/build.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="sample theme" default="applyJGrouseDoc">
-
- <target name="applyJGrouseDoc">
- <echo>Applying sample theme</echo>
- <copy todir="${outputDir}" overwrite="yes">
- <fileset dir="${jGrouseHome}/themes/sample/css" includes="*.css"></fileset>
- </copy>
- <copy todir="${outputDir}" overwrite="yes">
- <fileset dir="${jGrouseHome}/themes/sample/img" includes="*"></fileset>
- </copy>
- </target>
-</project>
diff --git a/buildscripts/jGrouseDoc/themes/sample/css/theme.css b/buildscripts/jGrouseDoc/themes/sample/css/theme.css
deleted file mode 100644
index 7a1484e5..00000000
--- a/buildscripts/jGrouseDoc/themes/sample/css/theme.css
+++ /dev/null
@@ -1,122 +0,0 @@
-/*--------- sample theme --------------*/
-
-body {
- font-family: sans-serif;
- font-size: 0.9em;
-}
-
-code {
- font-size: 1.1em;
-}
-
-a:link, a:visited
-{
- color: blue;
-}
-
-
-a:hover {
- text-decoration: underline;
-}
-
-a[name]:hover {
- text-decoration: none;
-}
-
-
-hr {
- border: 1px;
- background-color: #D0D0D0;
-}
-
-.summaryTable {
- border: medium none;
- margin-top: 0.5em;
-}
-
-.summaryTableHeader {
- background-color: #66CCCC;
- font-size: 1.3em;
-}
-
-.summaryTable .summaryItem {
- border : none;
- border-bottom: 1px solid;
- border-color: #d0d0d0;
- padding-top: 0.3em;
-}
-
-.summaryTable .summaryItemRef
-{
- font-weight: normal;
-}
-
-
-.summaryTable .inheritanceSummary
-{
- border: none;
-}
-
-.sectionHeader {
- background-color: #66CCCC;
- border: medium none;
- font-size: 1.3em;
-}
-
-.elementName {
- font-weight: normal;
-}
-
-.paddedDetails {
- font-size: 0.9em;
-}
-
-.paddedDetails code {
- font-weight: bolder;
-}
-
-.type
-{
- color: green;
- font-weight: bolder;
-}
-
-.modifiers
-{
- color: purple;
-}
-
-.logicalDetail .summaryTable
-{
- display: inherit;
-}
-
-.navbaritem
-{
- background-color: #66CCCC;
-}
-
-.navbaritem a
-{
- background-color: #66CCCC;
- color: black;
- text-decoration: underline;
-}
-
-/** this is to show how to hide parent names */
-.overview .parent
-{
- /*display: none;*/
-}
-
-a.searchItem
-{
- color: black;
-}
-
-a.jgdSelectedItem.searchItem
-{
- color: white;
- text-decoration: none;
-}
-
diff --git a/buildscripts/jGrouseDoc/themes/sample/img/closed.gif b/buildscripts/jGrouseDoc/themes/sample/img/closed.gif
deleted file mode 100644
index 1fe701b8..00000000
--- a/buildscripts/jGrouseDoc/themes/sample/img/closed.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/themes/sample/img/closedLarge.gif b/buildscripts/jGrouseDoc/themes/sample/img/closedLarge.gif
deleted file mode 100644
index c136e65d..00000000
--- a/buildscripts/jGrouseDoc/themes/sample/img/closedLarge.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/themes/sample/img/node.gif b/buildscripts/jGrouseDoc/themes/sample/img/node.gif
deleted file mode 100644
index e823455d..00000000
--- a/buildscripts/jGrouseDoc/themes/sample/img/node.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/themes/sample/img/open.gif b/buildscripts/jGrouseDoc/themes/sample/img/open.gif
deleted file mode 100644
index eee77bda..00000000
--- a/buildscripts/jGrouseDoc/themes/sample/img/open.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/themes/sample/img/openLarge.gif b/buildscripts/jGrouseDoc/themes/sample/img/openLarge.gif
deleted file mode 100644
index a23ed9ba..00000000
--- a/buildscripts/jGrouseDoc/themes/sample/img/openLarge.gif
+++ /dev/null
Binary files differ
diff --git a/buildscripts/jGrouseDoc/themes/simple/build.xml b/buildscripts/jGrouseDoc/themes/simple/build.xml
deleted file mode 100644
index c4c8f57f..00000000
--- a/buildscripts/jGrouseDoc/themes/simple/build.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="sample theme" default="applyJGrouseDoc">
-
- <target name="applyJGrouseDoc">
- <echo>Applying simple theme</echo>
- <copy todir="${outputDir}">
- <fileset dir="${jGrouseHome}/themes/simple/css" includes="*.css"></fileset>
- </copy>
- </target>
-</project>
diff --git a/buildscripts/jGrouseDoc/themes/simple/css/theme.css b/buildscripts/jGrouseDoc/themes/simple/css/theme.css
deleted file mode 100644
index 2ec9fe9b..00000000
--- a/buildscripts/jGrouseDoc/themes/simple/css/theme.css
+++ /dev/null
@@ -1 +0,0 @@
-/* empty theme */ \ No newline at end of file
diff --git a/buildscripts/jGrouseDoc/velocity-dep-1.5.jar b/buildscripts/jGrouseDoc/velocity-dep-1.5.jar
deleted file mode 100644
index be52b9a2..00000000
--- a/buildscripts/jGrouseDoc/velocity-dep-1.5.jar
+++ /dev/null
Binary files differ
diff --git a/buildscripts/phing/CHANGELOG.md b/buildscripts/phing/CHANGELOG.md
deleted file mode 100644
index f2667454..00000000
--- a/buildscripts/phing/CHANGELOG.md
+++ /dev/null
@@ -1,789 +0,0 @@
-P H I N G
-=========================
-
-
-Apr. 6, 2012 - Phing 2.4.12
----------------------------
-
- * [877] Add 'level' attribute to resolvepath task
- * [876] JslLint Task is_executable() broken
- * [874] ParallelTask.php is not PHP 5.2 compatible
- * [860] SvnBaseTask: getRecursive
- * [539] Custom build log mailer
- * [406] an ability to turn phpLint verbose ON and OFF
-
-Apr. 4, 2012 - Phing 2.4.11
----------------------------
-
- * [870] Can't find ParallelTask.php
-
-Apr. 3, 2012 - Phing 2.4.10
----------------------------
-
- * [872] ReplaceTokens can't work with '/' char
- * [870] Can't find ParallelTask.php
- * [868] Git Clone clones into wrong directory
- * [865] static call to a non-static function PhingFile.php::getTempdir()
- * [854] PropertyTask with file. Can't use a comment delimiter in the value.
- * [853] PHP Error with HttpGetTask
- * [852] Several minor errors in documentation of core tasks
- * [851] RNG grammar hasn't been updated to current version
- * [850] Typo in documentation - required attributes for project
- * [849] Symfony 2 Console Task
- * [847] Add support for RNG grammar in task XmlLint
- * [846] RNG grammar is wrong for task 'foreach'
- * [844] symlink task - overwrite not working
- * [843] "verbose" option should print fileset/filelist filenames before execution, not afterwards
- * [840] Prevent weird bugs: raise warning when a target tag contains no ending tag
- * [835] JSL-Check faulty
- * [834] ExecTask documentation has incorrect escape attribute default value
- * [833] Exec task args with special characters cannot be escaped
- * [828] SelectorUtils::matchPath matches **/._* matches dir/file._name
- * [820] Type selector should treat symlinks to directories as such
- * [790] Make it easy to add new inherited types to phing: Use addFileset instead of createFileset
- * [772] Support for filelist in UpToDateTask
- * [671] fix CvsTask documentation
- * [587] More detailed backtrace in debug mode (patch)
- * [519] Extend mail task to include attachments
- * [419] schema file for editors and validation
- * [334] Run a task on BuildException
-
-Dec. 29, 2011 - Phing 2.4.9
----------------------------
-
- * [837] PHPMDTask should check external dep in main()
- * [836] DocBlox task breaks with version 0.17.0: function getThemesPath not found
- * [831] dbdeploy undo script SQL is not formatted correctly
- * [822] rSTTask: add debug statement when creating target directory
- * [821] phingcall using a lot of memory
- * [819] Documentation for SvnUpdateTask is outdated
- * [818] [patch] Add overwrite option to Symlink task
- * [817] Adding the "trust-server-cert" option to SVN tasks
- * [816] Fix notice in SimpleTestXmlResultFormatter
- * [811] phpunitreport path fails on linux
- * [810] AvailableTask resolving symbolic links
- * [807] SVN tasks do not always show error message
- * [795] Untar : allow overwriting of newer files when extracting
- * [782] PharTask is very slow for big project
- * [776] Add waitFor task
- * [736] Incompatibility when copying from Windows to Linux on ScpTask
- * [709] talk about invalid property values
- * [697] More descriptive error messages in PharPackageTask
- * [674] Properties: global or local in tasks?
- * [653] Allow ChownTask to change only group
- * [619] verbose level in ExpandPropertiesFilter
-
-Nov. 2, 2011 - Phing 2.4.8
---------------------------
-
- * [814] Class 'PHPCPD_Log_XML' not found in /home/m/www/elvis/vendor/phpcpd/PHPCPD/Log/XML/PMD.php on line 55
- * [812] Fix PHPUnit 3.6 / PHP_CodeCoverage 1.1.0 compatibility
- * [808] Bad example for the <or> selector
- * [805] phing executable has bug in ENV/PHP_COMMAND
- * [804] PhpUnitTask overwrites autoload stack
- * [801] PhpCodeSnifferTask doesn't pass files encoding to PHP_CodeSniffer
- * [800] CoverageReportTask fails with "runtime error" on PHP 5.4.0beta1
- * [799] DbDeploy does not support pdo-dblib
- * [798] ReplaceTokensWithFile - postfix attribute ignored
- * [797] PhpLintTask performance improvement
- * [794] Fix rSTTask to avoid the need of PEAR everytime
- * [793] Corrected spelling of name
- * [792] EchoTask: Fileset support
- * [789] rSTTask unittests fix
- * [788] rSTTask documentation: fix examples
- * [787] Add pearPackageFileSet type
- * [785] method execute doesn't exists in CvsTask.php
- * [784] Refactor DocBlox task to work with DocBlox 0.14+
- * [783] SvnExportTask impossible to export current version from working copy
- * [779] phplint task error summary doesn't display the errors
- * [775] ScpTask: mis-leading error message if 'host' attribute is not set
- * [772] Support for filelist in UpToDateTask
- * [770] Keep the RelaxNG grammar in sync with the code/doc
- * [707] Writing Tasks/class properties: taskname not correctly used
- * [655] PlainPHPUnitResultFormatter does not display errors if @dataProvider was used
- * [578] [PATCH] Add mapper support to ForeachTask
- * [552] 2 validargs to input task does not display defaults correctly
-
-Aug. 19, 2011 - Phing 2.4.7.1
------------------------------
-
-This is a hotfix release.
-
- * [774] Fix PHP 5.3 dependency in CoverageReportTask
- * [773] Fix for Ticket #744 breaks PHPCodeSnifferTask's nested formatters
-
-Aug. 18, 2011 - Phing 2.4.7
----------------------------
-
-This release fixes and improves several tasks (particularly the DocBlox
-task), adds OCI/ODBC support to the dbdeploy task and introduces
-a task to render reStructuredText.
-
- * [771] Undefined offset: 1 [line 204 of /usr/share/php/phing/tasks/ext/JslLintTask.php]
- * [767] PharPackageTask: metadata should not be required
- * [766] The DocBlox task does not load the markdown library.
- * [765] CoverageReportTask incorrectly considers dead code to be unexecuted
- * [762] Gratuitous unit test failures on Windows
- * [760] SelectorUtils::matchPath() directory matching broken
- * [759] DocBloxTask throws an error when using DocBlox 0.12.2
- * [757] Grammar error in ChmodTask documentation
- * [755] PharPackageTask Web/Cli stub path is incorrect
- * [754] ExecTask: <arg> support
- * [753] ExecTask: Unit tests and refactoring
- * [752] Declaration of Win32FileSystem::compare()
- * [750] Enable process isolation support in the PHPUnit task
- * [747] Improve "can't load default task list" message
- * [745] MkdirTask mode param mistake
- * [744] PHP_CodeSniffer formatter doesn't work with summary
- * [742] ExecTask docs: link os.name in os attribute
- * [741] ExecTask: missing docs for "output", "error" and "level"
- * [740] PHPMDTask: "InvalidArgumentException" with no globbed files.
- * [739] Making the jsMin suffix optional
- * [737] PHPCPDTask: omitting 'outfile' attribute with 'useFIle="false"'
- * [735] CopyTask can't copy broken symlinks when included in fileset
- * [733] DeleteTask cannot delete dangling symlinks
- * [731] Implement filepath support in Available Task
- * [720] rSTTask to render reStructuredText
- * [658] Add support to Oracle (OCI) in DbDeployTask
- * [580] ODBC in DbDeployTask
- * [553] copy task bails on symbolic links (filemtime)
- * [499] PDO cannot handle PL/Perl function creation statements in PostgreSQL
-
-Jul. 12, 2011 - Phing 2.4.6
----------------------------
-
-This release fixes a large number of issues, improves a number of tasks
-and adds several new tasks (SVN log/list, DocBlox and LoadFile).
-
- * [732] execTask fails to chdir if the chdir parameter is a symlink to a dir
- * [730] phpunitreport: styledir not required
- * [729] CopyTask fails when todir="" does not exist
- * [725] Clarify documentation for using AvailableTask as a condition
- * [723] setIni() fails with memory_limit not set in Megabytes
- * [719] TouchTask: file not required?
- * [718] mkdir: are parent directories created?
- * [715] Fix for mail task documentation
- * [712] expectSpecificBuildException fails to detect wrong exception message
- * [708] typo in docs: "No you can set"
- * [706] Advanced task example missing
- * [705] Missing links in Writing Tasks: Summary
- * [704] Case problem in "Writing Tasks" with setMessage
- * [703] missing links in "Package Imports"
- * [701] Setting more then two properties in command line not possible on windows
- * [699] Add loadfile task
- * [698] Add documentation for patternset element to user guide
- * [696] CoverageReportTask doesn't recognize UTF-8 source code
- * [695] phpunit Task doesn't support @codeCoverageIgnore[...] comments
- * [692] Class 'GroupTest' not found in /usr/share/php/phing/tasks/ext/simpletest/SimpleTestTask.php on line 158
- * [691] foreach doesn't work with filelists
- * [690] Support DocBlox
- * [689] Improve documentation about selectors
- * [688] SshTask Adding (+propertysetter, +displaysetter)
- * [685] SvnLogTask and SvnListTask
- * [682] Loading custom tasks should use the autoloading mechanism
- * [681] phpunit report does not work with a single testcase
- * [680] phpunitreport: make tables sortable
- * [679] IoncubeEncoderTask improved
- * [673] new listener HtmlColorLogger
- * [672] DbDeployTask::getDeltasFilesArray has undefined variable
- * [671] fix CvsTask documentation
- * [670] DirectoryScanner: add darcs to default excludes
- * [668] Empty Default Value Behaves Like the Value is not set
- * [667] Document how symbolic links and hidden files are treated in copy task
- * [663] __toString for register slots
- * [662] Hiding the command that is excecuted with "ExecTask"
- * [659] optionally skip version check in codesniffer task
- * [654] fileset not selecting folders
- * [652] PDOSQLExec task doesn't close the DB connection before throw an exception or at the end of the task.
- * [642] ERROR: option "-o" not known with phpcs version 1.3.0RC2 and phing/phpcodesniffer 2.4.4
- * [639] Add verbose mode for SCPTask
- * [635] ignored autocommit="false" in PDOTask?
- * [632] CoverageThresholdTask needs exclusion option/attribute
- * [626] Coverage threshold message is too detailed...
- * [616] PhpDocumentor prematurely checks for executable
- * [613] Would be nice to have -properties=<file> CLI option
- * [611] Attribute "title" is wanted in CoverageReportTask
- * [608] Tweak test failure message from PHPUnitTask
- * [591] PhpLintTask don't log all errors for each file
- * [563] Make PatchTask silent on FreeBSD
- * [546] Support of filelist in CodeCoverageTask
- * [527] pearpkg2: unable to specify different file roles
- * [521] jslint warning logger
-
-Mar. 3, 2011 - Phing 2.4.5
---------------------------
-
-This release fixes several issues, and reverts the changes
-that introduced the ComponentHelper class.
-
- * [657] Wrong example of creating task in stable documentation.
- * [656] Many erratas on the "Getting Started"-page.
- * [651] Messages of ReplaceTokens should be verbose
- * [641] 2.4.4 packages contains .rej and .orig files in release tarball
- * [640] "phing -q" does not work: "Unknown argument: -q"
- * [634] php print() statement outputting to stdout
- * [624] PDOSQLExec fails with Fatal error: Class 'LogWriter' not found in [...]/PDOSQLExecFormatterElement
- * [623] 2.4.5RC1 requires PHPUnit erroneously
- * [621] PhpLintTask outputs all messages (info and errors) to same loglevel
- * [614] phpcodesniffer task changes Phing build working directory
- * [610] BUG: AdhocTaskdefTask fails when creating a task that extends from an existing task
- * [607] v 2.4.4 broke taskdef for tasks following PEAR naming standard
- * [603] Add support to PostgreSQL in DbDeployTask
- * [601] Add HTTP_Request2 to optional dependencies
- * [600] typo in ReplaceRegexpTask
- * [598] Wrong version for optional Services_Amazon_S3 dependency
- * [596] PhpDependTask no more compatible with PDepend since 0.10RC1
- * [593] Ssh/scp task: Move ssh2_connect checking from init to main
- * [564] command line "-D" switch not handled correctly under windows
- * [544] Wrong file set when exclude test/**/** is used
-
-Dec. 2, 2010 - Phing 2.4.4
---------------------------
-
-This release fixes several issues.
-
- * [595] FilterChain without ReplaceTokensWithFile creator
- * [594] Taskdef in phing 2.4.3 was broken!
- * [590] PhpLintTask don't flag files that can't be parsed as bad files
- * [589] Mail Task don't show recipients list on log
- * [588] Add (optional) dependency to VersionControl_Git and Services_Amazon_S3 packages
- * [585] Same line comments in property files are included in the property value
- * [570] XmlLintTask - check well-formedness only
- * [568] Boolean properties get incorrectly expanded
- * [544] Wrong file set when exclude test/**/** is used
- * [536] DbDeployTask: Undo script wrongly generated
-
-Nov. 12, 2010 - Phing 2.4.3
----------------------------
-
-This release adds tasks to interface with Git and Amazon S3, adds support for PHPUnit 3.5,
-and fixes numerous issues.
-
- * [583] UnixFileSystem::compare() is broken
- * [582] Add haltonerror attribute to copy/move tasks
- * [581] XmlProperty creating wrong properties
- * [577] SVN commands fail on Windows XP
- * [575] xmlproperty - misplaced xml attributes
- * [574] Task "phpcodesniffer" broken, no output
- * [572] ImportTask don't skipp file if optional is set to true
- * [560] [PATCH] Compatibility with PHPUnit 3.5.
- * [559] UpToDate not override value of property when target is called by phingcall
- * [555] STRICT Declaration of UnixFileSystem::getBooleanAttributes() should be compatible with that of FileSystem::getBooleanAttributes()
- * [554] Patch to force PhpDocumentor to log using phing
- * [551] SVN Switch Task
- * [550] Ability to convert encoding of files
- * [549] ScpTask doesn't finish the transfer properly
- * [547] The new attribute version does not work
- * [543] d51PearPkg2Task: Docs link wrong
- * [542] JslLintTask: wrap conf parameter with escapeshellarg
- * [537] Install documentation incorrect/incomplete
- * [536] DbDeployTask: Undo script wrongly generated
- * [534] Task for downloading a file through HTTP
- * [531] cachefile parameter of PhpLintTask also caches erroneous files
- * [530] XmlLintTask does not stop buid process when schema validation fails
- * [529] d51pearpkg2: setOptions() call does not check return value
- * [526] pearpkg2: extdeps and replacements mappings not documented
- * [525] pearpkg2: minimal version on dependency automatically set max and recommended
- * [524] pearpkg2: maintainers mapping does not support "active" tag
- * [520] Need SvnLastChangedRevisionTask to grab the last changed revision for the current working directory
- * [518] [PHP Error] file_put_contents(): Filename cannot be empty in phpcpdesniffer task
- * [513] Version tag doesn't increment bugfix portion of the version
- * [511] Properties not being set on subsequent sets.
- * [510] to show test name when testing fails
- * [501] formatter type "clover" of task "phpunit" doesn't generate coverage according to task "coverage-setup"
- * [488] FtpDeployTask is very silent, error messages are not clear
- * [455] Should be able to ignore a task when listing them from CLI
- * [369] Add Git Support
-
-Jul. 28, 2010 - Phing 2.4.2
----------------------------
-
- * [509] Phing.php setIni() does not honor -1 as unlimited
- * [506] Patch to allow -D<option> with no "=<value>"
- * [503] PHP Documentor Task not correctly documented
- * [502] Add repository url support to SvnLastRevisionTask
- * [500] static function call in PHPCPDTask
- * [498] References to Core types page are broken
- * [496] __autoload not being called
- * [492] Add executable attribute in JslLint task
- * [489] PearPackage Task fatal error trying to process Fileset options
- * [487] Allow files in subdirectories in ReplaceTokensWithFile filter
- * [486] PHP Errors in PDOSQLExecTask
- * [485] ReplaceTokensWithFile filter does not allow HTML translation to be
- switched off
- * [484] Make handling of incomplete tests when logging XML configurable
- * [483] Bug in FileUtils::copyFile() on Linux - when using FilterChains,
- doesn't preserve attributes
- * [482] Bug in ChownTask with verbose set to false
- * [480] ExportPropertiesTask does not export all the initialized properties
- * [477] HttpRequestTask should NOT validate output if regex is not provided
- * [474] Bad Comparisons in FilenameSelector (possibly others)
- * [473] CPanel can't read Phing's Zip Files
- * [472] Add a multiline option to regex replace filter
- * [471] ChownTask throws exception if group is given
- * [468] CopyTask does not accept a FileList as only source of files
- * [467] coverage of abstract class/method is always ZERO
- * [466] incomplete logging in coverage-threshold
- * [465] PatchTask should support more options
- * [463] Broken Links in coverage report
- * [461] version tag in project node
-
-Mar. 10, 2010 - Phing 2.4.1
----------------------------
-
- * [460] FtpDeployTask error
- * [458] PHPCodeSniffer Task throws Exceptions
- * [456] Fileset's dir should honor expandsymboliclinks
- * [449] ZipTask creates ZIP file but doesn't set file/dir attributes
- * [448] PatchTask
- * [447] SVNCopy task is not documented
- * [446] Add documentation describing phpdocext
- * [444] PhpCodeSnifferTask fails to generate a checkstyle-like output
- * [443] HttpRequestTask is very desirable
- * [442] public key support for scp and ssh tasks
- * [436] Windows phing.bat can't handle PHP paths with spaces
- * [435] Phing download link broken in bibliography
- * [433] Error in Documentation in Book under Writing a simple Buildfile
- * [432] would be nice to create CoverateThresholdTask
- * [431] integrate Phing with PHP Mess Detector and PHP_Depend
- * [430] FtpDeployTask is extremely un-verbose...
- * [428] Ability to specify the default build listener in build file
- * [426] SvnExport task documentation does not mention "revision" property
- * [421] ExportProperties class incorrectly named
- * [420] Typo in setExcludeGroups function of PHPUnitTask
- * [418] Minor improvement for PhpLintTask
-
-Jan. 17, 2010 - Phing 2.4.0
----------------------------
-
- * [414] PhpLintTask: retrieving bad files
- * [413] PDOSQLExecTask does not recognize "delimiter" command
- * [411] PhpEvalTask calculation should not always returns anything
- * [410] Allow setting alias for Phar files as well as a custom stub
- * [384] Delete directories fails on '[0]' name
-
-Dec. 17, 2009 - Phing 2.4.0 RC3
--------------------------------
-
- * [407] some error with svn info
- * [406] an ability to turn phpLint verbose ON and OFF
- * [405] I can't get a new version of Phing through PEAR
- * [402] Add fileset/filelist support to scp tasks
- * [401] PHPUnitTask 'summary' formatter produces a long list of results
- * [400] Support for Clover coverage XML
- * [399] PhpDocumentorExternal stops in method constructArguments
- * [398] Error using ResolvePath on Windows
- * [397] DbDeployTask only looks for -- //@UNDO (requires space)
- * [396] PDOSQLExecTask requires both fileset and filelist, rather than either or
- * [395] PharPackageTask fails to compress files
- * [394] Fix differences in zip and tar tasks
- * [393] prefix parameter for tar task
- * [391] Docs: PharPackageTask 'compress' attribute wrong
- * [389] Code coverage shows incorrect results Part2
- * [388] Beautify directory names in zip archives
- * [387] IoncubeEncoderTask noshortopentags
- * [386] PhpCpd output to screen
- * [385] Directory ignored in PhpCpdTask.php
- * [382] Add prefix parameter to ZipTask
- * [381] FtpDeployTask: invalid default transfer mode
- * [380] How to use PhpDocumentorExternalTask
- * [379] PHPUnit error handler issue
- * [378] PHPUnit task bootstrap file included too late
- * [377] Code coverage shows incorrect results
- * [376] ReplaceToken boolean problems
- * [375] error in docs for echo task
- * [373] grammar errors
- * [372] Use E_DEPRECATED
- * [367] Can't build simple build.xml file
- * [361] Bug in PHPCodeSnifferTask
- * [360] &amp;&amp; transfers into & in new created task
- * [309] startdir and 'current directory' not the same when build.xml not in current directory
- * [268] Patch - xmlproperties Task
- * [204] Resolve task class names with PEAR/ZEND/etc. naming convention
- * [137] Excluded files may be included in Zip/Tar tasks
-
-Oct. 20, 2009 - Phing 2.4.0 RC2
--------------------------------
-
- * [370] Fatal error: Cannot redeclare class PHPUnit_Framework_TestSuite
- * [366] Broken link in "Getting Started/More Complex Buildfile"
- * [365] Phing 2.4rc1 via pear is not usable
- * [364] 2.4.0-rc1 download links broken
- * [363] PHPUnit task fails with formatter type 'xml'
- * [359] 403 for Documentation (User Guide) Phing HEAD
- * [355] PDOSQLExecTask should accept filelist subelement
- * [352] Add API documentation
-
-Sep. 14, 2009 - Phing 2.4.0 RC1
--------------------------------
-
- * [362] Can't get phpunit code coverage to export as XML
- * [361] Bug in PHPCodeSnifferTask
- * [357] SvnLastRevisionTask fails when locale != EN
- * [356] Documentation for tasks Chmod and Chown
- * [349] JslLint task fails to escape shell argument
- * [347] PHPUnit / Coverage tasks do not deal with bootstrap code
- * [344] Phing ignores public static array named $browsers in Selenium tests
- * [342] custom-made re-engine in SelectorUtils is awful slow
- * [339] PHAR signature setting
- * [336] Use intval to loop through files
- * [333] XmlLogger doesn't ensure proper ut8 encoding of log messages
- * [332] Conditions: uptodate does not work
- * [331] UpToDateTask documentation says that nested FileSet tags are allowed
- * [330] "DirectoryScanner cannot find a folder/file named ""0"" (zero)"
- * [326] Add revision to svncheckout and svnupdate
- * [325] "<filterchain id=""xxx""> and <filterchain refid=""xxx""> don't work"
- * [322] phpdoc task not parsing and including RIC files in documentation output
- * [319] Simpletest sometimes reports an undefined variable
- * [317] PhpCodeSnifferTask lacks of haltonerror and haltonwarning attributes
- * [316] Make haltonfailure attribute for ZendCodeAnalyzerTask
- * [312] SimpleTestXMLResultFormatter
- * [311] Fileset support for the TouchTask?
- * [307] Replaceregexp filter works in Copy task but not Move task
- * [306] Command-line option to output the <target> description attribute text
- * [303] Documentation of Task Tag SimpleTest
- * [300] ExecTask should return command output as a property (different from passthru)
- * [299] PhingCall crashes if an AdhocTask is defined
- * [292] Svn copy task
- * [290] Add facility for setting resolveExternals property of DomDocument object in XML related tasks
- * [289] Undefined property in XincludeFilter class
- * [282] Import Task fix/improvement
- * [280] Add Phar support (task) to Phing
- * [279] Add documentation to PHK package task
- * [278] Add PHK package task
- * [277] PhpCodeSnifferTask has mis-named class, patch included
- * [273] PHPUnit 3.3RC1 error in phpunit task adding files to filter
- * [270] [patch] ReplaceRegExp
- * [269] Allow properties to be recursively named.
- * [263] phpunit code coverage file format change
- * [262] Archive_Zip fails to extract on Windows
- * [261] UnZip task reports success on failure on Windows
- * [259] Unneeded warning in Untar task
- * [256] Ignore dead code in code coverage
- * [254] Add extra debug resultformatter to the simpletest task
- * [252] foreach on a fileset
- * [248] Extend taskdef task to allow property file style imports
- * [247] New task: Import
- * [246] Phing test brocken but no failure entry if test case class has no test method
- * [245] TAR task
- * [243] Delete task won't delete all files
- * [240] phing test succesful while phpunit test is broken
- * [233] Separate docs from phing package
- * [231] File::exists() returns false on *existing* but broken symlinks
- * [229] CopyTask shoul accept filelist subelement
- * [226] <move> task doesn't support filters
- * [222] Terminal output dissapears and/or changes color
- * [221] Support for copying symlinks as is
- * [212] Make file perms configurable in copy task
- * [209] Cache the results of PHPLintTask so as to not check unmodified files
- * [187] "ExecTask attribute ""passthru"" to make use of the PHP function ""passthru"""
- * [21] svn tasks doesn't work
-
-Dec. 8, 2008 - Phing 2.3.3
---------------------------
-
- * [314] <phpunit> task does not work
- * [313] Incorrect PhpDoc package of SimpleTestResultFormatter
- * [302] Incorrect error detecting in XSLT filter
- * [293] Contains condition fails on case-insensitive checks
- * [291] The release package is not the one as the version(2.3.2) suppose to be
-
-Oct. 16, 2008 - Phing 2.3.2
----------------------------
-
- * [296] Problem with the Phing plugin with Hudson CI Tool
- * [288] Comment syntax for dbdeploy violates standard
-
-Oct. 16, 2008 - Phing 2.3.1
----------------------------
-
- * [287] DateSelector.php bug
- * [286] dbdeploy failes with MySQL strict mode
- * [285] Syntax error in dbdeploy task
- * [284] XSL Errors in coverage-report task
- * [275] AnsiColorLogger should not be final
- * [274] PHPUnit 3.3RC1 incompatibility with code coverage
- * [272] Using CDATA with ReplaceTokens values
- * [271] Warning on iterating over empty keys
- * [264] Illeal use of max() with empty array
- * [260] Error processing reults: SQLSTATE [HY000]: General error: 2053 when executing inserts or create statements.
- * [258] getPhingVersion + printVersion should be public static
- * [255] Timestamp in Phing Properties for Echo etc
- * [253] CCS nav bug on PHING.info site
- * [251] debug statement in Path datatype for DirSet
- * [249] See failed tests in console
- * [244] Phing pear install nor working
- * [242] Log incomplete and skipped tests for phpunit3
- * [241] FtpDeployTask reports FTP port as FTP server on error
- * [239] ExecTask shows no output from running command
- * [238] Bug in SummaryPHPUnit3ResultFormatter
- * [237] Several PHP errors in XSLTProcessor
- * [236] Do not show passwords for svn in log
- * [234] typo in foreach task documentation
- * [230] Fatal error: Call to undefined method PHPUnit2_Framework_TestResult::skippedCount() in /usr/local/lib/php/phing/tasks/ext/phpunit/PHPUnitTestRunner.php on line 120
- * [227] simpletestformaterelement bad require
- * [225] Missing Software Dependence in documentation
- * [224] Path class duplicates absolute path on subsequent path includes
- * [220] AnsiColorLogger colors cannot be changed by build.properties
- * [219] Add new chown task
- * [218] Clear support of PHPUnit versions
- * [217] Memory limit in phpdoc
- * [216] output messages about errors and warnings in JslLint task
- * [215] boolean attributes of task PhpCodeSniffer are wrong
- * [214] PhpCodeSnifferTask should be able to output file
- * [213] Error in documentation task related to copy task
- * [211] XSLT does not handle multiple testcase nodes for the same test method
- * [210] Reworked PhpDocumentorExternalTask
- * [208] ReplaceRegexp problem with newline as replace string
- * [207] PhpLintTask: optional use a different PHP interpreter
- * [206] Installation guide out of date (phing fails to run)
- * [205] AvailableTask::_checkResource ends up with an exception if resource isn't found.
- * [203] ExecTask returnProperty
- * [202] Add PHP_CodeSniffer task
- * [201] "Improve Phing's ability to work as an ""embedded"" process"
- * [200] Additional attribute for SvnUpdateTask
- * [199] Invalid error message in delete task when deleting directory fails.
- * [198] PDO SQL exec task unable to handle multi-line statements
- * [197] phing delete task sometimes fails to delete file that could be deleted
- * [195] SvnLastRevisionTask fails if Subversion is localized (Spanish)
- * [194] haltonincomplete attribute for phpunit task
- * [193] Manifest Task
- * [192] Error when skip test
- * [191] Akismet says content is spam
- * [190] Add test name in printsummary in PHPUnit task
- * [185] PHPUnit_MAIN_METHOD defined more than once
- * [184] PlainPHPUnit3ResultFormatter filteres test in stack trace
- * [183] Undefined variable in PhingTask.php
- * [182] Undefined variable in SummaryPHPUnit3ResultFormatter
- * [181] PhingCallTask should call setHaltOnFailure
- * [179] Add documentation for TidyFilter
- * [178] printsummary doens work in PHP Unit task
- * [177] Only write ConfigurationExceptions to stdout
- * [176] Cleanup installation documentation.
- * [175] passing aarguments to phing
- * [169] Spurious PHP Error from XSLT Filter
- * [150] unable to include phpdocumentor.ini in PHPDoc-Task
- * [15] FTP upload task
-
-Nov. 3, 2007 - Phing 2.3.0
---------------------------
-
- * [174] Add differentiation for build loggers that require explicit streams to be set
- * [173] Add 'value' alias to XSLTParam type.
- * [172] broken phpunit2-frames.xsl
- * [171] Allow results from selector to be loosely type matched to true/false
- * [170] SvnLastRevisionTask cannot get SVN revision number on single file
- * [168] XincludeFilter PHP Error
- * [167] Add new formatter support for PDOSQLExecTask
- * [166] Change CreoleTask to use <creole> tagname instead of <sql>
- * [165] Add support for PHPUnit_Framework_TestSuite subclasses in fileset of test classes
- * [164] Failed build results in empty log.xml
- * [163] Add stripwhitespace filter
- * [162] Add @pattern alias for @name in <fileset>
- * [161] phing/etc directory missing (breaking PHPUnit)
- * [157] Fatal error in PDOSQLExecTask when using filesets
- * [155] <delete> fails when it encounters symlink pointing to non-writable file
- * [154] Suggestion to add attribute to PDOSQLExecTask for fetch_style
- * [153] sqlite select failure
- * [152] result of PHP-Unit seems to be incorrect
- * [151] add group-option to PHPUnit-Task
- * [149] using TestSuites in fileset of PHPUnit-Task
- * [148] remove dependency to PEAR in PHPUnit-Task
- * [146] Illegal offset type PHP notice in CopyTask
- * [143] Example for PhpDocumentor task has typographical errors and a wrong attribute.
- * [142] SvnCheckout task only makes non-recursive checkouts.
- * [141] Add 'recursive' attribute to svncheckout task.
- * [136] Attribute os of ExecTask is not working
- * [135] add source file attribute for code coverage xml report
- * [133] Error in documenation: AppendTask
- * [129] Typo in documentation
- * [128] <pearpkg2> is missing in the doc completely
- * [127] Error in documentation
- * [126] Typo in documentation
- * [122] PearPackage2Task Replacements don't seem to work
- * [121] BUILD FAILED use JsLintTask
- * [119] PhpDocumentorTask fails when trying to use parsePrivate attribute.
- * [118] custom tasks have this->project == null
- * [117] CoverageSetupTask and autoloaders
- * [116] Test unit don't report notice or strict warnings
- * [110] "Add ""errorproperty"" attribute to PhpLintTask"
- * [107] SvnLastRevisionTask doesn't work with repositoryUrl
- * [106] "document ""haltonfailure"" attribute for phplint task"
- * [105] FileSystemUnix::normalize method: Improve handling
- * [97] delete dir and mkdir are incompatible
- * [92] Inconsistent newlines in PHP files
- * [91] Improve detection for PHPUnit3
- * [83] "XmlLogger improperly handling ""non-traditional"" buildfile execution paths"
- * [82] Error when use markTestIncomplete in test
- * [79] Allow escaped dots in classpaths
- * [78] (SVN doc) ${phing.version} and ${php.version} are different!
- * [77] taskdef doesn't support fileset
- * [76] Overhaul PhpDocumentor task
- * [75] files excluded by fileset end up in .tgz but not .zip
- * [74] Phing commandline args don't support quoting / spaces
- * [73] Semantical error in PhingFile::getParent()
- * [72] "Remove use of getProperty(""line.separator"") in favor of PHP_EOL"
- * [71] "Add ""-p"" alias for project help"
- * [70] Create Project class constants for log levels (replacing PROJECT_MSG_*)
- * [69] mkdir and delete tasks don't work properly together
- * [68] Xinclude filter
- * [67] Add PDO SQL execution task
- * [66] Incorrectly set PHP_CLASSPATH in phing.bat
- * [65] Convert all loggers/listeners to use streams
- * [64] Build listeners currently not working
- * [63] Configured -logger can get overridden
- * [62] phing.buildfile.dirname built-in property
- * [58] Path::listPaths() broken for DirSet objects.
- * [57] FileList.getListFile method references undefined variable
- * [56] TaskHandler passing incorrect param to ProjectConfigurator->configureId()
- * [53] _makeCircularException seems to have an infinite loop
- * [52] \<match>-syntax does not work correctly with preg_*()
- * [51] Cannot get phing to work with PHPUnit 3
- * [48] Supported PHPUnit2_Framework_TestSuite and PHPUnit2_Extensions_TestSetup sub-classes for the PHPUnit2Task and CoverageReportTask tasks
- * [33] Implement changes to use PHPUnit2 3.0 code coverage information
- * [22] Description about integrating into CruiseControl
-
-Aug. 21, 2006 - Phing 2.2.0
----------------------------
-
- * Refactored parser to support many tags as children of base <project> tag (HL)
- * Added new IfTask (HL)
- * Added "spawn" attribute to ExecTask (only applies to *nix)
- * Several bugfixes & behavior imporvements to ExecTask (HL, MR, Ben Gollmer)
- * Bugfixes & refactoring for SVNLastRevisionTask (MR, Knut Urdalen)
- * Fixed reference copy bug (HL, Matthias Pigulla)
- * Added SvnExportTask (MR)
- * Added support for FileList in DeleteTask. (HL)
- * Added support for using setting Properties using CDATA value of <property> tag. (HL)
- * Added ReferenceExistsCondition (Matthias Pigulla)
- * Added Phing::log() static method & integrated PHP error handling with Phing logging (HL)
- * Added new task to run the ionCube Encoder (MR)
- * Added new HTML Tidy filter (HL)
- * Added PhpLintTask (Knut Urdalen)
- * Added XmlLintTask (Knut Urdalen)
- * Added ZendCodeAnalyzerTask (Knut Urdalen)
- * Removed CoverageFormatter class (MR)
- NOTE: This changes the usage of the collection of PHPUnit2 code coverage reports, see the
- updated documentation for the CoverageSetupTask
- * Added Unzip and Untar tasks contributed by Joakim Bodin
- * [8], [49] Fixed bugs in TarTask related to including empty directories (HL)
- * [44] Fixed bug related to copying empty dirs. (HL)
- * [32] Fixed PHPUnit2 tasks to work with PHPUnit2-3.0.0 (MR)
- * [31] Fixed bug with using PHPDocumentor 1.3.0RC6 (MR)
- * [43] Fixed top-level (no target) IfTask behavior (Matthias Pigulla)
- * [41] Removed some lingering E_STRICT errors, bugs with 5.1.x and PHP >= 5.0.5 (HL)
- * [25] Fixed 'phing' script to also run on non-bash unix /bin/sh
- * Numerous documentation improvements by many members of the community (Thanks!)
-
-Sept. 18, 2005 - Phing 2.1.1
-----------------------------
-
- * Added support for specifying 4-char mask (e.g. 1777) to ChmodTask. (Hans Lellelid)
- * Added .svn files to default excludes in DirectoryScanner.
- * Updated PHPUnit2 BatchTest to use class detection and non-dot-path loader. (Michiel Rook)
- * Added support for importing non dot-path files (Michiel Rook)
- * Add better error message when build fails with exception (Hans Lellelid)
- * Fixed runtime error when errors were encountered in AppendTask (Hans Lellelid)
-
-June 17, 2005 - Phing 2.1.0
----------------------------
-
- * Renamed File -> PhingFile to avoid namespace collisions (Michiel Rook)
- * Add ZipTask to create .zip files (Michiel Rook)
- * Removed redudant logging of build errors in Phing::start() (Michiel Rook)
- * Added tasks to execute PHPUnit2 testsuites and generate coverage and
- test reports. (Michiel Rook, Sebastian Bergmann)
- * Added SvnLastRevisionTask that stores the number of the last revision
- of a workingcopy in a property. (Michiel Rook)
- * Added MailTask that sends a message by mail() (Michiel Rook, contributed by Francois Harvey)
- * New IncludePathTask (<includepath/>) for adding values to PHP's include_path. (Hans Lellelid)
- * Fix to Phing::import() to *not* attempt to invoke __autoload() in class_exists() check. (Hans Lellelid)
- * Fixed AppendTask to allow use of only <fileset> as source. (Hans Lellelid)
- * Removed dependency on posix, by changing posix_uname to php_uname if needed. (Christian Stocker)
- * Fixed issues: (Michiel Rook)
- 11 ExtendedFileStream does not work on Windows
- 12 CoverageFormatter problem on Windows
- 13 DOMElement warnings in PHPUnit2 tasks
- 14 RuntimeException conflicts with SPL class
- 15 It is not possible to execute it with PHP5.1
- 16 Add Passthru option to ExecTask
- 17 Blank list on foreach task will loop once
- 19 Problem with <formatter outfile="...">
- 20 Phpunit2report missing XSL stylesheets
- 21 Warnings when output dir does not exist in PHPUnit2Report
-
-Oct 16, 2004 - Phing 2.0.0
---------------------------
-
- * Minor fixes to make Phing run under E_STRICT/PHP5.
- * Fix to global/system properties not being set in project. (Matt Zandstra)
- * Fixes to deprecated return by reference issues w/ PHP5.0.0
-
-June 8, 2004 - Phing 2.0.0b3
-----------------------------
-
- * Brought up-to-date w/ PHP5.0.0RC3
- * Fixed several bugs in ForeachTask
- * Fixed runtime errors and incomplete inheriting of properties in PhingTask
- * Added <fileset> support to AppendTask
-
-March 19, 2004 - Phing 2.0.0b2
-------------------------------
-
- * Brought up-to-date w/ PHP5.0.0RC1 (Hans)
- * Fixed bug in seting XSLT params using XSLTask (Hans, Jeff Moss)
- * Fixed PHPUnit test framework for PHPUnit-2.0.0alpha3
- * Added "Adhoc" tasks, which allow for defining PHP task or type classes within the
- buildfile. (Hans)
- * Added PhpEvalTask which allows property values to be set to simple PHP evaluations or
- the results of function/method calls. (Hans)
- * Added new phing.listener.PearLogger listener (logger). Also, the -logfile arg is now
- supported. (Hans)
- * Fixed broken ForeachTask task. (Manuel)
-
-Dec 24, 2003 - Phing 2.0.0b1
-----------------------------
-
- * Added PEAR installation framework & ability to build Phing into PEAR package.
- * Added TarTask using PEAR Archive_Tar
- * Added PearPackageTask which creates a PEAR package.xml (using PEAR_PackageFileManager).
- * Added ResolvePathTask which converts relative paths into absolute paths.
- * Removed System class, due to namespace collision w/ PEAR.
- * Basic "working?" tests performed with all selectors.
- * Added selectors: TypeSelector, ContainsRegexpSelector
- * CreoleSQLExec task is now operational.
- * Corrected non-fatal bugs in: DeleteTask, ReflexiveTask
- * All core Phing classes now in PHP5 syntax (no "var" used, etc.)
- * CopyTask will not stop build execution if a file cannot be copied (will log and
- continue to next file).
- * New abstract MatchingTask task makes it easier to create your own tasks that use
- selectors.
- * Removed redundant calls in DirectoryScanner (<fileset> scanning now much faster).
- * Fixed fatal errors in File::equals()
-
-Nov 24, 2003 - Phing 2.0.0a2
-----------------------------
-
- * Fixed ReplaceTokens filter to correctly replace matched tokens
- * Changed "project.basedir" property to be absolute path of basedir
- * Made IntrospectionHelper more tollerant of add*() and addConfigured*() signatures
- * New CvsTask and CvsPassTask for working with CVS repositories
- * New TranslateGettext filter substitutes _("hello!") with "hola!" / "bonjour!" / etc.
- * More consistent use of classhints to enable auto-casting by IntrospectionHelper
- * Fixed infinite loop bug in FileUtils::normalize() for paths containing "/./"
- * Fixed bug in CopyFile/fileset that caused termination of copy operation on encounter
- of unreadable file
-
-Nov 6, 20003 - Phing 2.0.0a1
-----------------------------
-
- * First release of Phing 2, an extensive rewrite and upgrade.
- * Refactored much of codebase, using new PHP5 features (e.g. Interfaces, Exceptions!)
- * Many, many, many bugfixes to existing functionality
- * Restructuring for more intuitive directory layout, change the parser class names.
- * Introduction of new tasks: AppendTask, ReflexiveTask, ExitTask, Input, PropertyPrompt
- * Introduction of new types: Path, FileList, DirSet, selectors, conditions
- * Introduction of new filters: ReplaceRegexp
- * Introduction of new logger: AnsiColorLogger
- * Many features from ANT 1.5 added to existing Tasks/Types
- * New "Register Slot" functionality allows for tracking "inner" dynamic variables.
diff --git a/buildscripts/phing/CREDITS.md b/buildscripts/phing/CREDITS.md
deleted file mode 100644
index caea650b..00000000
--- a/buildscripts/phing/CREDITS.md
+++ /dev/null
@@ -1,51 +0,0 @@
-P H I N G
-=========================
-
-
-Phing 2.x Development
----------------------
-
- - Michiel Rook <mrook@php.net>
- - Hans Lellelid <hans@xmpl.org>
- - Sebastian Bergmann <sb@sebastian-bergmann.de>
- - Joakim Bodin <joakim.bodin+phing@gmail.com>
- - Johan Van den Brande <johan@vandenbrande.com>
- - Bryan Davis <bender@casadebender.com>
- - Andrew Eddie <andrew.eddie@jamboworks.com>
- - Markus Fischer <markus@fischer.name>
- - David Giffin <david@giffin.org>
- - Ryan Grove <ryan@wonko.com>
- - Frank Kleine <mikey@stubbles.net>
- - George Miroshnikov <laggy.luke@gmail.com>
- - David Persson <davidpersson at qeweurope dot org>
- - Stefan Priebsch <stefan.priebsch@e-novative.de>
- - Jorrit Schippers <jorrit at ncode dot nl>
- - Alexey Shockov <alexey@shockov.com>
- - Dirk Thomas <dirk.thomas@4wdmedia.de>
- - Knut Urdalen <knut.urdalen@gmail.com>
- - Mike Wittje <mw@mike.wittje.de>
- - Benjamin Schultz <bschultz@proqrent.de>
- - Andrei Serdeliuc <andrei@serdeliuc.ro>
- - Victor Farazdagi
- - Christian Weiske
- - Matthias Pigulla
- - Lineke Kerckhoffs-Willems <lineke@phpassionate.com>
-
- If you've done work on Phing and you are not listed here, please feel free
- to add yourself.
-
-Original Phing 1.x Development
-------------------------------
-
- - Andreas Aderhold <andi@binarycloud.com>
- - Alex Black <enigma@turingstudio.com>
- - Albert Lash <alash@plateauinnovation.com>
- - Charlie Killian <charlie@tizac.com>
- - Manuel Holtgrewe <grin@gmx.net>
- - Andrzej Nowodworski <a.nowodworski@learn.pl>
- - Jason Hines <jason@greenhell.com>
- - Jesse Estevez <jesseestevez@earthlink.net>
- - Andris Spruds <Andris.Spruds@stud.lba.lv>
- - Ronald TAO <ronaldtao@hotmail.com>
- - Yannick Lecaillez <yl@seasonfive.com>
- - Hans Lellelid <hans@xmpl.org>
diff --git a/buildscripts/phing/LICENSE b/buildscripts/phing/LICENSE
deleted file mode 100644
index fc8a5de7..00000000
--- a/buildscripts/phing/LICENSE
+++ /dev/null
@@ -1,165 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- 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 that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU 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 as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/buildscripts/phing/README.md b/buildscripts/phing/README.md
deleted file mode 100644
index 91c9d0e4..00000000
--- a/buildscripts/phing/README.md
+++ /dev/null
@@ -1,64 +0,0 @@
-P H I N G
-=========================
-
-
- (PH)ing (I)s (N)ot (G)NU make; it's a PHP project build system or build
- tool based on Apache Ant. You can do anything with it that you could do
- with a traditional build system like GNU make, and its use of simple XML
- build files and extensible PHP "task" classes make it an easy-to-use and
- highly flexible build framework.
-
- Features include running PHPUnit and SimpleTest unit tests (including test
- result and coverage reports), file transformations (e.g. token replacement,
- XSLT transformation, Smarty template transformations),
- file system operations, interactive build support, SQL execution,
- CVS/SVN/GIT operations, tools for creating PEAR packages, documentation
- generation (DocBlox, PhpDocumentor) and much, much more.
-
- If you find yourself writing custom scripts to handle the packaging,
- deploying, or testing of your applications, then we suggest looking at Phing.
- Phing comes packaged with numerous out-of-the-box operation modules (tasks),
- and an easy-to-use OO model to extend or add your own custom tasks.
-
- Phing provides the following features:
-
- * Simple XML buildfiles
- * Rich set of provided tasks
- * Easily extendable via PHP classes
- * Platform-independent: works on UNIX, Windows, Mac OSX
- * No required external dependencies
- * Built for PHP5
-
-The Latest Version
-------------------
-
- Details of the latest version can be found on the Phing homepage
- <http://www.phing.info/>.
-
-Installation
-------------
-
- The preferred method to install Phing is through PEAR and the Phing PEAR
- channel. You can install Phing by adding the pear.phing.info channel
- to your PEAR environment and then installing Phing using the *phing*
- channel alias and *phing* package name:
-
- $> pear channel-discover pear.phing.info
- $> pear install [--alldeps] phing/phing
-
-Documentation
--------------
-
- Documentation is available in HTML format in the *docs* directory. In particular,
- open the *docs/phing_guide/book/index.html* in a browser to see the
- Phing User Guide.
-
- For online documentation, you can also visit the Phing website: http://www.phing.info/
-
-Licensing
----------
-
- This software is licensed under the terms you may find in the file
- named "LICENSE" in this directory.
-
- Thank you for using PHING!
diff --git a/buildscripts/phing/bin/phing b/buildscripts/phing/bin/phing
deleted file mode 100755
index bbc6eefe..00000000
--- a/buildscripts/phing/bin/phing
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-# Shell wrapper for Phing
-# $Id$
-#
-# This script will do the following:
-# - check for PHP_COMMAND env, if found, use it.
-# - if not found assume php is on the path
-# - check for PHING_HOME evn, if found use it
-# - if not look for it
-# - check for PHP_CLASSPATH, if found use it
-# - if not found set it using PHING_HOME/classes
-
-
-# Put all args in quotes
-phing_exec_debug=false
-phing_exec_args=
-for arg in "$@" ; do
- phing_exec_args="$phing_exec_args \"$arg\""
-done
-
-if [ -z "$PHING_HOME" ] ; then
-
- # echo "WARNING: PHING_HOME environment not set. Attempting to guess."
-
- # try to find PHING
- if [ -d /opt/phing ] ; then
- PHING_HOME=/opt/phing
- fi
-
- if [ -d "${HOME}/opt/phing" ] ; then
- PHING_HOME="${HOME}/opt/phing"
- fi
-
- if [ -d "/usr/local/phing" ] ; then
- PHING_HOME="/usr/local/phing"
- fi
-
- if [ -d "${HOME}/usr/phing" ] ; then
- PHING_HOME="${HOME}/usr/phing"
- fi
-
- ## resolve links - $0 may be a link to phing's home
- PRG="$0"
- progname=`basename "$0"`
- saveddir=`pwd`
-
- # need this for relative symlinks
- dirname_prg=`dirname "$PRG"`
- cd "$dirname_prg"
-
- while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
- done
-
- PHING_HOME=`dirname "$PRG"`/..
-
- cd "$saveddir"
-
- # make it fully qualified
- PHING_HOME=`cd "$PHING_HOME" && pwd`
-
- # make it available in PHP via getenv("PHING_HOME")
- export PHING_HOME
-fi
-
-if (test -z "$PHP_COMMAND") ; then
- # echo "WARNING: PHP_COMMAND environment not set. (Assuming php on PATH)"
- PHP_COMMAND=php
- export PHP_COMMAND
-fi
-
-if (test -z "$PHP_CLASSPATH") ; then
- PHP_CLASSPATH=$PHING_HOME/classes
- export PHP_CLASSPATH
-fi
-
-phing_exec_cmd="exec $PHP_COMMAND -d html_errors=off -qC \"$PHING_HOME/bin/phing.php\" -logger phing.listener.AnsiColorLogger $phing_exec_args"
-if $phing_exec_debug ; then
- echo $phing_exec_cmd
-fi
-eval $phing_exec_cmd \ No newline at end of file
diff --git a/buildscripts/phing/bin/phing.bat b/buildscripts/phing/bin/phing.bat
deleted file mode 100644
index ea310470..00000000
--- a/buildscripts/phing/bin/phing.bat
+++ /dev/null
@@ -1,58 +0,0 @@
-@echo off
-
-rem *********************************************************************
-rem ** the phing build script for Windows based systems
-rem ** $Id$
-rem *********************************************************************
-
-rem This script will do the following:
-rem - check for PHP_COMMAND env, if found, use it.
-rem - if not found detect php, if found use it, otherwise err and terminate
-rem - check for PHING_HOME evn, if found use it
-rem - if not found error and leave
-rem - check for PHP_CLASSPATH, if found use it
-rem - if not found set it using PHING_HOME/classes
-
-if "%OS%"=="Windows_NT" @setlocal
-
-rem %~dp0 is expanded pathname of the current script under NT
-set DEFAULT_PHING_HOME=%~dp0..
-
-goto init
-goto cleanup
-
-:init
-
-if "%PHING_HOME%" == "" set PHING_HOME=%DEFAULT_PHING_HOME%
-set DEFAULT_PHING_HOME=
-
-if "%PHP_COMMAND%" == "" goto no_phpcommand
-if "%PHP_CLASSPATH%" == "" goto set_classpath
-
-goto run
-goto cleanup
-
-:run
-"%PHP_COMMAND%" -d html_errors=off -qC "%PHING_HOME%\bin\phing.php" %*
-goto cleanup
-
-:no_phpcommand
-REM echo ------------------------------------------------------------------------
-REM echo WARNING: Set environment var PHP_COMMAND to the location of your php.exe
-REM echo executable (e.g. C:\PHP\php.exe). (Assuming php.exe on Path)
-REM echo ------------------------------------------------------------------------
-set PHP_COMMAND=php.exe
-goto init
-
-:err_home
-echo ERROR: Environment var PHING_HOME not set. Please point this
-echo variable to your local phing installation!
-goto cleanup
-
-:set_classpath
-set PHP_CLASSPATH=%PHING_HOME%\classes
-goto init
-
-:cleanup
-if "%OS%"=="Windows_NT" @endlocal
-REM pause
diff --git a/buildscripts/phing/bin/phing.php b/buildscripts/phing/bin/phing.php
deleted file mode 100755
index 3b70887a..00000000
--- a/buildscripts/phing/bin/phing.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/**
- * This is the Phing command line launcher. It starts up the system evironment
- * tests for all important paths and properties and kicks of the main command-
- * line entry point of phing located in phing.Phing
- * @version $Id$
- */
-
-// Set any INI options for PHP
-// ---------------------------
-
-/* set classpath */
-if (getenv('PHP_CLASSPATH')) {
- if (!defined('PHP_CLASSPATH')) { define('PHP_CLASSPATH', getenv('PHP_CLASSPATH') . PATH_SEPARATOR . get_include_path()); }
- ini_set('include_path', PHP_CLASSPATH);
-} else {
- if (!defined('PHP_CLASSPATH')) { define('PHP_CLASSPATH', get_include_path()); }
-}
-
-require_once 'phing/Phing.php';
-
-try {
-
- /* Setup Phing environment */
- Phing::startup();
-
- // Set phing.home property to the value from environment
- // (this may be NULL, but that's not a big problem.)
- Phing::setProperty('phing.home', getenv('PHING_HOME'));
-
- // Grab and clean up the CLI arguments
- $args = isset($argv) ? $argv : $_SERVER['argv']; // $_SERVER['argv'] seems to not work (sometimes?) when argv is registered
- array_shift($args); // 1st arg is script name, so drop it
-
- // Invoke the commandline entry point
- Phing::fire($args);
-
- // Invoke any shutdown routines.
- Phing::shutdown();
-
-} catch (ConfigurationException $x) {
-
- Phing::printMessage($x);
- exit(-1); // This was convention previously for configuration errors.
-
-} catch (Exception $x) {
-
- // Assume the message was already printed as part of the build and
- // exit with non-0 error code.
-
- exit(1);
-
-}
-
-?>
diff --git a/buildscripts/phing/classes/phing/BuildEvent.php b/buildscripts/phing/classes/phing/BuildEvent.php
deleted file mode 100755
index 581f7cf4..00000000
--- a/buildscripts/phing/classes/phing/BuildEvent.php
+++ /dev/null
@@ -1,198 +0,0 @@
-<?php
-/*
- * $Id: 47c800dd15c2367bb5890065f96ffceb7ae9ba55 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/lang/EventObject.php';
-
-/**
- * Encapsulates a build specific event.
- *
- * <p>We have three sources of events all handled by this class:
- *
- * <ul>
- * <li>Project level events</li>
- * <li>Target level events</li>
- * <li>Task level events</li>
- * </ul>
- *
- * <p> Events are all fired from the project class by creating an event object
- * using this class and passing it to the listeners.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing
- */
-class BuildEvent extends EventObject {
-
- /**
- * A reference to the project
- * @var Project
- */
- protected $project;
-
- /**
- * A reference to the target
- * @var Target
- */
- protected $target;
-
- /**
- * A reference to the task
- *
- * @var Task
- */
- protected $task;
-
- /**
- * The message of this event, if the event is a message
- * @var string
- */
- protected $message = null;
-
- /**
- * The priority of the message
- *
- * @var string
- * @see $message
- */
- protected $priority = Project::MSG_VERBOSE;
-
- /**
- * The execption that caused the event, if any
- *
- * @var object
- */
- protected $exception = null;
-
- /**
- * Construct a BuildEvent for a project, task or target source event
- *
- * @param object project the project that emitted the event.
- */
- public function __construct($source) {
- parent::__construct($source);
- if ($source instanceof Project) {
- $this->project = $source;
- $this->target = null;
- $this->task = null;
- } elseif ($source instanceof Target) {
- $this->project = $source->getProject();
- $this->target = $source;
- $this->task = null;
- } elseif ($source instanceof Task) {
- $this->project = $source->getProject();
- $this->target = $source->getOwningTarget();
- $this->task = $source;
- } else {
- throw new Exception("Can not construct BuildEvent, unknown source given.");
- }
- }
-
- /**
- * Sets the message with details and the message priority for this event.
- *
- * @param string The string message of the event
- * @param integer The priority this message should have
- */
- public function setMessage($message, $priority) {
- $this->message = (string) $message;
- $this->priority = (int) $priority;
- }
-
- /**
- * Set the exception that was the cause of this event.
- *
- * @param Exception The exception that caused the event
- */
- public function setException($exception) {
- $this->exception = $exception;
- }
-
- /**
- * Returns the project instance that fired this event.
- *
- * The reference to the project instance is set by the constructor if this
- * event was fired from the project class.
- *
- * @return Project The project instance that fired this event
- */
- public function getProject() {
- return $this->project;
- }
-
- /**
- * Returns the target instance that fired this event.
- *
- * The reference to the target instance is set by the constructor if this
- * event was fired from the target class.
- *
- * @return Target The target that fired this event
- */
- public function getTarget() {
- return $this->target;
- }
-
- /**
- * Returns the target instance that fired this event.
- *
- * The reference to the task instance is set by the constructor if this
- * event was fired within a task.
- *
- * @return Task The task that fired this event
- */
- public function getTask() {
- return $this->task;
- }
-
- /**
- * Returns the logging message. This field will only be set for
- * "messageLogged" events.
- *
- * @return string The log message
- */
- function getMessage() {
- return $this->message;
- }
-
- /**
- * Returns the priority of the logging message. This field will only
- * be set for "messageLogged" events.
- *
- * @return integer The message priority
- */
- function getPriority() {
- return $this->priority;
- }
-
- /**
- * Returns the exception that was thrown, if any.
- * This field will only be set for "taskFinished", "targetFinished", and
- * "buildFinished" events.
- *
- * @see BuildListener::taskFinished()
- * @see BuildListener::targetFinished()
- * @see BuildListener::buildFinished()
- * @return Exception
- */
- public function getException() {
- return $this->exception;
- }
-}
diff --git a/buildscripts/phing/classes/phing/BuildException.php b/buildscripts/phing/classes/phing/BuildException.php
deleted file mode 100755
index dda1a05a..00000000
--- a/buildscripts/phing/classes/phing/BuildException.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-/*
- * $Id: 5edc6b90e055d23ecceac1b6fd7e5fa80e86e006 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * BuildException is for when things go wrong in a build execution.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @version $Id$
- * @package phing
- */
-class BuildException extends Exception {
-
- /**
- * Location in the xml file.
- * @var Location
- */
- protected $location;
-
- /**
- * The nested "cause" exception.
- * @var Exception
- */
- protected $cause;
-
- /**
- * Construct a BuildException.
- * Supported signatures:
- * throw new BuildException($causeExc);
- * throw new BuildException($msg);
- * throw new Buildexception($causeExc, $loc);
- * throw new BuildException($msg, $causeExc);
- * throw new BuildException($msg, $loc);
- * throw new BuildException($msg, $causeExc, $loc);
- * @param Exception|string $p1
- * @param Location|Exception|null $p2
- * @param Location|null $p3
- */
- public function __construct($p1, $p2 = null, $p3 = null) {
-
- $cause = null;
- $loc = null;
- $msg = "";
-
- if ($p3 !== null) {
- $cause = $p2;
- $loc = $p3;
- $msg = $p1;
- } elseif ($p2 !== null) {
- if ($p2 instanceof Exception) {
- $cause = $p2;
- $msg = $p1;
- } elseif ($p2 instanceof Location) {
- $loc = $p2;
- if ($p1 instanceof Exception) {
- $cause = $p1;
- } else {
- $msg = $p1;
- }
- }
- } elseif ($p1 instanceof Exception) {
- $cause = $p1;
- } else {
- $msg = $p1;
- }
-
- parent::__construct($msg);
-
- if ($cause !== null) {
- $this->cause = $cause;
- $this->message .= " [wrapped: " . $cause->getMessage() ."]";
- }
-
- if ($loc !== null) {
- $this->setLocation($loc);
- }
- }
-
- /**
- * Gets the cause exception.
- *
- * @return Exception
- */
- public function getCause() {
- return $this->cause;
- }
-
- /**
- * Gets the location of error in XML file.
- *
- * @return Location
- */
- public function getLocation() {
- return $this->location;
- }
-
- /**
- * Sets the location of error in XML file.
- *
- * @param Location $loc
- */
- public function setLocation(Location $loc) {
- $this->location = $loc;
- $this->message = $loc->toString() . ': ' . $this->message;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/BuildListener.php b/buildscripts/phing/classes/phing/BuildListener.php
deleted file mode 100755
index a4086aa3..00000000
--- a/buildscripts/phing/classes/phing/BuildListener.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/*
- * $Id: 46e871c830686838e509a3b0e173e7f4c0736ab3 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Interface for build listeners.
- *
- * Classes that implement a listener must extend this class and (faux)implement
- * all methods that are decleard as dummies below.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @see BuildEvent
- * @see Project::addBuildListener()
- * @package phing
- */
-interface BuildListener {
-
- /**
- * Fired before any targets are started.
- *
- * @param BuildEvent $event The BuildEvent
- */
- public function buildStarted(BuildEvent $event);
-
- /**
- * Fired after the last target has finished.
- *
- * @param BuildEvent $event The BuildEvent
- * @see BuildEvent::getException()
- */
- public function buildFinished(BuildEvent $event);
-
- /**
- * Fired when a target is started.
- *
- * @param BuildEvent $event The BuildEvent
- * @see BuildEvent::getTarget()
- */
- public function targetStarted(BuildEvent $event);
-
- /**
- * Fired when a target has finished.
- *
- * @param BuildEvent $event The BuildEvent
- * @see BuildEvent#getException()
- */
- public function targetFinished(BuildEvent $event);
-
- /**
- * Fired when a task is started.
- *
- * @param BuildEvent $event The BuildEvent
- * @see BuildEvent::getTask()
- */
- public function taskStarted(BuildEvent $event);
-
- /**
- * Fired when a task has finished.
- *
- * @param BuildEvent $event The BuildEvent
- * @see BuildEvent::getException()
- */
- public function taskFinished(BuildEvent $event);
-
- /**
- * Fired whenever a message is logged.
- *
- * @param BuildEvent $event The BuildEvent
- * @see BuildEvent::getMessage()
- */
- public function messageLogged(BuildEvent $event);
-}
diff --git a/buildscripts/phing/classes/phing/BuildLogger.php b/buildscripts/phing/classes/phing/BuildLogger.php
deleted file mode 100755
index 03458159..00000000
--- a/buildscripts/phing/classes/phing/BuildLogger.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/*
- * $Id: 64eb45bf98f65e415da03c93c4f0d89573a5e29c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/BuildListener.php';
-
-/**
- * Interface for build loggers.
- *
- * Build loggers are build listeners but with some additional functionality:
- * - They can be configured with a log level (below which they will ignore messages)
- * - They have error and output streams
- *
- * Classes that implement a listener must implement this interface.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @see BuildEvent
- * @see Project::addBuildListener()
- * @package phing
- */
-interface BuildLogger extends BuildListener {
-
- /**
- * Sets the min log level that this logger should respect.
- *
- * Messages below this level are ignored.
- *
- * Constants for the message levels are in Project.php. The order of
- * the levels, from least to most verbose, is:
- * - Project::MSG_ERR
- * - Project::MSG_WARN
- * - Project::MSG_INFO
- * - Project::MSG_VERBOSE
- * - Project::MSG_DEBUG
- *
- * @param int $level The log level integer (e.g. Project::MSG_VERBOSE, etc.).
- */
- public function setMessageOutputLevel($level);
-
- /**
- * Sets the standard output stream to use.
- * @param OutputStream $output Configured output stream (e.g. STDOUT) for standard output.
- */
- public function setOutputStream(OutputStream $output);
-
- /**
- * Sets the output stream to use for errors.
- * @param OutputStream $err Configured output stream (e.g. STDERR) for errors.
- */
- public function setErrorStream(OutputStream $err);
-
-}
diff --git a/buildscripts/phing/classes/phing/ConfigurationException.php b/buildscripts/phing/classes/phing/ConfigurationException.php
deleted file mode 100755
index 81735e1b..00000000
--- a/buildscripts/phing/classes/phing/ConfigurationException.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/*
- * $Id: 6070efdfa67cb145fd48525e88737d39c8eff4b2 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * ConfigurationException is thrown by Phing during the configuration and setup phase of the project.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing
- */
-class ConfigurationException extends Exception {
-
- /**
- * Location in the xml file.
- * @var Location
- */
- protected $location;
-
- /**
- * The nested "cause" exception.
- * @var Exception
- */
- protected $cause;
-
- /**
- * Construct a ConfigurationException.
- * Supported signatures:
- * throw new BuildException($causeExc);
- * throw new BuildException($msg);
- * throw new BuildException($msg, $causeExc);
- * @param Exception|string $p1
- * @param Exception|null $p2
- */
- public function __construct($p1, $p2 = null) {
-
- $cause = null;
- $msg = "";
-
- if ($p2 !== null) {
- if ($p2 instanceof Exception) {
- $cause = $p2;
- $msg = $p1;
- }
- } elseif ($p1 instanceof Exception) {
- $cause = $p1;
- } else {
- $msg = $p1;
- }
-
- parent::__construct($msg);
-
- if ($cause !== null) {
- $this->cause = $cause;
- $this->message .= " [wrapped: " . $cause->getMessage() ."]";
- }
- }
-
- /**
- * Gets the cause exception.
- *
- * @return Exception
- */
- public function getCause() {
- return $this->cause;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/IntrospectionHelper.php b/buildscripts/phing/classes/phing/IntrospectionHelper.php
deleted file mode 100755
index 8bcf2456..00000000
--- a/buildscripts/phing/classes/phing/IntrospectionHelper.php
+++ /dev/null
@@ -1,575 +0,0 @@
-<?php
-
-/*
- * $Id: a5f2dbd71bafd2c363026d911132c3b47bf44239 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/types/Reference.php';
-include_once 'phing/types/Path.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * Helper class that collects the methods that a task or nested element
- * holds to set attributes, create nested elements or hold PCDATA
- * elements.
- *
- *<ul>
- * <li><strong>SMART-UP INLINE DOCS</strong></li>
- * <li><strong>POLISH-UP THIS CLASS</strong></li>
- *</ul>
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id: a5f2dbd71bafd2c363026d911132c3b47bf44239 $
- * @package phing
- */
-class IntrospectionHelper {
-
-
-
- /**
- * Holds the attribute setter methods.
- *
- * @var array string[]
- */
- private $attributeSetters = array();
-
- /**
- * Holds methods to create nested elements.
- *
- * @var array string[]
- */
- private $nestedCreators = array();
-
- /**
- * Holds methods to store configured nested elements.
- *
- * @var array string[]
- */
- private $nestedStorers = array();
-
- /**
- * Map from attribute names to nested types.
- */
- private $nestedTypes = array();
-
- /**
- * New idea in phing: any class can register certain
- * keys -- e.g. "task.current_file" -- which can be used in
- * task attributes, if supported. In the build XML these
- * are referred to like this:
- * <regexp pattern="\n" replace="%{task.current_file}"/>
- * In the type/task a listener method must be defined:
- * function setListeningReplace($slot) {}
- * @var array string[]
- */
- private $slotListeners = array();
-
- /**
- * The method to add PCDATA stuff.
- *
- * @var string Method name of the addText (redundant?) method, if class supports it :)
- */
- private $methodAddText = null;
-
- /**
- * The Class that's been introspected.
- *
- * @var object
- * @access private
- */
- private $bean;
-
- /**
- * The cache of IntrospectionHelper classes instantiated by getHelper().
- * @var array IntrospectionHelpers[]
- */
- private static $helpers = array();
-
- /**
- * Factory method for helper objects.
- *
- * @param string $class The class to create a Helper for
- */
- public static function getHelper($class) {
- if (!isset(self::$helpers[$class])) {
- self::$helpers[$class] = new IntrospectionHelper($class);
- }
- return self::$helpers[$class];
- }
-
- /**
- * This function constructs a new introspection helper for a specific class.
- *
- * This method loads all methods for the specified class and categorizes them
- * as setters, creators, slot listeners, etc. This way, the setAttribue() doesn't
- * need to perform any introspection -- either the requested attribute setter/creator
- * exists or it does not & a BuildException is thrown.
- *
- * @param string $class The classname for this IH.
- */
- public function __construct($class) {
-
- $this->bean = new ReflectionClass($class);
-
- //$methods = get_class_methods($bean);
- foreach($this->bean->getMethods() as $method) {
-
- if ($method->isPublic()) {
-
- // We're going to keep case-insensitive method names
- // for as long as we're allowed :) It makes it much
- // easier to map XML attributes to PHP class method names.
- $name = strtolower($method->getName());
-
- // There are a few "reserved" names that might look like attribute setters
- // but should actually just be skipped. (Note: this means you can't ever
- // have an attribute named "location" or "tasktype" or a nested element named "task".)
- if ($name === "setlocation" || $name === "settasktype" || $name === "addtask") {
- continue;
- }
-
- if ($name === "addtext") {
-
- $this->methodAddText = $method;
-
- } elseif (strpos($name, "setlistening") === 0) {
-
- // Phing supports something unique called "RegisterSlots"
- // These are dynamic values that use a basic slot system so that
- // classes can register to listen to specific slots, and the value
- // will always be grabbed from the slot (and never set in the project
- // component). This is useful for things like tracking the current
- // file being processed by a filter (e.g. AppendTask sets an append.current_file
- // slot, which can be ready by the XSLTParam type.)
-
- if (count($method->getParameters()) !== 1) {
- throw new BuildException($method->getDeclaringClass()->getName()."::".$method->getName()."() must take exactly one parameter.");
- }
-
- $this->slotListeners[$name] = $method;
-
- } elseif (strpos($name, "set") === 0) {
-
- // A standard attribute setter.
-
- if (count($method->getParameters()) !== 1) {
- throw new BuildException($method->getDeclaringClass()->getName()."::".$method->getName()."() must take exactly one parameter.");
- }
-
- $this->attributeSetters[$name] = $method;
-
- } elseif (strpos($name, "create") === 0) {
-
- if ($method->getNumberOfRequiredParameters() > 0) {
- throw new BuildException($method->getDeclaringClass()->getName()."::".$method->getName()."() may not take any parameters.");
- }
-
- // Because PHP doesn't support return types, we are going to do
- // two things here to guess return type:
- // 1) parse comments for an explicit value
- // 2) if that fails, assume that the part of the method after "create"
- // is the name of the return type (in many cases it is not)
-
- // This isn't super important -- i.e. we're not instantaiting classes
- // based on this information. It's more just so that IntrospectionHelper
- // can keep track of all the nested types -- and provide more helpful
- // exception messages, etc.
-
- preg_match('/@return[\s]+([\w]+)/', $method->getDocComment(), $matches);
- if (!empty($matches[1]) && class_exists($matches[1], false)) {
- $this->nestedTypes[$name] = $matches[1];
- } else {
- // assume that method createEquals() creates object of type "Equals"
- // (that example would be false, of course)
- $this->nestedTypes[$name] = $this->getPropertyName($name, "create");
- }
-
- $this->nestedCreators[$name] = $method;
-
- } elseif (strpos($name, "addconfigured") === 0) {
-
- // *must* use class hints if using addConfigured ...
-
- // 1 param only
- $params = $method->getParameters();
-
- if (count($params) < 1) {
- throw new BuildException($method->getDeclaringClass()->getName()."::".$method->getName()."() must take at least one parameter.");
- }
-
- if (count($params) > 1) {
- $this->warn($method->getDeclaringClass()->getName()."::".$method->getName()."() takes more than one parameter. (IH only uses the first)");
- }
-
- $classname = null;
-
- if (($hint = $params[0]->getClass()) !== null) {
- $classname = $hint->getName();
- }
-
- if ($classname === null) {
- throw new BuildException($method->getDeclaringClass()->getName()."::".$method->getName()."() method MUST use a class hint to indicate the class type of parameter.");
- }
-
- $this->nestedTypes[$name] = $classname;
-
- $this->nestedStorers[$name] = $method;
-
- } elseif (strpos($name, "add") === 0) {
-
- // *must* use class hints if using add ...
-
- // 1 param only
- $params = $method->getParameters();
- if (count($params) < 1) {
- throw new BuildException($method->getDeclaringClass()->getName()."::".$method->getName()."() must take at least one parameter.");
- }
-
- if (count($params) > 1) {
- $this->warn($method->getDeclaringClass()->getName()."::".$method->getName()."() takes more than one parameter. (IH only uses the first)");
- }
-
- $classname = null;
-
- if (($hint = $params[0]->getClass()) !== null) {
- $classname = $hint->getName();
- }
-
- // we don't use the classname here, but we need to make sure it exists before
- // we later try to instantiate a non-existant class
- if ($classname === null) {
- throw new BuildException($method->getDeclaringClass()->getName()."::".$method->getName()."() method MUST use a class hint to indicate the class type of parameter.");
- }
-
- $this->nestedCreators[$name] = $method;
- }
- } // if $method->isPublic()
- } // foreach
- }
-
-
- /**
- * Sets the named attribute.
- * @param Project $project
- * @param string $element
- * @param string $attributeName
- * @param mixed $value
- */
- public function setAttribute(Project $project, $element, $attributeName, &$value) {
-
- // we want to check whether the value we are setting looks like
- // a slot-listener variable: %{task.current_file}
- //
- // slot-listener variables are not like properties, in that they cannot be mixed with
- // other text values. The reason for this disparity is that properties are only
- // set when first constructing objects from XML, whereas slot-listeners are always dynamic.
- //
- // This is made possible by PHP5 (objects automatically passed by reference) and PHP's loose
- // typing.
-
- if (StringHelper::isSlotVar($value)) {
-
- $as = "setlistening" . strtolower($attributeName);
-
- if (!isset($this->slotListeners[$as])) {
- $msg = $this->getElementName($project, $element) . " doesn't support a slot-listening '$attributeName' attribute.";
- throw new BuildException($msg);
- }
-
- $method = $this->slotListeners[$as];
-
- $key = StringHelper::slotVar($value);
- $value = Register::getSlot($key); // returns a RegisterSlot object which will hold current value of that register (accessible using getValue())
-
- } else {
-
- // Traditional value options
-
- $as = "set".strtolower($attributeName);
-
- if (!isset($this->attributeSetters[$as])) {
- $msg = $this->getElementName($project, $element) . " doesn't support the '$attributeName' attribute.";
- throw new BuildException($msg);
- }
-
- $method = $this->attributeSetters[$as];
-
- if ($as == "setrefid") {
- $value = new Reference($value);
- } else {
- // value is a string representation of a boolean type,
- // convert it to primitive
- if (StringHelper::isBoolean($value)) {
-
- $value = StringHelper::booleanValue($value);
- }
-
- // does method expect a PhingFile object? if so, then
- // pass a project-relative file.
- $params = $method->getParameters();
-
- $classname = null;
-
- if (($hint = $params[0]->getClass()) !== null) {
- $classname = $hint->getName();
- }
-
- // there should only be one param; we'll just assume ....
- if ($classname !== null) {
- switch(strtolower($classname)) {
- case "phingfile":
- $value = $project->resolveFile($value);
- break;
- case "path":
- $value = new Path($project, $value);
- break;
- case "reference":
- $value = new Reference($value);
- break;
- // any other object params we want to support should go here ...
- }
-
- } // if hint !== null
-
- } // if not setrefid
-
- } // if is slot-listener
-
- try {
- $project->log(" -calling setter ".$method->getDeclaringClass()->getName()."::".$method->getName()."()", Project::MSG_DEBUG);
- $method->invoke($element, $value);
- } catch(Exception $exc) {
- throw new BuildException($exc);
- }
-
- }
-
- /**
- * Adds PCDATA areas.
- *
- * @param Project $project
- * @param string $element
- * @param string $text
- */
- public function addText(Project $project, $element, $text) {
- if ($this->methodAddText === null) {
- $msg = $this->getElementName($project, $element)." doesn't support nested text data.";
- throw new BuildException($msg);
- }
- try {
- $method = $this->methodAddText;
- $method->invoke($element, $text);
- } catch (Exception $exc) {
- throw new BuildException($exc);
- }
- }
-
- /**
- * Creates a named nested element.
- *
- * Valid creators can be in the form createFoo() or addFoo(Bar).
- *
- * @param Project $project
- * @param string $element
- * @param string $elementName
- * @return object Returns the nested element.
- * @throws BuildException
- */
- public function createElement(Project $project, $element, $elementName) {
-
- $addMethod = "add".strtolower($elementName);
- $createMethod = "create".strtolower($elementName);
- $nestedElement = null;
-
- if (isset($this->nestedCreators[$createMethod])) {
-
- $method = $this->nestedCreators[$createMethod];
- try { // try to invoke the creator method on object
- $project->log(" -calling creator ".$method->getDeclaringClass()->getName()."::".$method->getName()."()", Project::MSG_DEBUG);
- $nestedElement = $method->invoke($element);
- } catch (Exception $exc) {
- throw new BuildException($exc);
- }
-
- } elseif (isset($this->nestedCreators[$addMethod])) {
-
- $method = $this->nestedCreators[$addMethod];
-
- // project components must use class hints to support the add methods
-
- try { // try to invoke the adder method on object
-
- $project->log(" -calling adder ".$method->getDeclaringClass()->getName()."::".$method->getName()."()", Project::MSG_DEBUG);
- // we've already assured that correct num of params
- // exist and that method is using class hints
- $params = $method->getParameters();
-
- $classname = null;
-
- if (($hint = $params[0]->getClass()) !== null) {
- $classname = $hint->getName();
- }
-
- // create a new instance of the object and add it via $addMethod
- $nestedElement = new $classname();
-
- $method->invoke($element, $nestedElement);
-
- } catch (Exception $exc) {
- throw new BuildException($exc);
- }
- } else {
- $msg = $this->getElementName($project, $element) . " doesn't support the '$elementName' creator/adder.";
- throw new BuildException($msg);
- }
-
- if ($nestedElement instanceof ProjectComponent) {
- $nestedElement->setProject($project);
- }
-
- return $nestedElement;
- }
-
- /**
- * Creates a named nested element.
- *
- * @param Project $project
- * @param string $element
- * @param string $child
- * @param string|null $elementName
- * @return void
- * @throws BuildException
- */
- public function storeElement($project, $element, $child, $elementName = null) {
-
- if ($elementName === null) {
- return;
- }
-
- $storer = "addconfigured".strtolower($elementName);
-
- if (isset($this->nestedStorers[$storer])) {
-
- $method = $this->nestedStorers[$storer];
-
- try {
- $project->log(" -calling storer ".$method->getDeclaringClass()->getName()."::".$method->getName()."()", Project::MSG_DEBUG);
- $method->invoke($element, $child);
- } catch (Exception $exc) {
- throw new BuildException($exc);
- }
- }
-
- }
-
- /**
- * Does the introspected class support PCDATA?
- * @return boolean
- */
- public function supportsCharacters() {
- return ($this->methodAddText !== null);
- }
-
- /**
- * Return all attribues supported by the introspected class.
- * @return string[]
- */
- public function getAttributes() {
- $attribs = array();
- foreach (array_keys($this->attributeSetters) as $setter) {
- $attribs[] =$this->getPropertyName($setter, "set");
- }
- return $attribs;
- }
-
- /**
- * Return all nested elements supported by the introspected class.
- * @return string[]
- */
- public function getNestedElements() {
- return $this->nestedTypes;
- }
-
- /**
- * Get the the name for an element.
- * When possible the full classnam (phing.tasks.system.PropertyTask) will
- * be returned. If not available (loaded in taskdefs or typedefs) then the
- * XML element name will be returned.
- *
- * @param Project $project
- * @param object $element The Task or type element.
- * @return string Fully qualified class name of element when possible.
- */
- public function getElementName(Project $project, $element) {
-
- $taskdefs = $project->getTaskDefinitions();
- $typedefs = $project->getDataTypeDefinitions();
-
- // check if class of element is registered with project (tasks & types)
- // most element types don't have a getTag() method
- $elClass = get_class($element);
-
- if (!in_array('getTag', get_class_methods($elClass))) {
- // loop through taskdefs and typesdefs and see if the class name
- // matches (case-insensitive) any of the classes in there
- foreach(array_merge($taskdefs, $typedefs) as $elName => $class) {
- if (0 === strcasecmp($elClass, StringHelper::unqualify($class))) {
- return $class;
- }
- }
- return "$elClass (unknown)";
- } else {
- // ->getTag() method does exist, so use it
- $elName = $element->getTag();
- if (isset($taskdefs[$elName])) {
- return $taskdefs[$elName];
- } elseif (isset($typedefs[$elName])) {
-
- return $typedefs[$elName];
- } else {
- return "$elName (unknown)";
- }
- }
- }
-
- /**
- * Extract the name of a property from a method name - subtracting a given prefix.
- *
- * @param string $methodName
- * @param string $prefix
- * @return string
- */
- public function getPropertyName($methodName, $prefix) {
- $start = strlen($prefix);
- return strtolower(substr($methodName, $start));
- }
-
- /**
- * Prints warning message to screen if -debug was used.
- * @param string $msg
- */
- public function warn($msg) {
- if (Phing::getMsgOutputLevel() === Project::MSG_DEBUG) {
- print("[IntrospectionHelper] " . $msg . "\n");
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/Phing.php b/buildscripts/phing/classes/phing/Phing.php
deleted file mode 100755
index d663ee42..00000000
--- a/buildscripts/phing/classes/phing/Phing.php
+++ /dev/null
@@ -1,1414 +0,0 @@
-<?php
-/*
- * $Id: 1ad418f51ac07c9afaadf1c1f4befd5535f5b390 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Project.php';
-require_once 'phing/ProjectComponent.php';
-require_once 'phing/Target.php';
-require_once 'phing/Task.php';
-
-include_once 'phing/BuildException.php';
-include_once 'phing/ConfigurationException.php';
-include_once 'phing/BuildEvent.php';
-
-include_once 'phing/parser/Location.php';
-include_once 'phing/parser/ExpatParser.php';
-include_once 'phing/parser/AbstractHandler.php';
-include_once 'phing/parser/ProjectConfigurator.php';
-include_once 'phing/parser/RootHandler.php';
-include_once 'phing/parser/ProjectHandler.php';
-include_once 'phing/parser/TaskHandler.php';
-include_once 'phing/parser/TargetHandler.php';
-include_once 'phing/parser/DataTypeHandler.php';
-include_once 'phing/parser/NestedElementHandler.php';
-
-include_once 'phing/system/util/Properties.php';
-include_once 'phing/util/StringHelper.php';
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/system/io/OutputStream.php';
-include_once 'phing/system/io/FileOutputStream.php';
-include_once 'phing/system/io/FileReader.php';
-include_once 'phing/system/util/Register.php';
-
-/**
- * Entry point into Phing. This class handles the full lifecycle of a build -- from
- * parsing & handling commandline arguments to assembling the project to shutting down
- * and cleaning up in the end.
- *
- * If you are invoking Phing from an external application, this is still
- * the class to use. Your applicaiton can invoke the start() method, passing
- * any commandline arguments or additional properties.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: 1ad418f51ac07c9afaadf1c1f4befd5535f5b390 $
- * @package phing
- */
-class Phing {
-
- /** The default build file name */
- const DEFAULT_BUILD_FILENAME = "build.xml";
-
- /** Our current message output status. Follows Project::MSG_XXX */
- private static $msgOutputLevel = Project::MSG_INFO;
-
- /** PhingFile that we are using for configuration */
- private $buildFile = null;
-
- /** The build targets */
- private $targets = array();
-
- /**
- * Set of properties that are passed in from commandline or invoking code.
- * @var Properties
- */
- private static $definedProps;
-
- /** Names of classes to add as listeners to project */
- private $listeners = array();
-
- private $loggerClassname = null;
-
- /** The class to handle input (can be only one). */
- private $inputHandlerClassname;
-
- /** Indicates if this phing should be run */
- private $readyToRun = false;
-
- /** Indicates we should only parse and display the project help information */
- private $projectHelp = false;
-
- /** Used by utility function getResourcePath() */
- private static $importPaths;
-
- /** System-wide static properties (moved from System) */
- private static $properties = array();
-
- /** Static system timer. */
- private static $timer;
-
- /** The current Project */
- private static $currentProject;
-
- /** Whether to capture PHP errors to buffer. */
- private static $phpErrorCapture = false;
-
- /** Array of captured PHP errors */
- private static $capturedPhpErrors = array();
-
- /**
- * @var OUtputStream Stream for standard output.
- */
- private static $out;
-
- /**
- * @var OutputStream Stream for error output.
- */
- private static $err;
-
- /**
- * @var boolean Whether we are using a logfile.
- */
- private static $isLogFileUsed = false;
-
- /**
- * Array to hold original ini settings that Phing changes (and needs
- * to restore in restoreIni() method).
- *
- * @var array Struct of array(setting-name => setting-value)
- * @see restoreIni()
- */
- private static $origIniSettings = array();
-
- /**
- * Entry point allowing for more options from other front ends.
- *
- * This method encapsulates the complete build lifecycle.
- *
- * @param array $args The commandline args passed to phing shell script.
- * @param array $additionalUserProperties Any additional properties to be passed to Phing (alternative front-end might implement this).
- * These additional properties will be available using the getDefinedProperty() method and will
- * be added to the project's "user" properties
- * @see execute()
- * @see runBuild()
- * @throws Exception - if there is an error during build
- */
- public static function start($args, array $additionalUserProperties = null) {
-
- try {
- $m = new Phing();
- $m->execute($args);
- } catch (Exception $exc) {
- self::handleLogfile();
- throw $exc;
- }
-
- if ($additionalUserProperties !== null) {
- foreach($additionalUserProperties as $key => $value) {
- $m->setDefinedProperty($key, $value);
- }
- }
-
- try {
- $m->runBuild();
- } catch(Exception $exc) {
- self::handleLogfile();
- throw $exc;
- }
-
- // everything fine, shutdown
- self::handleLogfile();
- }
-
- /**
- * Prints the message of the Exception if it's not null.
- * @param Exception $t
- */
- public static function printMessage(Exception $t) {
- if (self::$err === null) { // Make sure our error output is initialized
- self::initializeOutputStreams();
- }
- if (self::getMsgOutputLevel() >= Project::MSG_VERBOSE) {
- self::$err->write($t->__toString() . PHP_EOL);
- } else {
- self::$err->write($t->getMessage() . PHP_EOL);
- }
- }
-
- /**
- * Sets the stdout and stderr streams if they are not already set.
- */
- private static function initializeOutputStreams() {
- if (self::$out === null) {
- self::$out = new OutputStream(fopen("php://stdout", "w"));
- }
- if (self::$err === null) {
- self::$err = new OutputStream(fopen("php://stderr", "w"));
- }
- }
-
- /**
- * Sets the stream to use for standard (non-error) output.
- * @param OutputStream $stream The stream to use for standard output.
- */
- public static function setOutputStream(OutputStream $stream) {
- self::$out = $stream;
- }
-
- /**
- * Gets the stream to use for standard (non-error) output.
- * @return OutputStream
- */
- public static function getOutputStream() {
- return self::$out;
- }
-
- /**
- * Sets the stream to use for error output.
- * @param OutputStream $stream The stream to use for error output.
- */
- public static function setErrorStream(OutputStream $stream) {
- self::$err = $stream;
- }
-
- /**
- * Gets the stream to use for error output.
- * @return OutputStream
- */
- public static function getErrorStream() {
- return self::$err;
- }
-
- /**
- * Close logfiles, if we have been writing to them.
- *
- * @since Phing 2.3.0
- */
- private static function handleLogfile() {
- if (self::$isLogFileUsed) {
- self::$err->close();
- self::$out->close();
- }
- }
-
- /**
- * Making output level a static property so that this property
- * can be accessed by other parts of the system, enabling
- * us to display more information -- e.g. backtraces -- for "debug" level.
- * @return int
- */
- public static function getMsgOutputLevel() {
- return self::$msgOutputLevel;
- }
-
- /**
- * Command line entry point. This method kicks off the building
- * of a project object and executes a build using either a given
- * target or the default target.
- *
- * @param array $args Command line args.
- * @return void
- */
- public static function fire($args) {
- self::start($args, null);
- }
-
- /**
- * Setup/initialize Phing environment from commandline args.
- * @param array $args commandline args passed to phing shell.
- * @return void
- */
- public function execute($args) {
-
- self::$definedProps = new Properties();
- $this->searchForThis = null;
-
- // 1) First handle any options which should always
- // Note: The order in which these are executed is important (if multiple of these options are specified)
-
- if (in_array('-help', $args) || in_array('-h', $args)) {
- $this->printUsage();
- return;
- }
-
- if (in_array('-version', $args) || in_array('-v', $args)) {
- $this->printVersion();
- return;
- }
-
- // 2) Next pull out stand-alone args.
- // Note: The order in which these are executed is important (if multiple of these options are specified)
-
- if (false !== ($key = array_search('-quiet', $args, true)) || false !== ($key = array_search('-q', $args, true))) {
- self::$msgOutputLevel = Project::MSG_WARN;
- unset($args[$key]);
- }
-
- if (false !== ($key = array_search('-verbose', $args, true))) {
- self::$msgOutputLevel = Project::MSG_VERBOSE;
- unset($args[$key]);
- }
-
- if (false !== ($key = array_search('-debug', $args, true))) {
- self::$msgOutputLevel = Project::MSG_DEBUG;
- unset($args[$key]);
- }
-
- // 3) Finally, cycle through to parse remaining args
- //
- $keys = array_keys($args); // Use keys and iterate to max(keys) since there may be some gaps
- $max = $keys ? max($keys) : -1;
- for($i=0; $i <= $max; $i++) {
-
- if (!array_key_exists($i, $args)) {
- // skip this argument, since it must have been removed above.
- continue;
- }
-
- $arg = $args[$i];
-
- if ($arg == "-logfile") {
- try {
- // see: http://phing.info/trac/ticket/65
- if (!isset($args[$i+1])) {
- $msg = "You must specify a log file when using the -logfile argument\n";
- throw new ConfigurationException($msg);
- } else {
- $logFile = new PhingFile($args[++$i]);
- $out = new FileOutputStream($logFile); // overwrite
- self::setOutputStream($out);
- self::setErrorStream($out);
- self::$isLogFileUsed = true;
- }
- } catch (IOException $ioe) {
- $msg = "Cannot write on the specified log file. Make sure the path exists and you have write permissions.";
- throw new ConfigurationException($msg, $ioe);
- }
- } elseif ($arg == "-buildfile" || $arg == "-file" || $arg == "-f") {
- if (!isset($args[$i+1])) {
- $msg = "You must specify a buildfile when using the -buildfile argument.";
- throw new ConfigurationException($msg);
- } else {
- $this->buildFile = new PhingFile($args[++$i]);
- }
- } elseif ($arg == "-listener") {
- if (!isset($args[$i+1])) {
- $msg = "You must specify a listener class when using the -listener argument";
- throw new ConfigurationException($msg);
- } else {
- $this->listeners[] = $args[++$i];
- }
- } elseif (StringHelper::startsWith("-D", $arg)) {
- $name = substr($arg, 2);
- $value = null;
- $posEq = strpos($name, "=");
- if ($posEq !== false) {
- $value = substr($name, $posEq+1);
- $name = substr($name, 0, $posEq);
- } elseif ($i < count($args)-1 && !StringHelper::startsWith("-D", $args[$i + 1])) {
- $value = $args[++$i];
- }
- self::$definedProps->setProperty($name, $value);
- } elseif ($arg == "-logger") {
- if (!isset($args[$i+1])) {
- $msg = "You must specify a classname when using the -logger argument";
- throw new ConfigurationException($msg);
- } else {
- $this->loggerClassname = $args[++$i];
- }
- } elseif ($arg == "-inputhandler") {
- if ($this->inputHandlerClassname !== null) {
- throw new ConfigurationException("Only one input handler class may be specified.");
- }
- if (!isset($args[$i+1])) {
- $msg = "You must specify a classname when using the -inputhandler argument";
- throw new ConfigurationException($msg);
- } else {
- $this->inputHandlerClassname = $args[++$i];
- }
- } elseif ($arg == "-propertyfile") {
- if (!isset($args[$i+1])) {
- $msg = "You must specify a filename when using the -propertyfile argument";
- throw new ConfigurationException($msg);
- } else {
- $p = new Properties();
- $p->load(new PhingFile($args[++$i]));
- foreach ($p->getProperties() as $prop => $value) {
- $this->setProperty($prop, $value);
- }
- }
- } elseif ($arg == "-longtargets") {
- self::$definedProps->setProperty('phing.showlongtargets', 1);
- } elseif ($arg == "-projecthelp" || $arg == "-targets" || $arg == "-list" || $arg == "-l" || $arg == "-p") {
- // set the flag to display the targets and quit
- $this->projectHelp = true;
- } elseif ($arg == "-find") {
- // eat up next arg if present, default to build.xml
- if ($i < count($args)-1) {
- $this->searchForThis = $args[++$i];
- } else {
- $this->searchForThis = self::DEFAULT_BUILD_FILENAME;
- }
- } elseif (substr($arg,0,1) == "-") {
- // we don't have any more args
- self::$err->write("Unknown argument: $arg" . PHP_EOL);
- self::printUsage();
- return;
- } else {
- // if it's no other arg, it may be the target
- array_push($this->targets, $arg);
- }
- }
-
- // if buildFile was not specified on the command line,
- if ($this->buildFile === null) {
- // but -find then search for it
- if ($this->searchForThis !== null) {
- $this->buildFile = $this->_findBuildFile(self::getProperty("user.dir"), $this->searchForThis);
- } else {
- $this->buildFile = new PhingFile(self::DEFAULT_BUILD_FILENAME);
- }
- }
- // make sure buildfile exists
- if (!$this->buildFile->exists()) {
- throw new ConfigurationException("Buildfile: " . $this->buildFile->__toString() . " does not exist!");
- }
-
- // make sure it's not a directory
- if ($this->buildFile->isDirectory()) {
- throw new ConfigurationException("Buildfile: " . $this->buildFile->__toString() . " is a dir!");
- }
-
- $this->readyToRun = true;
- }
-
- /**
- * Helper to get the parent file for a given file.
- *
- * @param PhingFile $file
- * @return PhingFile Parent file or null if none
- */
- private function _getParentFile(PhingFile $file) {
- $filename = $file->getAbsolutePath();
- $file = new PhingFile($filename);
- $filename = $file->getParent();
- return ($filename === null) ? null : new PhingFile($filename);
- }
-
- /**
- * Search parent directories for the build file.
- *
- * Takes the given target as a suffix to append to each
- * parent directory in search of a build file. Once the
- * root of the file-system has been reached an exception
- * is thrown.
- *
- * @param string $start Start file path.
- * @param string $suffix Suffix filename to look for in parents.
- * @return PhingFile A handle to the build file
- *
- * @throws BuildException Failed to locate a build file
- */
- private function _findBuildFile($start, $suffix) {
- $startf = new PhingFile($start);
- $parent = new PhingFile($startf->getAbsolutePath());
- $file = new PhingFile($parent, $suffix);
-
- // check if the target file exists in the current directory
- while (!$file->exists()) {
- // change to parent directory
- $parent = $this->_getParentFile($parent);
-
- // if parent is null, then we are at the root of the fs,
- // complain that we can't find the build file.
- if ($parent === null) {
- throw new ConfigurationException("Could not locate a build file!");
- }
- // refresh our file handle
- $file = new PhingFile($parent, $suffix);
- }
- return $file;
- }
-
- /**
- * Executes the build.
- * @return void
- */
- function runBuild() {
-
- if (!$this->readyToRun) {
- return;
- }
-
- $project = new Project();
-
- self::setCurrentProject($project);
- set_error_handler(array('Phing', 'handlePhpError'));
-
- $error = null;
-
- $this->addBuildListeners($project);
- $this->addInputHandler($project);
-
- // set this right away, so that it can be used in logging.
- $project->setUserProperty("phing.file", $this->buildFile->getAbsolutePath());
-
- try {
- $project->fireBuildStarted();
- $project->init();
- } catch (Exception $exc) {
- $project->fireBuildFinished($exc);
- throw $exc;
- }
-
- $project->setUserProperty("phing.version", $this->getPhingVersion());
-
- $e = self::$definedProps->keys();
- while (count($e)) {
- $arg = (string) array_shift($e);
- $value = (string) self::$definedProps->getProperty($arg);
- $project->setUserProperty($arg, $value);
- }
- unset($e);
-
- $project->setUserProperty("phing.file", $this->buildFile->getAbsolutePath());
-
- // first use the Configurator to create the project object
- // from the given build file.
-
- try {
- ProjectConfigurator::configureProject($project, $this->buildFile);
- } catch (Exception $exc) {
- $project->fireBuildFinished($exc);
- restore_error_handler();
- self::unsetCurrentProject();
- throw $exc;
- }
-
- // make sure that we have a target to execute
- if (count($this->targets) === 0) {
- $this->targets[] = $project->getDefaultTarget();
- }
-
- // make sure that minimum required phing version is satisfied
- try {
- $this->comparePhingVersion($project->getPhingVersion());
- } catch(Exception $exc) {
- $project->fireBuildFinished($exc);
- restore_error_handler();
- self::unsetCurrentProject();
- throw $exc;
- }
-
- // execute targets if help param was not given
- if (!$this->projectHelp) {
-
- try {
- $project->executeTargets($this->targets);
- } catch (Exception $exc) {
- $project->fireBuildFinished($exc);
- restore_error_handler();
- self::unsetCurrentProject();
- throw $exc;
- }
- }
- // if help is requested print it
- if ($this->projectHelp) {
- try {
- $this->printDescription($project);
- $this->printTargets($project);
- } catch (Exception $exc) {
- $project->fireBuildFinished($exc);
- restore_error_handler();
- self::unsetCurrentProject();
- throw $exc;
- }
- }
-
- // finally {
- if (!$this->projectHelp) {
- $project->fireBuildFinished(null);
- }
-
- restore_error_handler();
- self::unsetCurrentProject();
- }
-
- private function comparePhingVersion($version) {
- $current = strtolower(self::getPhingVersion());
- $current = trim(str_replace('phing', '', $current));
-
- // make sure that version checks are not applied to trunk
- if('dev' === $current) {
- return 1;
- }
-
- if(-1 == version_compare($current, $version)) {
- throw new BuildException(
- sprintf('Incompatible Phing version (%s). Version "%s" required.', $current, $version));
- }
- }
-
- /**
- * Bind any registered build listeners to this project.
- *
- * This means adding the logger and any build listeners that were specified
- * with -listener arg.
- *
- * @param Project $project
- * @return void
- */
- private function addBuildListeners(Project $project) {
- // Add the default listener
- $project->addBuildListener($this->createLogger());
-
- foreach($this->listeners as $listenerClassname) {
- try {
- $clz = Phing::import($listenerClassname);
- } catch (Exception $x) {
- $msg = "Unable to instantiate specified listener "
- . "class " . $listenerClassname . " : "
- . $e->getMessage();
- throw new ConfigurationException($msg);
- }
-
- $listener = new $clz();
-
- if ($listener instanceof StreamRequiredBuildLogger) {
- throw new ConfigurationException("Unable to add " . $listenerClassname . " as a listener, since it requires explicit error/output streams. (You can specify it as a -logger.)");
- }
- $project->addBuildListener($listener);
- }
- }
-
- /**
- * Creates the InputHandler and adds it to the project.
- *
- * @param Project $project the project instance.
- *
- * @throws BuildException if a specified InputHandler
- * class could not be loaded.
- */
- private function addInputHandler(Project $project) {
- if ($this->inputHandlerClassname === null) {
- $handler = new DefaultInputHandler();
- } else {
- try {
- $clz = Phing::import($this->inputHandlerClassname);
- $handler = new $clz();
- if ($project !== null && method_exists($handler, 'setProject')) {
- $handler->setProject($project);
- }
- } catch (Exception $e) {
- $msg = "Unable to instantiate specified input handler "
- . "class " . $this->inputHandlerClassname . " : "
- . $e->getMessage();
- throw new ConfigurationException($msg);
- }
- }
- $project->setInputHandler($handler);
- }
-
- /**
- * Creates the default build logger for sending build events to the log.
- * @return BuildLogger The created Logger
- */
- private function createLogger() {
- if ($this->loggerClassname !== null) {
- self::import($this->loggerClassname);
- // get class name part
- $classname = self::import($this->loggerClassname);
- $logger = new $classname;
- if (!($logger instanceof BuildLogger)) {
- throw new BuildException($classname . ' does not implement the BuildLogger interface.');
- }
- } else {
- require_once 'phing/listener/DefaultLogger.php';
- $logger = new DefaultLogger();
- }
- $logger->setMessageOutputLevel(self::$msgOutputLevel);
- $logger->setOutputStream(self::$out);
- $logger->setErrorStream(self::$err);
- return $logger;
- }
-
- /**
- * Sets the current Project
- * @param Project $p
- */
- public static function setCurrentProject($p) {
- self::$currentProject = $p;
- }
-
- /**
- * Unsets the current Project
- */
- public static function unsetCurrentProject() {
- self::$currentProject = null;
- }
-
- /**
- * Gets the current Project.
- * @return Project Current Project or NULL if none is set yet/still.
- */
- public static function getCurrentProject() {
- return self::$currentProject;
- }
-
- /**
- * A static convenience method to send a log to the current (last-setup) Project.
- * If there is no currently-configured Project, then this will do nothing.
- * @param string $message
- * @param int $priority Project::MSG_INFO, etc.
- */
- public static function log($message, $priority = Project::MSG_INFO) {
- $p = self::getCurrentProject();
- if ($p) {
- $p->log($message, $priority);
- }
- }
-
- /**
- * Error handler for PHP errors encountered during the build.
- * This uses the logging for the currently configured project.
- */
- public static function handlePhpError($level, $message, $file, $line) {
-
- // don't want to print supressed errors
- if (error_reporting() > 0) {
-
- if (self::$phpErrorCapture) {
-
- self::$capturedPhpErrors[] = array('message' => $message, 'level' => $level, 'line' => $line, 'file' => $file);
-
- } else {
-
- $message = '[PHP Error] ' . $message;
- $message .= ' [line ' . $line . ' of ' . $file . ']';
-
- switch ($level) {
- case 16384: // E_USER_DEPRECATED
- case 8192: // E_DEPRECATED
- case E_STRICT:
- case E_NOTICE:
- case E_USER_NOTICE:
- self::log($message, Project::MSG_VERBOSE);
- break;
- case E_WARNING:
- case E_USER_WARNING:
- self::log($message, Project::MSG_WARN);
- break;
- case E_ERROR:
- case E_USER_ERROR:
- default:
- self::log($message, Project::MSG_ERR);
-
- } // switch
-
- } // if phpErrorCapture
-
- } // if not @
-
- }
-
- /**
- * Begins capturing PHP errors to a buffer.
- * While errors are being captured, they are not logged.
- */
- public static function startPhpErrorCapture() {
- self::$phpErrorCapture = true;
- self::$capturedPhpErrors = array();
- }
-
- /**
- * Stops capturing PHP errors to a buffer.
- * The errors will once again be logged after calling this method.
- */
- public static function stopPhpErrorCapture() {
- self::$phpErrorCapture = false;
- }
-
- /**
- * Clears the captured errors without affecting the starting/stopping of the capture.
- */
- public static function clearCapturedPhpErrors() {
- self::$capturedPhpErrors = array();
- }
-
- /**
- * Gets any PHP errors that were captured to buffer.
- * @return array array('message' => message, 'line' => line number, 'file' => file name, 'level' => error level)
- */
- public static function getCapturedPhpErrors() {
- return self::$capturedPhpErrors;
- }
-
- /** Prints the usage of how to use this class */
- public static function printUsage() {
-
- $msg = "";
- $msg .= "phing [options] [target [target2 [target3] ...]]" . PHP_EOL;
- $msg .= "Options: " . PHP_EOL;
- $msg .= " -h -help print this message" . PHP_EOL;
- $msg .= " -l -list list available targets in this project" . PHP_EOL;
- $msg .= " -v -version print the version information and exit" . PHP_EOL;
- $msg .= " -q -quiet be extra quiet" . PHP_EOL;
- $msg .= " -verbose be extra verbose" . PHP_EOL;
- $msg .= " -debug print debugging information" . PHP_EOL;
- $msg .= " -longtargets show target descriptions during build" . PHP_EOL;
- $msg .= " -logfile <file> use given file for log" . PHP_EOL;
- $msg .= " -logger <classname> the class which is to perform logging" . PHP_EOL;
- $msg .= " -f -buildfile <file> use given buildfile" . PHP_EOL;
- $msg .= " -D<property>=<value> use value for given property" . PHP_EOL;
- $msg .= " -propertyfile <file> load all properties from file" . PHP_EOL;
- $msg .= " -find <file> search for buildfile towards the root of the" . PHP_EOL;
- $msg .= " filesystem and use it" . PHP_EOL;
- $msg .= " -inputhandler <file> the class to use to handle user input" . PHP_EOL;
- //$msg .= " -recursive <file> search for buildfile downwards and use it" . PHP_EOL;
- $msg .= PHP_EOL;
- $msg .= "Report bugs to <dev@phing.tigris.org>".PHP_EOL;
- self::$err->write($msg);
- }
-
- /**
- * Prints the current Phing version.
- */
- public static function printVersion() {
- self::$out->write(self::getPhingVersion().PHP_EOL);
- }
-
- /**
- * Gets the current Phing version based on VERSION.TXT file.
- * @return string
- * @throws BuildException - if unable to find version file.
- */
- public static function getPhingVersion() {
- $versionPath = self::getResourcePath("phing/etc/VERSION.TXT");
- if ($versionPath === null) {
- $versionPath = self::getResourcePath("etc/VERSION.TXT");
- }
- if ($versionPath === null) {
- throw new ConfigurationException("No VERSION.TXT file found; try setting phing.home environment variable.");
- }
- try { // try to read file
- $buffer = null;
- $file = new PhingFile($versionPath);
- $reader = new FileReader($file);
- $reader->readInto($buffer);
- $buffer = trim($buffer);
- //$buffer = "PHING version 1.0, Released 2002-??-??";
- $phingVersion = $buffer;
- } catch (IOException $iox) {
- throw new ConfigurationException("Can't read version information file");
- }
- return $phingVersion;
- }
-
- /**
- * Print the project description, if any
- */
- public static function printDescription(Project $project) {
- if ($project->getDescription() !== null) {
- self::$out->write($project->getDescription() . PHP_EOL);
- }
- }
-
- /** Print out a list of all targets in the current buildfile */
- function printTargets($project) {
- // find the target with the longest name
- $maxLength = 0;
- $targets = $project->getTargets();
- $targetNames = array_keys($targets);
- $targetName = null;
- $targetDescription = null;
- $currentTarget = null;
-
- // split the targets in top-level and sub-targets depending
- // on the presence of a description
-
- $subNames = array();
- $topNameDescMap = array();
-
- foreach($targets as $currentTarget) {
- $targetName = $currentTarget->getName();
- $targetDescription = $currentTarget->getDescription();
- if ($currentTarget->isHidden()) {
- continue;
- }
-
- // subtargets are targets w/o descriptions
- if ($targetDescription === null) {
- $subNames[] = $targetName;
- } else {
- // topNames and topDescriptions are handled later
- // here we store in hash map (for sorting purposes)
- $topNameDescMap[$targetName] = $targetDescription;
- if (strlen($targetName) > $maxLength) {
- $maxLength = strlen($targetName);
- }
- }
- }
-
- // Sort the arrays
- sort($subNames); // sort array values, resetting keys (which are numeric)
- ksort($topNameDescMap); // sort the keys (targetName) keeping key=>val associations
-
- $topNames = array_keys($topNameDescMap);
- $topDescriptions = array_values($topNameDescMap);
-
- $defaultTarget = $project->getDefaultTarget();
-
- if ($defaultTarget !== null && $defaultTarget !== "") {
- $defaultName = array();
- $defaultDesc = array();
- $defaultName[] = $defaultTarget;
-
- $indexOfDefDesc = array_search($defaultTarget, $topNames, true);
- if ($indexOfDefDesc !== false && $indexOfDefDesc >= 0) {
- $defaultDesc = array();
- $defaultDesc[] = $topDescriptions[$indexOfDefDesc];
- }
-
- $this->_printTargets($defaultName, $defaultDesc, "Default target:", $maxLength);
-
- }
- $this->_printTargets($topNames, $topDescriptions, "Main targets:", $maxLength);
- $this->_printTargets($subNames, null, "Subtargets:", 0);
- }
-
- /**
- * Writes a formatted list of target names with an optional description.
- *
- * @param array $names The names to be printed.
- * Must not be <code>null</code>.
- * @param array $descriptions The associated target descriptions.
- * May be <code>null</code>, in which case
- * no descriptions are displayed.
- * If non-<code>null</code>, this should have
- * as many elements as <code>names</code>.
- * @param string $heading The heading to display.
- * Should not be <code>null</code>.
- * @param int $maxlen The maximum length of the names of the targets.
- * If descriptions are given, they are padded to this
- * position so they line up (so long as the names really
- * <i>are</i> shorter than this).
- */
- private function _printTargets($names, $descriptions, $heading, $maxlen) {
-
- $spaces = ' ';
- while (strlen($spaces) < $maxlen) {
- $spaces .= $spaces;
- }
- $msg = "";
- $msg .= $heading . PHP_EOL;
- $msg .= str_repeat("-",79) . PHP_EOL;
-
- $total = count($names);
- for($i=0; $i < $total; $i++) {
- $msg .= " ";
- $msg .= $names[$i];
- if (!empty($descriptions)) {
- $msg .= substr($spaces, 0, $maxlen - strlen($names[$i]) + 2);
- $msg .= $descriptions[$i];
- }
- $msg .= PHP_EOL;
- }
- if ($total > 0) {
- self::$out->write($msg . PHP_EOL);
- }
- }
-
- /**
- * Import a dot-path notation class path.
- * @param string $dotPath
- * @param mixed $classpath String or object supporting __toString()
- * @return string The unqualified classname (which can be instantiated).
- * @throws BuildException - if cannot find the specified file
- */
- public static function import($dotPath, $classpath = null) {
-
- /// check if this is a PEAR-style path (@link http://pear.php.net/manual/en/standards.naming.php)
- if (strpos($dotPath, '.') === false && strpos($dotPath, '_') !== false) {
- $classname = $dotPath;
- $dotPath = str_replace('_', '.', $dotPath);
- } else {
- $classname = StringHelper::unqualify($dotPath);
- }
-
- // first check to see that the class specified hasn't already been included.
- // (this also handles case where this method is called w/ a classname rather than dotpath)
- if (class_exists($classname)) {
- return $classname;
- }
-
- $dotClassname = basename($dotPath);
- $dotClassnamePos = strlen($dotPath) - strlen($dotClassname);
-
- // 1- temporarily replace escaped '.' with another illegal char (#)
- $tmp = str_replace('\.', '##', $dotClassname);
- // 2- swap out the remaining '.' with DIR_SEP
- $tmp = strtr($tmp, '.', DIRECTORY_SEPARATOR);
- // 3- swap back the escaped '.'
- $tmp = str_replace('##', '.', $tmp);
-
- $classFile = $tmp . ".php";
-
- $path = substr_replace($dotPath, $classFile, $dotClassnamePos);
-
- Phing::__import($path, $classpath);
-
- return $classname;
- }
-
- /**
- * Import a PHP file
- * @param string $path Path to the PHP file
- * @param mixed $classpath String or object supporting __toString()
- * @throws BuildException - if cannot find the specified file
- */
- public static function __import($path, $classpath = null) {
-
- if ($classpath) {
-
- // Apparently casting to (string) no longer invokes __toString() automatically.
- if (is_object($classpath)) {
- $classpath = $classpath->__toString();
- }
-
- // classpaths are currently additive, but we also don't want to just
- // indiscriminantly prepand/append stuff to the include_path. This means
- // we need to parse current incldue_path, and prepend any
- // specified classpath locations that are not already in the include_path.
- //
- // NOTE: the reason why we do it this way instead of just changing include_path
- // and then changing it back, is that in many cases applications (e.g. Propel) will
- // include/require class files from within method calls. This means that not all
- // necessary files will be included in this import() call, and hence we can't
- // change the include_path back without breaking those apps. While this method could
- // be more expensive than switching & switching back (not sure, but maybe), it makes it
- // possible to write far less expensive run-time applications (e.g. using Propel), which is
- // really where speed matters more.
-
- $curr_parts = explode(PATH_SEPARATOR, get_include_path());
- $add_parts = explode(PATH_SEPARATOR, $classpath);
- $new_parts = array_diff($add_parts, $curr_parts);
- if ($new_parts) {
- set_include_path(implode(PATH_SEPARATOR, array_merge($new_parts, $curr_parts)));
- }
- }
-
- $ret = include_once($path);
-
- if ($ret === false) {
- $msg = "Error importing $path";
- if (self::getMsgOutputLevel() >= Project::MSG_DEBUG) {
- $x = new Exception("for-path-trace-only");
- $msg .= $x->getTraceAsString();
- }
- throw new ConfigurationException($msg);
- }
- }
-
- /**
- * Looks on include path for specified file.
- * @return string File found (null if no file found).
- */
- public static function getResourcePath($path) {
-
- if (self::$importPaths === null) {
- $paths = get_include_path();
- self::$importPaths = explode(PATH_SEPARATOR, ini_get("include_path"));
- }
-
- $path = str_replace('\\', DIRECTORY_SEPARATOR, $path);
- $path = str_replace('/', DIRECTORY_SEPARATOR, $path);
-
- foreach (self::$importPaths as $prefix) {
- $testPath = $prefix . DIRECTORY_SEPARATOR . $path;
- if (file_exists($testPath)) {
- return $testPath;
- }
- }
-
- // Check for the property phing.home
- $homeDir = self::getProperty('phing.home');
- if ($homeDir) {
- $testPath = $homeDir . DIRECTORY_SEPARATOR . $path;
- if (file_exists($testPath)) {
- return $testPath;
- }
- }
-
- // If we are using this via PEAR then check for the file in the data dir
- // This is a bit of a hack, but works better than previous solution of assuming
- // data_dir is on the include_path.
- $dataDir = '@DATA-DIR@';
- if ($dataDir{0} != '@') { // if we're using PEAR then the @ DATA-DIR @ token will have been substituted.
- if (!file_exists($dataDir)) {
- self::log("The PEAR data_dir setting is incorrect: {$dataDir}.", Project::MSG_ERR);
- self::log("Please edit using 'pear config-set data_dir ...' and re-install Phing.", Project::MSG_ERR);
- return null;
- }
-
- $testPath = $dataDir . DIRECTORY_SEPARATOR . $path;
- if (file_exists($testPath)) {
- return $testPath;
- }
- } else {
- // We're not using PEAR, so do one additional check based on path of
- // current file (Phing.php)
- $maybeHomeDir = realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..');
- $testPath = $maybeHomeDir . DIRECTORY_SEPARATOR . $path;
- if (file_exists($testPath)) {
- return $testPath;
- }
- }
-
- return null;
- }
-
- // -------------------------------------------------------------------------------------------
- // System-wide methods (moved from System class, which had namespace conflicts w/ PEAR System)
- // -------------------------------------------------------------------------------------------
-
- /**
- * Set System constants which can be retrieved by calling Phing::getProperty($propName).
- * @return void
- */
- private static function setSystemConstants() {
-
- /*
- * PHP_OS returns on
- * WindowsNT4.0sp6 => WINNT
- * Windows2000 => WINNT
- * Windows ME => WIN32
- * Windows 98SE => WIN32
- * FreeBSD 4.5p7 => FreeBSD
- * Redhat Linux => Linux
- * Mac OS X => Darwin
- */
- self::setProperty('host.os', PHP_OS);
-
- // this is used by some tasks too
- self::setProperty('os.name', PHP_OS);
-
- // it's still possible this won't be defined,
- // e.g. if Phing is being included in another app w/o
- // using the phing.php script.
- if (!defined('PHP_CLASSPATH')) {
- define('PHP_CLASSPATH', get_include_path());
- }
-
- self::setProperty('php.classpath', PHP_CLASSPATH);
-
- // try to determine the host filesystem and set system property
- // used by Fileself::getFileSystem to instantiate the correct
- // abstraction layer
-
- switch (strtoupper(PHP_OS)) {
- case 'WINNT':
- self::setProperty('host.fstype', 'WINNT');
- break;
- case 'WIN32':
- self::setProperty('host.fstype', 'WIN32');
- break;
- default:
- self::setProperty('host.fstype', 'UNIX');
- break;
- }
-
- self::setProperty('php.interpreter', getenv('PHP_COMMAND'));
- self::setProperty('line.separator', PHP_EOL);
- self::setProperty('php.version', PHP_VERSION);
- self::setProperty('user.home', getenv('HOME'));
- self::setProperty('application.startdir', getcwd());
- self::setProperty('phing.startTime', gmdate('D, d M Y H:i:s', time()) . ' GMT');
-
- // try to detect machine dependent information
- $sysInfo = array();
- if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' && function_exists("posix_uname")) {
- $sysInfo = posix_uname();
- } else {
- $sysInfo['nodename'] = php_uname('n');
- $sysInfo['machine']= php_uname('m') ;
- //this is a not so ideal substition, but maybe better than nothing
- $sysInfo['domain'] = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : "unknown";
- $sysInfo['release'] = php_uname('r');
- $sysInfo['version'] = php_uname('v');
- }
-
-
- self::setProperty("host.name", isset($sysInfo['nodename']) ? $sysInfo['nodename'] : "unknown");
- self::setProperty("host.arch", isset($sysInfo['machine']) ? $sysInfo['machine'] : "unknown");
- self::setProperty("host.domain",isset($sysInfo['domain']) ? $sysInfo['domain'] : "unknown");
- self::setProperty("host.os.release", isset($sysInfo['release']) ? $sysInfo['release'] : "unknown");
- self::setProperty("host.os.version", isset($sysInfo['version']) ? $sysInfo['version'] : "unknown");
- unset($sysInfo);
- }
-
- /**
- * This gets a property that was set via command line or otherwise passed into Phing.
- * "Defined" in this case means "externally defined". The reason this method exists is to
- * provide a public means of accessing commandline properties for (e.g.) logger or listener
- * scripts. E.g. to specify which logfile to use, PearLogger needs to be able to access
- * the pear.log.name property.
- *
- * @param string $name
- * @return string value of found property (or null, if none found).
- */
- public static function getDefinedProperty($name) {
- return self::$definedProps->getProperty($name);
- }
-
- /**
- * This sets a property that was set via command line or otherwise passed into Phing.
- *
- * @param string $name
- * @return string value of found property (or null, if none found).
- */
- public static function setDefinedProperty($name, $value) {
- return self::$definedProps->setProperty($name, $value);
- }
-
- /**
- * Returns property value for a System property.
- * System properties are "global" properties like application.startdir,
- * and user.dir. Many of these correspond to similar properties in Java
- * or Ant.
- *
- * @param string $paramName
- * @return string Value of found property (or null, if none found).
- */
- public static function getProperty($propName) {
-
- // some properties are detemined on each access
- // some are cached, see below
-
- // default is the cached value:
- $val = isset(self::$properties[$propName]) ? self::$properties[$propName] : null;
-
- // special exceptions
- switch($propName) {
- case 'user.dir':
- $val = getcwd();
- break;
- }
-
- return $val;
- }
-
- /** Retuns reference to all properties*/
- public static function &getProperties() {
- return self::$properties;
- }
-
- public static function setProperty($propName, $propValue) {
- $propName = (string) $propName;
- $oldValue = self::getProperty($propName);
- self::$properties[$propName] = $propValue;
- return $oldValue;
- }
-
- public static function currentTimeMillis() {
- list($usec, $sec) = explode(" ",microtime());
- return ((float)$usec + (float)$sec);
- }
-
- /**
- * Sets the include path to PHP_CLASSPATH constant (if this has been defined).
- * @return void
- * @throws ConfigurationException - if the include_path could not be set (for some bizarre reason)
- */
- private static function setIncludePaths() {
- if (defined('PHP_CLASSPATH')) {
- $result = set_include_path(PHP_CLASSPATH);
- if ($result === false) {
- throw new ConfigurationException("Could not set PHP include_path.");
- }
- self::$origIniSettings['include_path'] = $result; // save original value for setting back later
- }
- }
-
- /**
- * Converts shorthand notation values as returned by ini_get()
- * @see http://www.php.net/ini_get
- * @param string $val
- */
- private static function convertShorthand($val)
- {
- $val = trim($val);
- $last = strtolower($val[strlen($val) - 1]);
-
- switch($last) {
- // The 'G' modifier is available since PHP 5.1.0
- case 'g':
- $val *= 1024;
- case 'm':
- $val *= 1024;
- case 'k':
- $val *= 1024;
- }
-
- return $val;
- }
-
- /**
- * Sets PHP INI values that Phing needs.
- * @return void
- */
- private static function setIni() {
-
- self::$origIniSettings['error_reporting'] = error_reporting(E_ALL);
-
- // We won't bother storing original max_execution_time, since 1) the value in
- // php.ini may be wrong (and there's no way to get the current value) and
- // 2) it would mean something very strange to set it to a value less than time script
- // has already been running, which would be the likely change.
-
- set_time_limit(0);
-
- self::$origIniSettings['magic_quotes_gpc'] = ini_set('magic_quotes_gpc', 'off');
- self::$origIniSettings['short_open_tag'] = ini_set('short_open_tag', 'off');
- self::$origIniSettings['default_charset'] = ini_set('default_charset', 'iso-8859-1');
- self::$origIniSettings['register_globals'] = ini_set('register_globals', 'off');
- self::$origIniSettings['allow_call_time_pass_reference'] = ini_set('allow_call_time_pass_reference', 'on');
- self::$origIniSettings['track_errors'] = ini_set('track_errors', 1);
-
- $mem_limit = (int) self::convertShorthand(ini_get('memory_limit'));
- if ($mem_limit < (32 * 1024 * 1024) && $mem_limit > -1) {
- // We do *not* need to save the original value here, since we don't plan to restore
- // this after shutdown (we don't trust the effectiveness of PHP's garbage collection).
- ini_set('memory_limit', '32M'); // nore: this may need to be higher for many projects
- }
- }
-
- /**
- * Restores [most] PHP INI values to their pre-Phing state.
- *
- * Currently the following settings are not restored:
- * - max_execution_time (because getting current time limit is not possible)
- * - memory_limit (which may have been increased by Phing)
- *
- * @return void
- */
- private static function restoreIni()
- {
- foreach(self::$origIniSettings as $settingName => $settingValue) {
- switch($settingName) {
- case 'error_reporting':
- error_reporting($settingValue);
- break;
- default:
- ini_set($settingName, $settingValue);
- }
- }
- }
-
- /**
- * Returns reference to Timer object.
- * @return Timer
- */
- public static function getTimer() {
- if (self::$timer === null) {
- include_once 'phing/system/util/Timer.php';
- self::$timer= new Timer();
- }
- return self::$timer;
- }
-
- /**
- * Start up Phing.
- * Sets up the Phing environment but does not initiate the build process.
- * @return void
- * @throws Exception - If the Phing environment cannot be initialized.
- */
- public static function startup() {
-
- // setup STDOUT and STDERR defaults
- self::initializeOutputStreams();
-
- // some init stuff
- self::getTimer()->start();
-
- self::setSystemConstants();
- self::setIncludePaths();
- self::setIni();
- }
-
- /**
- * Halts the system.
- * @deprecated This method is deprecated and is no longer called by Phing internally. Any
- * normal shutdown routines are handled by the shutdown() method.
- * @see shutdown()
- */
- public static function halt() {
- self::shutdown();
- }
-
- /**
- * Performs any shutdown routines, such as stopping timers.
- * @return void
- */
- public static function shutdown() {
- self::restoreIni();
- self::getTimer()->stop();
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/Project.php b/buildscripts/phing/classes/phing/Project.php
deleted file mode 100755
index 8e662543..00000000
--- a/buildscripts/phing/classes/phing/Project.php
+++ /dev/null
@@ -1,1050 +0,0 @@
-<?php
-/*
- * $Id: 7e67218e8e616860f9c746f9ab600f523089ea2e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/util/FileUtils.php';
-include_once 'phing/TaskAdapter.php';
-include_once 'phing/util/StringHelper.php';
-include_once 'phing/BuildEvent.php';
-include_once 'phing/input/DefaultInputHandler.php';
-
-/**
- * The Phing project class. Represents a completely configured Phing project.
- * The class defines the project and all tasks/targets. It also contains
- * methods to start a build as well as some properties and FileSystem
- * abstraction.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: 7e67218e8e616860f9c746f9ab600f523089ea2e $
- * @package phing
- */
-class Project {
-
- // Logging level constants.
- const MSG_DEBUG = 4;
- const MSG_VERBOSE = 3;
- const MSG_INFO = 2;
- const MSG_WARN = 1;
- const MSG_ERR = 0;
-
- /** contains the targets */
- private $targets = array();
- /** global filterset (future use) */
- private $globalFilterSet = array();
- /** all globals filters (future use) */
- private $globalFilters = array();
-
- /** Project properties map (usually String to String). */
- private $properties = array();
-
- /**
- * Map of "user" properties (as created in the Ant task, for example).
- * Note that these key/value pairs are also always put into the
- * project properties, so only the project properties need to be queried.
- * Mapping is String to String.
- */
- private $userProperties = array();
-
- /**
- * Map of inherited "user" properties - that are those "user"
- * properties that have been created by tasks and not been set
- * from the command line or a GUI tool.
- * Mapping is String to String.
- */
- private $inheritedProperties = array();
-
- /** task definitions for this project*/
- private $taskdefs = array();
-
- /** type definitions for this project */
- private $typedefs = array();
-
- /** holds ref names and a reference to the referred object*/
- private $references = array();
-
- /** The InputHandler being used by this project. */
- private $inputHandler;
-
- /* -- properties that come in via xml attributes -- */
-
- /** basedir (PhingFile object) */
- private $basedir;
-
- /** the default target name */
- private $defaultTarget = 'all';
-
- /** project name (required) */
- private $name;
-
- /** project description */
- private $description;
-
- /** require phing version */
- private $phingVersion;
-
- /** a FileUtils object */
- private $fileUtils;
-
- /** Build listeneers */
- private $listeners = array();
-
- /**
- * Constructor, sets any default vars.
- */
- public function __construct() {
- $this->fileUtils = new FileUtils();
- $this->inputHandler = new DefaultInputHandler();
- }
-
- /**
- * Sets the input handler
- * @param InputHandler $handler
- */
- public function setInputHandler(InputHandler $handler) {
- $this->inputHandler = $handler;
- }
-
- /**
- * Retrieves the current input handler.
- * @return InputHandler
- */
- public function getInputHandler() {
- return $this->inputHandler;
- }
-
- /** inits the project, called from main app */
- public function init() {
- // set builtin properties
- $this->setSystemProperties();
-
- // load default tasks
- $taskdefs = Phing::getResourcePath("phing/tasks/defaults.properties");
-
- try { // try to load taskdefs
- $props = new Properties();
- $in = new PhingFile((string)$taskdefs);
-
- if ($in === null) {
- throw new BuildException("Can't load default task list");
- }
- $props->load($in);
-
- $enum = $props->propertyNames();
- foreach($enum as $key) {
- $value = $props->getProperty($key);
- $this->addTaskDefinition($key, $value);
- }
- } catch (IOException $ioe) {
- throw new BuildException("Can't load default task list");
- }
-
- // load default tasks
- $typedefs = Phing::getResourcePath("phing/types/defaults.properties");
-
- try { // try to load typedefs
- $props = new Properties();
- $in = new PhingFile((string)$typedefs);
- if ($in === null) {
- throw new BuildException("Can't load default datatype list");
- }
- $props->load($in);
-
- $enum = $props->propertyNames();
- foreach($enum as $key) {
- $value = $props->getProperty($key);
- $this->addDataTypeDefinition($key, $value);
- }
- } catch(IOException $ioe) {
- throw new BuildException("Can't load default datatype list");
- }
- }
-
- /** returns the global filterset (future use) */
- public function getGlobalFilterSet() {
- return $this->globalFilterSet;
- }
-
- // ---------------------------------------------------------
- // Property methods
- // ---------------------------------------------------------
-
- /**
- * Sets a property. Any existing property of the same name
- * is overwritten, unless it is a user property.
- * @param string $name The name of property to set.
- * Must not be <code>null</code>.
- * @param string $value The new value of the property.
- * Must not be <code>null</code>.
- * @return void
- */
- public function setProperty($name, $value) {
-
- // command line properties take precedence
- if (isset($this->userProperties[$name])) {
- $this->log("Override ignored for user property " . $name, Project::MSG_VERBOSE);
- return;
- }
-
- if (isset($this->properties[$name])) {
- $this->log("Overriding previous definition of property " . $name, Project::MSG_VERBOSE);
- }
-
- $this->log("Setting project property: " . $name . " -> " . $value, Project::MSG_DEBUG);
- $this->properties[$name] = $value;
- }
-
- /**
- * Sets a property if no value currently exists. If the property
- * exists already, a message is logged and the method returns with
- * no other effect.
- *
- * @param string $name The name of property to set.
- * Must not be <code>null</code>.
- * @param string $value The new value of the property.
- * Must not be <code>null</code>.
- * @since 2.0
- */
- public function setNewProperty($name, $value) {
- if (isset($this->properties[$name])) {
- $this->log("Override ignored for property " . $name, Project::MSG_DEBUG);
- return;
- }
- $this->log("Setting project property: " . $name . " -> " . $value, Project::MSG_DEBUG);
- $this->properties[$name] = $value;
- }
-
- /**
- * Sets a user property, which cannot be overwritten by
- * set/unset property calls. Any previous value is overwritten.
- * @param string $name The name of property to set.
- * Must not be <code>null</code>.
- * @param string $value The new value of the property.
- * Must not be <code>null</code>.
- * @see #setProperty()
- */
- public function setUserProperty($name, $value) {
- $this->log("Setting ro project property: " . $name . " -> " . $value, Project::MSG_DEBUG);
- $this->userProperties[$name] = $value;
- $this->properties[$name] = $value;
- }
-
- /**
- * Sets a user property, which cannot be overwritten by set/unset
- * property calls. Any previous value is overwritten. Also marks
- * these properties as properties that have not come from the
- * command line.
- *
- * @param string $name The name of property to set.
- * Must not be <code>null</code>.
- * @param string $value The new value of the property.
- * Must not be <code>null</code>.
- * @see #setProperty()
- */
- public function setInheritedProperty($name, $value) {
- $this->inheritedProperties[$name] = $value;
- $this->setUserProperty($name, $value);
- }
-
- /**
- * Sets a property unless it is already defined as a user property
- * (in which case the method returns silently).
- *
- * @param name The name of the property.
- * Must not be <code>null</code>.
- * @param value The property value. Must not be <code>null</code>.
- */
- private function setPropertyInternal($name, $value) {
- if (isset($this->userProperties[$name])) {
- $this->log("Override ignored for user property " . $name, Project::MSG_VERBOSE);
- return;
- }
- $this->properties[$name] = $value;
- }
-
- /**
- * Returns the value of a property, if it is set.
- *
- * @param string $name The name of the property.
- * May be <code>null</code>, in which case
- * the return value is also <code>null</code>.
- * @return string The property value, or <code>null</code> for no match
- * or if a <code>null</code> name is provided.
- */
- public function getProperty($name) {
- if (!isset($this->properties[$name])) {
- return null;
- }
- $found = $this->properties[$name];
- // check to see if there are unresolved property references
- if (false !== strpos($found, '${')) {
- // attempt to resolve properties
- $found = $this->replaceProperties($found);
- // save resolved value
- $this->properties[$name] = $found;
- }
- return $found;
- }
-
- /**
- * Replaces ${} style constructions in the given value with the
- * string value of the corresponding data types.
- *
- * @param value The string to be scanned for property references.
- * May be <code>null</code>.
- *
- * @return the given string with embedded property names replaced
- * by values, or <code>null</code> if the given string is
- * <code>null</code>.
- *
- * @exception BuildException if the given value has an unclosed
- * property name, e.g. <code>${xxx</code>
- */
- public function replaceProperties($value) {
- return ProjectConfigurator::replaceProperties($this, $value, $this->properties);
- }
-
- /**
- * Returns the value of a user property, if it is set.
- *
- * @param string $name The name of the property.
- * May be <code>null</code>, in which case
- * the return value is also <code>null</code>.
- * @return string The property value, or <code>null</code> for no match
- * or if a <code>null</code> name is provided.
- */
- public function getUserProperty($name) {
- if (!isset($this->userProperties[$name])) {
- return null;
- }
- return $this->userProperties[$name];
- }
-
- /**
- * Returns a copy of the properties table.
- * @return array A hashtable containing all properties
- * (including user properties).
- */
- public function getProperties() {
- return $this->properties;
- }
-
- /**
- * Returns a copy of the user property hashtable
- * @return a hashtable containing just the user properties
- */
- public function getUserProperties() {
- return $this->userProperties;
- }
-
- /**
- * Copies all user properties that have been set on the command
- * line or a GUI tool from this instance to the Project instance
- * given as the argument.
- *
- * <p>To copy all "user" properties, you will also have to call
- * {@link #copyInheritedProperties copyInheritedProperties}.</p>
- *
- * @param Project $other the project to copy the properties to. Must not be null.
- * @return void
- * @since phing 2.0
- */
- public function copyUserProperties(Project $other) {
- foreach($this->userProperties as $arg => $value) {
- if (isset($this->inheritedProperties[$arg])) {
- continue;
- }
- $other->setUserProperty($arg, $value);
- }
- }
-
- /**
- * Copies all user properties that have not been set on the
- * command line or a GUI tool from this instance to the Project
- * instance given as the argument.
- *
- * <p>To copy all "user" properties, you will also have to call
- * {@link #copyUserProperties copyUserProperties}.</p>
- *
- * @param Project $other the project to copy the properties to. Must not be null.
- *
- * @since phing 2.0
- */
- public function copyInheritedProperties(Project $other) {
- foreach($this->userProperties as $arg => $value) {
- if ($other->getUserProperty($arg) !== null) {
- continue;
- }
- $other->setInheritedProperty($arg, $value);
- }
- }
-
- // ---------------------------------------------------------
- // END Properties methods
- // ---------------------------------------------------------
-
-
- /**
- * Sets default target
- * @param string $targetName
- */
- public function setDefaultTarget($targetName) {
- $this->defaultTarget = (string) trim($targetName);
- }
-
- /**
- * Returns default target
- * @return string
- */
- public function getDefaultTarget() {
- return (string) $this->defaultTarget;
- }
-
- /**
- * Sets the name of the current project
- *
- * @param string $name name of project
- * @return void
- * @access public
- * @author Andreas Aderhold, andi@binarycloud.com
- */
- public function setName($name) {
- $this->name = (string) trim($name);
- $this->setProperty("phing.project.name", $this->name);
- }
-
- /**
- * Returns the name of this project
- *
- * @return string projectname
- * @access public
- * @author Andreas Aderhold, andi@binarycloud.com
- */
- public function getName() {
- return (string) $this->name;
- }
-
- /**
- * Set the projects description
- * @param string $description
- */
- public function setDescription($description) {
- $this->description = (string) trim($description);
- }
-
- /**
- * return the description, null otherwise
- * @return string|null
- */
- public function getDescription() {
- return $this->description;
- }
-
- /**
- * Set the minimum required phing version
- * @param string $version
- */
- public function setPhingVersion($version) {
- $version = str_replace('phing', '', strtolower($version));
- $this->phingVersion = (string)trim($version);
- }
-
- /**
- * Get the minimum required phing version
- * @return string
- */
- public function getPhingVersion() {
- if($this->phingVersion === null) {
- $this->setPhingVersion(Phing::getPhingVersion());
- }
- return $this->phingVersion;
- }
-
- /**
- * Set basedir object from xm
- * @param PhingFile|string $dir
- */
- public function setBasedir($dir) {
- if ($dir instanceof PhingFile) {
- $dir = $dir->getAbsolutePath();
- }
-
- $dir = $this->fileUtils->normalize($dir);
-
- $dir = new PhingFile((string) $dir);
- if (!$dir->exists()) {
- throw new BuildException("Basedir ".$dir->getAbsolutePath()." does not exist");
- }
- if (!$dir->isDirectory()) {
- throw new BuildException("Basedir ".$dir->getAbsolutePath()." is not a directory");
- }
- $this->basedir = $dir;
- $this->setPropertyInternal("project.basedir", $this->basedir->getAbsolutePath());
- $this->log("Project base dir set to: " . $this->basedir->getPath(), Project::MSG_VERBOSE);
-
- // [HL] added this so that ./ files resolve correctly. This may be a mistake ... or may be in wrong place.
- chdir($dir->getAbsolutePath());
- }
-
- /**
- * Returns the basedir of this project
- *
- * @return PhingFile Basedir PhingFile object
- * @access public
- * @throws BuildException
- * @author Andreas Aderhold, andi@binarycloud.com
- */
- public function getBasedir() {
- if ($this->basedir === null) {
- try { // try to set it
- $this->setBasedir(".");
- } catch (BuildException $exc) {
- throw new BuildException("Can not set default basedir. ".$exc->getMessage());
- }
- }
- return $this->basedir;
- }
-
- /**
- * Sets system properties and the environment variables for this project.
- *
- * @return void
- */
- public function setSystemProperties() {
-
- // first get system properties
- $systemP = array_merge( self::getProperties(), Phing::getProperties() );
- foreach($systemP as $name => $value) {
- $this->setPropertyInternal($name, $value);
- }
-
- // and now the env vars
- foreach($_SERVER as $name => $value) {
- // skip arrays
- if (is_array($value)) {
- continue;
- }
- $this->setPropertyInternal('env.' . $name, $value);
- }
- return true;
- }
-
-
- /**
- * Adds a task definition.
- * @param string $name Name of tag.
- * @param string $class The class path to use.
- * @param string $classpath The classpat to use.
- */
- public function addTaskDefinition($name, $class, $classpath = null) {
- $name = $name;
- $class = $class;
- if ($class === "") {
- $this->log("Task $name has no class defined.", Project::MSG_ERR);
- } elseif (!isset($this->taskdefs[$name])) {
- Phing::import($class, $classpath);
- $this->taskdefs[$name] = $class;
- $this->log(" +Task definiton: $name ($class)", Project::MSG_DEBUG);
- } else {
- $this->log("Task $name ($class) already registerd, skipping", Project::MSG_VERBOSE);
- }
- }
-
- /**
- * Returns the task definitions
- * @return array
- */
- public function getTaskDefinitions() {
- return $this->taskdefs;
- }
-
- /**
- * Adds a data type definition.
- * @param string $typeName Name of the type.
- * @param string $typeClass The class to use.
- * @param string $classpath The classpath to use.
- */
- public function addDataTypeDefinition($typeName, $typeClass, $classpath = null) {
- if (!isset($this->typedefs[$typeName])) {
- Phing::import($typeClass, $classpath);
- $this->typedefs[$typeName] = $typeClass;
- $this->log(" +User datatype: $typeName ($typeClass)", Project::MSG_DEBUG);
- } else {
- $this->log("Type $typeName ($typeClass) already registerd, skipping", Project::MSG_VERBOSE);
- }
- }
-
- /**
- * Returns the data type definitions
- * @return array
- */
- public function getDataTypeDefinitions() {
- return $this->typedefs;
- }
-
- /**
- * Add a new target to the project
- * @param string $targetName
- * @param Target $target
- */
- public function addTarget($targetName, &$target) {
- if (isset($this->targets[$targetName])) {
- throw new BuildException("Duplicate target: $targetName");
- }
- $this->addOrReplaceTarget($targetName, $target);
- }
-
- /**
- * Adds or replaces a target in the project
- * @param string $targetName
- * @param Target $target
- */
- public function addOrReplaceTarget($targetName, &$target) {
- $this->log(" +Target: $targetName", Project::MSG_DEBUG);
- $target->setProject($this);
- $this->targets[$targetName] = $target;
-
- $ctx = $this->getReference("phing.parsing.context");
- $current = $ctx->getConfigurator()->getCurrentTargets();
- $current[$targetName] = $target;
- }
-
- /**
- * Returns the available targets
- * @return array
- */
- public function getTargets() {
- return $this->targets;
- }
-
- /**
- * Create a new task instance and return reference to it. This method is
- * sorta factory like. A _local_ instance is created and a reference returned to
- * that instance. Usually PHP destroys local variables when the function call
- * ends. But not if you return a reference to that variable.
- * This is kinda error prone, because if no reference exists to the variable
- * it is destroyed just like leaving the local scope with primitive vars. There's no
- * central place where the instance is stored as in other OOP like languages.
- *
- * [HL] Well, ZE2 is here now, and this is still working. We'll leave this alone
- * unless there's any good reason not to.
- *
- * @param string $taskType Task name
- * @return Task A task object
- * @throws BuildException
- * Exception
- */
- public function createTask($taskType) {
- try {
- $classname = "";
- $tasklwr = strtolower($taskType);
- foreach ($this->taskdefs as $name => $class) {
- if (strtolower($name) === $tasklwr) {
- $classname = $class;
- break;
- }
- }
-
- if ($classname === "") {
- return null;
- }
-
- $cls = Phing::import($classname);
-
- if (!class_exists($cls)) {
- throw new BuildException("Could not instantiate class $cls, even though a class was specified. (Make sure that the specified class file contains a class with the correct name.)");
- }
-
- $o = new $cls();
-
- if ($o instanceof Task) {
- $task = $o;
- } else {
- $this->log (" (Using TaskAdapter for: $taskType)", Project::MSG_DEBUG);
- // not a real task, try adapter
- $taskA = new TaskAdapter();
- $taskA->setProxy($o);
- $task = $taskA;
- }
- $task->setProject($this);
- $task->setTaskType($taskType);
- // set default value, can be changed by the user
- $task->setTaskName($taskType);
- $this->log (" +Task: " . $taskType, Project::MSG_DEBUG);
- } catch (Exception $t) {
- throw new BuildException("Could not create task of type: " . $taskType, $t);
- }
- // everything fine return reference
- return $task;
- }
-
- /**
- * Create a datatype instance and return reference to it
- * See createTask() for explanation how this works
- *
- * @param string $typeName Type name
- * @return object A datatype object
- * @throws BuildException
- * Exception
- */
- public function createDataType($typeName) {
- try {
- $cls = "";
- $typelwr = strtolower($typeName);
- foreach ($this->typedefs as $name => $class) {
- if (strtolower($name) === $typelwr) {
- $cls = StringHelper::unqualify($class);
- break;
- }
- }
-
- if ($cls === "") {
- return null;
- }
-
- if (!class_exists($cls)) {
- throw new BuildException("Could not instantiate class $cls, even though a class was specified. (Make sure that the specified class file contains a class with the correct name.)");
- }
-
- $type = new $cls();
- $this->log(" +Type: $typeName", Project::MSG_DEBUG);
- if (!($type instanceof DataType)) {
- throw new Exception("$class is not an instance of phing.types.DataType");
- }
- if ($type instanceof ProjectComponent) {
- $type->setProject($this);
- }
- } catch (Exception $t) {
- throw new BuildException("Could not create type: $typeName", $t);
- }
- // everything fine return reference
- return $type;
- }
-
- /**
- * Executes a list of targets
- *
- * @param array $targetNames List of target names to execute
- * @return void
- * @throws BuildException
- */
- public function executeTargets($targetNames) {
- foreach($targetNames as $tname) {
- $this->executeTarget($tname);
- }
- }
-
- /**
- * Executes a target
- *
- * @param string $targetName Name of Target to execute
- * @return void
- * @throws BuildException
- */
- public function executeTarget($targetName) {
-
- // complain about executing void
- if ($targetName === null) {
- throw new BuildException("No target specified");
- }
-
- // invoke topological sort of the target tree and run all targets
- // until targetName occurs.
- $sortedTargets = $this->_topoSort($targetName, $this->targets);
-
- $curIndex = (int) 0;
- $curTarget = null;
- do {
- try {
- $curTarget = $sortedTargets[$curIndex++];
- $curTarget->performTasks();
- } catch (BuildException $exc) {
- $this->log("Execution of target \"".$curTarget->getName()."\" failed for the following reason: ".$exc->getMessage(), Project::MSG_ERR);
- throw $exc;
- }
- } while ($curTarget->getName() !== $targetName);
- }
-
- /**
- * Helper function
- */
- public function resolveFile($fileName, $rootDir = null) {
- if ($rootDir === null) {
- return $this->fileUtils->resolveFile($this->basedir, $fileName);
- } else {
- return $this->fileUtils->resolveFile($rootDir, $fileName);
- }
- }
-
- /**
- * Topologically sort a set of Targets.
- * @param string $root is the (String) name of the root Target. The sort is
- * created in such a way that the sequence of Targets until the root
- * target is the minimum possible such sequence.
- * @param array $targets is a array representing a "name to Target" mapping
- * @return An array of Strings with the names of the targets in
- * sorted order.
- */
- public function _topoSort($root, &$targets) {
-
- $root = (string) $root;
- $ret = array();
- $state = array();
- $visiting = array();
-
- // We first run a DFS based sort using the root as the starting node.
- // This creates the minimum sequence of Targets to the root node.
- // We then do a sort on any remaining unVISITED targets.
- // This is unnecessary for doing our build, but it catches
- // circular dependencies or missing Targets on the entire
- // dependency tree, not just on the Targets that depend on the
- // build Target.
-
- $this->_tsort($root, $targets, $state, $visiting, $ret);
-
- $retHuman = "";
- for ($i=0, $_i=count($ret); $i < $_i; $i++) {
- $retHuman .= $ret[$i]->toString()." ";
- }
- $this->log("Build sequence for target '$root' is: $retHuman", Project::MSG_VERBOSE);
-
- $keys = array_keys($targets);
- while($keys) {
- $curTargetName = (string) array_shift($keys);
- if (!isset($state[$curTargetName])) {
- $st = null;
- } else {
- $st = (string) $state[$curTargetName];
- }
-
- if ($st === null) {
- $this->_tsort($curTargetName, $targets, $state, $visiting, $ret);
- } elseif ($st === "VISITING") {
- throw new Exception("Unexpected node in visiting state: $curTargetName");
- }
- }
-
- $retHuman = "";
- for ($i=0,$_i=count($ret); $i < $_i; $i++) {
- $retHuman .= $ret[$i]->toString()." ";
- }
- $this->log("Complete build sequence is: $retHuman", Project::MSG_VERBOSE);
-
- return $ret;
- }
-
- // one step in a recursive DFS traversal of the target dependency tree.
- // - The array "state" contains the state (VISITED or VISITING or null)
- // of all the target names.
- // - The stack "visiting" contains a stack of target names that are
- // currently on the DFS stack. (NB: the target names in "visiting" are
- // exactly the target names in "state" that are in the VISITING state.)
- // 1. Set the current target to the VISITING state, and push it onto
- // the "visiting" stack.
- // 2. Throw a BuildException if any child of the current node is
- // in the VISITING state (implies there is a cycle.) It uses the
- // "visiting" Stack to construct the cycle.
- // 3. If any children have not been VISITED, tsort() the child.
- // 4. Add the current target to the Vector "ret" after the children
- // have been visited. Move the current target to the VISITED state.
- // "ret" now contains the sorted sequence of Targets upto the current
- // Target.
-
- public function _tsort($root, &$targets, &$state, &$visiting, &$ret) {
- $state[$root] = "VISITING";
- $visiting[] = $root;
-
- if (!isset($targets[$root]) || !($targets[$root] instanceof Target)) {
- $target = null;
- } else {
- $target = $targets[$root];
- }
-
- // make sure we exist
- if ($target === null) {
- $sb = "Target '$root' does not exist in this project.";
- array_pop($visiting);
- if (!empty($visiting)) {
- $parent = (string) $visiting[count($visiting)-1];
- $sb .= " It is a dependency of target '$parent'.";
- }
- throw new BuildException($sb);
- }
-
- $deps = $target->getDependencies();
-
- while($deps) {
- $cur = (string) array_shift($deps);
- if (!isset($state[$cur])) {
- $m = null;
- } else {
- $m = (string) $state[$cur];
- }
- if ($m === null) {
- // not been visited
- $this->_tsort($cur, $targets, $state, $visiting, $ret);
- } elseif ($m == "VISITING") {
- // currently visiting this node, so have a cycle
- throw $this->_makeCircularException($cur, $visiting);
- }
- }
-
- $p = (string) array_pop($visiting);
- if ($root !== $p) {
- throw new Exception("Unexpected internal error: expected to pop $root but got $p");
- }
-
- $state[$root] = "VISITED";
- $ret[] = $target;
- }
-
- public function _makeCircularException($end, $stk) {
- $sb = "Circular dependency: $end";
- do {
- $c = (string) array_pop($stk);
- $sb .= " <- ".$c;
- } while($c != $end);
- return new BuildException($sb);
- }
-
- /**
- * Adds a reference to an object. This method is called when the parser
- * detects a id="foo" attribute. It passes the id as $name and a reference
- * to the object assigned to this id as $value
- * @param string $name
- * @param object $object
- */
- public function addReference($name, $object) {
- if (isset($this->references[$name])) {
- $this->log("Overriding previous definition of reference to $name", Project::MSG_WARN);
- }
- $this->log("Adding reference: $name -> ".get_class($object), Project::MSG_DEBUG);
- $this->references[$name] = $object;
- }
-
- /**
- * Returns the references array.
- * @return array
- */
- public function getReferences() {
- return $this->references;
- }
-
- /**
- * Returns a specific reference.
- * @param string $key The reference id/key.
- * @return object Reference or null if not defined
- */
- public function getReference($key)
- {
- if (isset($this->references[$key])) {
- return $this->references[$key];
- }
- return null; // just to be explicit
- }
-
- /**
- * Abstracting and simplifyling Logger calls for project messages
- * @param string $msg
- * @param int $level
- */
- public function log($msg, $level = Project::MSG_INFO) {
- $this->logObject($this, $msg, $level);
- }
-
- function logObject($obj, $msg, $level) {
- $this->fireMessageLogged($obj, $msg, $level);
- }
-
- function addBuildListener(BuildListener $listener) {
- $this->listeners[] = $listener;
- }
-
- function removeBuildListener(BuildListener $listener) {
- $newarray = array();
- for ($i=0, $size=count($this->listeners); $i < $size; $i++) {
- if ($this->listeners[$i] !== $listener) {
- $newarray[] = $this->listeners[$i];
- }
- }
- $this->listeners = $newarray;
- }
-
- function getBuildListeners() {
- return $this->listeners;
- }
-
- function fireBuildStarted() {
- $event = new BuildEvent($this);
- foreach($this->listeners as $listener) {
- $listener->buildStarted($event);
- }
- }
-
- function fireBuildFinished($exception) {
- $event = new BuildEvent($this);
- $event->setException($exception);
- foreach($this->listeners as $listener) {
- $listener->buildFinished($event);
- }
- }
-
- function fireTargetStarted($target) {
- $event = new BuildEvent($target);
- foreach($this->listeners as $listener) {
- $listener->targetStarted($event);
- }
- }
-
- function fireTargetFinished($target, $exception) {
- $event = new BuildEvent($target);
- $event->setException($exception);
- foreach($this->listeners as $listener) {
- $listener->targetFinished($event);
- }
- }
-
- function fireTaskStarted($task) {
- $event = new BuildEvent($task);
- foreach($this->listeners as $listener) {
- $listener->taskStarted($event);
- }
- }
-
- function fireTaskFinished($task, $exception) {
- $event = new BuildEvent($task);
- $event->setException($exception);
- foreach($this->listeners as $listener) {
- $listener->taskFinished($event);
- }
- }
-
- function fireMessageLoggedEvent($event, $message, $priority) {
- $event->setMessage($message, $priority);
- foreach($this->listeners as $listener) {
- $listener->messageLogged($event);
- }
- }
-
- function fireMessageLogged($object, $message, $priority) {
- $this->fireMessageLoggedEvent(new BuildEvent($object), $message, $priority);
- }
-}
diff --git a/buildscripts/phing/classes/phing/ProjectComponent.php b/buildscripts/phing/classes/phing/ProjectComponent.php
deleted file mode 100755
index 343e3a6c..00000000
--- a/buildscripts/phing/classes/phing/ProjectComponent.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/*
- * $Id: 9b2bbe8e58b0a7de3d426b1dcc88b8cac4bc69e2 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Abstract class providing properties and methods common to all
- * the project components
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing
- */
-abstract class ProjectComponent {
-
- /**
- * Holds a reference to the project that a project component
- * (a task, a target, etc.) belongs to
- *
- * @var Project A reference to the current project instance
- */
- protected $project = null;
-
- /**
- * References the project to the current component.
- *
- * @param Project $project The reference to the current project
- */
- public function setProject($project) {
- $this->project = $project;
- }
-
- /**
- * Returns a reference to current project
- *
- * @return Project Reference to current porject object
- */
- public function getProject() {
- return $this->project;
- }
-
- /**
- * Logs a message with the given priority.
- *
- * @param string $msg The message to be logged.
- * @param integer $level The message's priority at this message should have
- */
- public function log($msg, $level = Project::MSG_INFO) {
- if ($this->project !== null) {
- $this->project->log($msg, $level);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/RuntimeConfigurable.php b/buildscripts/phing/classes/phing/RuntimeConfigurable.php
deleted file mode 100755
index 305a35f3..00000000
--- a/buildscripts/phing/classes/phing/RuntimeConfigurable.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/*
- * $Id: 5dd4f1cae5f6da32a48370cf9cfaa39e1124c91c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Wrapper class that holds the attributes of a Task (or elements
- * nested below that level) and takes care of configuring that element
- * at runtime.
- *
- * <strong>SMART-UP INLINE DOCS</strong>
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing
- */
-class RuntimeConfigurable {
-
- private $elementTag = null;
- private $children = array();
- private $wrappedObject = null;
- private $attributes = array();
- private $characters = "";
-
-
- /** @param proxy The element to wrap. */
- function __construct($proxy, $elementTag) {
- $this->wrappedObject = $proxy;
- $this->elementTag = $elementTag;
- }
-
- function setProxy($proxy) {
- $this->wrappedObject = $proxy;
- }
-
- /** Set's the attributes for the wrapped element. */
- function setAttributes($attributes) {
- $this->attributes = $attributes;
- }
-
- /** Returns the AttributeList of the wrapped element. */
- function getAttributes() {
- return $this->attributes;
- }
-
- /** Adds child elements to the wrapped element. */
- function addChild(RuntimeConfigurable $child) {
- $this->children[] = $child;
- }
-
- /** Returns the child with index */
- function getChild($index) {
- return $this->children[(int)$index];
- }
-
- /** Add characters from #PCDATA areas to the wrapped element. */
- function addText($data) {
- $this->characters .= (string) $data;
- }
-
- function getElementTag() {
- return $this->elementTag;
- }
-
-
- /** Configure the wrapped element and all children. */
- function maybeConfigure(Project $project) {
- $id = null;
-
- // DataType configured in ProjectConfigurator
- // if ( is_a($this->wrappedObject, "DataType") )
- // return;
-
- if ($this->attributes || $this->characters) {
- ProjectConfigurator::configure($this->wrappedObject, $this->attributes, $project);
-
- if (isset($this->attributes["id"])) {
- $id = $this->attributes["id"];
- }
-
- if ($this->characters) {
- ProjectConfigurator::addText($project, $this->wrappedObject, (string) $this->characters);
- $this->characters="";
- }
- if ($id !== null) {
- $project->addReference($id, $this->wrappedObject);
- }
- }
-
- if ( is_array($this->children) && !empty($this->children) ) {
- // Configure all child of this object ...
- foreach($this->children as $child) {
- $child->maybeConfigure($project);
- ProjectConfigurator::storeChild($project, $this->wrappedObject, $child->wrappedObject, strtolower($child->getElementTag()));
- }
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/Target.php b/buildscripts/phing/classes/phing/Target.php
deleted file mode 100755
index 342d11cb..00000000
--- a/buildscripts/phing/classes/phing/Target.php
+++ /dev/null
@@ -1,375 +0,0 @@
-<?php
-/*
- * $Id: b6779ff7860ec7a7a84d74a40ffcc9efa75255f7 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/TaskContainer.php';
-
-/**
- * The Target component. Carries all required target data. Implements the
- * abstract class {@link TaskContainer}
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id: b6779ff7860ec7a7a84d74a40ffcc9efa75255f7 $
- * @access public
- * @see TaskContainer
- * @package phing
- */
-
-class Target implements TaskContainer {
-
- /**
- * Name of target
- * @var string
- */
- private $name;
-
- /**
- * Dependencies
- * @var array
- */
- private $dependencies = array();
-
- /**
- * Holds objects of children of this target
- * @var array
- */
- private $children = array();
-
- /**
- * The if condition from xml
- * @var string
- */
- private $ifCondition = "";
-
- /**
- * The unless condition from xml
- * @var string
- */
- private $unlessCondition = "";
-
- /**
- * Description of this target
- * @var string
- */
- private $description;
-
- /**
- * Whether to hide target in targets list (-list -p switches)
- * @var boolean
- */
- private $hidden = false;
-
- /**
- * Rreference to project
- * @var Project
- */
- private $project;
-
- /**
- * References the project to the current component.
- *
- * @param Project $project The reference to the current project
- */
- public function setProject(Project $project) {
- $this->project = $project;
- }
-
- /**
- * Returns reference to current project
- *
- * @return Project Reference to current porject object
- */
- public function getProject() {
- return $this->project;
- }
-
- /**
- * Sets the target dependencies from xml
- *
- * @param string $depends Comma separated list of targetnames that depend on
- * this target
- * @throws BuildException
- */
- public function setDepends($depends) {
- // explode should be faster than strtok
- $deps = explode(',', $depends);
- for ($i=0, $size=count($deps); $i < $size; $i++) {
- $trimmed = trim($deps[$i]);
- if ($trimmed === "") {
- throw new BuildException("Syntax Error: Depend attribute for target ".$this->getName()." is malformed.");
- }
- $this->addDependency($trimmed);
- }
- }
-
- /**
- * Adds a singular dependent target name to the list
- *
- * @param string $dependency The dependency target to add
- * @access public
- */
- public function addDependency($dependency) {
- $this->dependencies[] = (string) $dependency;
- }
-
- /**
- * Returns reference to indexed array of the dependencies this target has.
- *
- * @return array Referece to target dependencoes
- */
- public function getDependencies() {
- return $this->dependencies;
- }
-
- /**
- * Sets the name of the target
- *
- * @param string $name Name of this target
- */
- public function setName($name) {
- $this->name = (string) $name;
- }
-
- /**
- * Returns name of this target.
- *
- * @return string The name of the target
- * @access public
- */
- public function getName() {
- return (string) $this->name;
- }
-
- /**
- * Set target status. If true, target does not come in phing -list
- *
- * @param boolean $flag
- * @return Target
- */
- public function setHidden($flag)
- {
- $this->hidden = (boolean) $flag;
- return $this;
- }
-
- /**
- * Get target status. If true, target does not come in phing -list
- *
- * @return boolean
- */
- public function getHidden()
- {
- return $this->hidden;
- }
-
- /**
- * Alias for getHidden()
- *
- * @return boolean
- */
- public function isHidden()
- {
- return $this->getHidden();
- }
-
- /**
- * Adds a task element to the list of this targets child elements
- *
- * @param Task $task The task object to add
- * @access public
- */
- public function addTask(Task $task) {
- $this->children[] = $task;
- }
-
- /**
- * Adds a runtime configurable element to the list of this targets child
- * elements.
- *
- * @param RuntimeConfigurable $rtc The RuntimeConfigurable object
- * @access public
- */
- public function addDataType($rtc) {
- $this->children[] = $rtc;
- }
-
- /**
- * Returns an array of all tasks this target has as childrens.
- *
- * The task objects are copied here. Don't use this method to modify
- * task objects.
- *
- * @return array Task[]
- */
- public function getTasks() {
- $tasks = array();
- for ($i=0,$size=count($this->children); $i < $size; $i++) {
- $tsk = $this->children[$i];
- if ($tsk instanceof Task) {
- // note: we're copying objects here!
- $tasks[] = clone $tsk;
- }
- }
- return $tasks;
- }
-
- /**
- * Set the if-condition from the XML tag, if any. The property name given
- * as parameter must be present so the if condition evaluates to true
- *
- * @param string $property The property name that has to be present
- * @access public
- */
- public function setIf($property) {
- $this->ifCondition = ($property === null) ? "" : $property;
- }
-
- /**
- * Set the unless-condition from the XML tag, if any. The property name
- * given as parameter must be present so the unless condition evaluates
- * to true
- *
- * @param string $property The property name that has to be present
- * @access public
- */
- public function setUnless($property) {
- $this->unlessCondition = ($property === null) ? "" : $property;
- }
-
- /**
- * Sets a textual description of this target.
- *
- * @param string $description The description text
- */
- public function setDescription($description) {
- if ($description !== null && strcmp($description, "") !== 0) {
- $this->description = (string) $description;
- } else {
- $this->description = null;
- }
- }
-
- /**
- * Returns the description of this target.
- *
- * @return string The description text of this target
- */
- public function getDescription() {
- return $this->description;
- }
-
- /**
- * Returns a string representation of this target. In our case it
- * simply returns the target name field
- *
- * @return string The string representation of this target
- */
- public function toString() {
- return (string) $this->name;
- }
-
- /**
- * The entry point for this class. Does some checking, then processes and
- * performs the tasks for this target.
- */
- public function main() {
- if ($this->testIfCondition() && $this->testUnlessCondition()) {
- foreach($this->children as $o) {
- if ($o instanceof Task) {
- // child is a task
- $o->perform();
- } else {
- // child is a RuntimeConfigurable
- $o->maybeConfigure($this->project);
- }
- }
- } elseif (!$this->testIfCondition()) {
- $this->project->log("Skipped target '".$this->name."' because property '".$this->ifCondition."' not set.", Project::MSG_VERBOSE);
- } else {
- $this->project->log("Skipped target '".$this->name."' because property '".$this->unlessCondition."' set.", Project::MSG_VERBOSE);
- }
- }
-
- /**
- * Performs the tasks by calling the main method of this target that
- * actually executes the tasks.
- *
- * This method is for ZE2 and used for proper exception handling of
- * task exceptions.
- */
- public function performTasks() {
- try {// try to execute this target
- $this->project->fireTargetStarted($this);
- $this->main();
- $this->project->fireTargetFinished($this, $null=null);
- } catch (BuildException $exc) {
- // log here and rethrow
- $this->project->fireTargetFinished($this, $exc);
- throw $exc;
- }
- }
-
- /**
- * Tests if the property set in ifConfiditon exists.
- *
- * @return boolean <code>true</code> if the property specified
- * in <code>$this->ifCondition</code> exists;
- * <code>false</code> otherwise
- */
- private function testIfCondition() {
- if ($this->ifCondition === "") {
- return true;
- }
-
- $properties = explode(",", $this->ifCondition);
-
- $result = true;
- foreach ($properties as $property) {
- $test = ProjectConfigurator::replaceProperties($this->getProject(), $property, $this->project->getProperties());
- $result = $result && ($this->project->getProperty($test) !== null);
- }
-
- return $result;
- }
-
- /**
- * Tests if the property set in unlessCondition exists.
- *
- * @return boolean <code>true</code> if the property specified
- * in <code>$this->unlessCondition</code> exists;
- * <code>false</code> otherwise
- */
- private function testUnlessCondition() {
- if ($this->unlessCondition === "") {
- return true;
- }
-
- $properties = explode(",", $this->unlessCondition);
-
- $result = true;
- foreach ($properties as $property) {
- $test = ProjectConfigurator::replaceProperties($this->getProject(), $property, $this->project->getProperties());
- $result = $result && ($this->project->getProperty($test) === null);
- }
- return $result;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/Task.php b/buildscripts/phing/classes/phing/Task.php
deleted file mode 100755
index d2490a90..00000000
--- a/buildscripts/phing/classes/phing/Task.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-/*
- * $Id: 65e76e7a86e08ce1f1d4ef0f7cda011bc9efee5e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/ProjectComponent.php';
-include_once 'phing/RuntimeConfigurable.php';
-
-/**
- * The base class for all Tasks.
- *
- * Use {@link Project#createTask} to register a new Task.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @see Project#createTask()
- * @package phing
- */
-abstract class Task extends ProjectComponent {
-
- /**
- * Owning Target object
- * @var Target
- */
- protected $target;
-
- /**
- * Description of the task
- * @var string
- */
- protected $description;
-
- /**
- * Internal taskname (req)
- * @var string
- */
- protected $taskType;
-
- /**
- * Taskname for logger
- * @var string
- */
- protected $taskName;
-
- /**
- * Stored buildfile location
- * @var Location
- */
- protected $location;
-
- /**
- * Wrapper of the task
- * @var RuntimeConfigurable
- */
- protected $wrapper;
-
- /**
- * Sets the owning target this task belongs to.
- *
- * @param Target Reference to owning target
- */
- public function setOwningTarget(Target $target) {
- $this->target = $target;
- }
-
- /**
- * Returns the owning target of this task.
- *
- * @return Target The target object that owns this task
- */
- public function getOwningTarget() {
- return $this->target;
- }
-
- /**
- * Returns the name of task, used only for log messages
- *
- * @return string Name of this task
- */
- public function getTaskName() {
- if ($this->taskName === null) {
- // if no task name is set, then it's possible
- // this task was created from within another task. We don't
- // therefore know the XML tag name for this task, so we'll just
- // use the class name stripped of "task" suffix. This is only
- // for log messages, so we don't have to worry much about accuracy.
- return preg_replace('/task$/i', '', get_class($this));
- }
- return $this->taskName;
- }
-
- /**
- * Sets the name of this task for log messages
- *
- * @param string $name
- * @return string A string representing the name of this task for log
- */
- public function setTaskName($name) {
- $this->taskName = (string) $name;
- }
-
- /**
- * Returns the name of the task under which it was invoked,
- * usually the XML tagname
- *
- * @return string The type of this task (XML Tag)
- */
- public function getTaskType() {
- return $this->taskType;
- }
-
- /**
- * Sets the type of the task. Usually this is the name of the XML tag
- *
- * @param string The type of this task (XML Tag)
- */
- public function setTaskType($name) {
- $this->taskType = (string) $name;
- }
-
- /**
- * Returns a name
- * @param string $slotName
- */
- protected function getRegisterSlot($slotName) {
- return Register::getSlot('task.' . $this->getTaskName() . '.' . $slotName);
- }
-
- /**
- * Provides a project level log event to the task.
- *
- * @param string The message to log
- * @param integer The priority of the message
- * @see BuildEvent
- * @see BuildListener
- */
- function log($msg, $level = Project::MSG_INFO) {
- $this->project->logObject($this, $msg, $level);
- }
-
- /**
- * Sets a textual description of the task
- *
- * @param string $desc The text describing the task
- */
- public function setDescription($desc) {
- $this->description = $desc;
- }
-
- /**
- * Returns the textual description of the task
- *
- * @return string The text description of the task
- */
- public function getDescription() {
- return $this->description;
- }
-
- /**
- * Called by the parser to let the task initialize properly.
- * Should throw a BuildException if something goes wrong with the build
- *
- * This is abstract here, but may not be overloaded by subclasses.
- *
- * @throws BuildException
- */
- public function init() {
- }
-
- /**
- * Called by the project to let the task do it's work. This method may be
- * called more than once, if the task is invoked more than once. For
- * example, if target1 and target2 both depend on target3, then running
- * <em>phing target1 target2</em> will run all tasks in target3 twice.
- *
- * Should throw a BuildException if someting goes wrong with the build
- *
- * This is abstract here. Must be overloaded by real tasks.
- */
- abstract public function main();
-
- /**
- * Returns the location within the buildfile this task occurs. Used
- * by {@link BuildException} to give detailed error messages.
- *
- * @return Location The location object describing the position of this
- * task within the buildfile.
- */
- function getLocation() {
- return $this->location;
- }
-
- /**
- * Sets the location within the buildfile this task occurs. Called by
- * the parser to set location information.
- *
- * @param Location $location The location object describing the position of this
- * task within the buildfile.
- */
- function setLocation(Location $location) {
- $this->location = $location;
- }
-
- /**
- * Returns the wrapper object for runtime configuration
- *
- * @return RuntimeConfigurable The wrapper object used by this task
- */
- function getRuntimeConfigurableWrapper() {
- if ($this->wrapper === null) {
- $this->wrapper = new RuntimeConfigurable($this, $this->getTaskName());
- }
- return $this->wrapper;
- }
-
- /**
- * Sets the wrapper object this task should use for runtime
- * configurable elements.
- *
- * @param RuntimeConfigurable $wrapper The wrapper object this task should use
- */
- function setRuntimeConfigurableWrapper(RuntimeConfigurable $wrapper) {
- $this->wrapper = $wrapper;
- }
-
- /**
- * Configure this task if it hasn't been done already.
- */
- public function maybeConfigure() {
- if ($this->wrapper !== null) {
- $this->wrapper->maybeConfigure($this->project);
- }
- }
-
- /**
- * Perfrom this task
- */
- public function perform() {
-
- try { // try executing task
- $this->project->fireTaskStarted($this);
- $this->maybeConfigure();
- $this->main();
- $this->project->fireTaskFinished($this, $null=null);
- } catch (Exception $exc) {
- if ($exc instanceof BuildException) {
- if ($exc->getLocation() === null) {
- $exc->setLocation($this->getLocation());
- }
- }
- $this->project->fireTaskFinished($this, $exc);
- throw $exc;
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/TaskAdapter.php b/buildscripts/phing/classes/phing/TaskAdapter.php
deleted file mode 100755
index ba323c56..00000000
--- a/buildscripts/phing/classes/phing/TaskAdapter.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/*
- * $Id: 8cd2a3322c659a5de7fcb47e21192730e5cc863d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Use introspection to "adapt" an arbitrary ( not extending Task, but with
- * similar patterns).
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing
- */
-class TaskAdapter extends Task {
-
- /** target object */
- private $proxy;
-
- /**
- * Main entry point.
- * @return void
- */
- function main() {
-
- if (method_exists($this->proxy, "setProject")) {
- try { // try to set project
- $this->proxy->setProject($this->project);
- } catch (Exception $ex) {
- $this->log("Error setting project in " . get_class($this->proxy) . Project::MSG_ERR);
- throw new BuildException($ex);
- }
- } else {
- throw new Exception("Error setting project in class " . get_class($this->proxy));
- }
-
- if (method_exists($this->proxy, "main")) {
- try { //try to call main
- $this->proxy->main($this->project);
- } catch (Exception $ex) {
- $this->log("Error in " . get_class($this->proxy), Project::MSG_ERR);
- $this->log($ex->getTraceAsString(), Project::MSG_DEBUG);
- throw new BuildException($ex->getMessage());
- }
- } else {
- throw new BuildException("Your task-like class '" . get_class($this->proxy) ."' does not have a main() method");
- }
- }
-
- /**
- * Set the target object.
- * @param object $o
- * @return void
- */
- function setProxy($o) {
- $this->proxy = $o;
- }
-
- /**
- * Gets the target object.
- * @return object
- */
- function getProxy() {
- return $this->proxy;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/TaskContainer.php b/buildscripts/phing/classes/phing/TaskContainer.php
deleted file mode 100755
index 4be2ef41..00000000
--- a/buildscripts/phing/classes/phing/TaskContainer.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-/**
- * $Id: c31c503eb573b2f454071e9a97fa6a2323c128eb $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- *
- * @package phing
- */
-
-/**
- * Abstract interface for objects which can contain tasks (targets)
- * Used to check if a class can contain tasks (via instanceof)
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing
- */
-interface TaskContainer {
-
- /**
- * Adds a task to this task container. Must be implemented
- * by derived class
- *
- * @param object The task to be added to the container
- * @access public
- */
- function addTask(Task $task);
-}
diff --git a/buildscripts/phing/classes/phing/UnknownElement.php b/buildscripts/phing/classes/phing/UnknownElement.php
deleted file mode 100755
index b04365e7..00000000
--- a/buildscripts/phing/classes/phing/UnknownElement.php
+++ /dev/null
@@ -1,215 +0,0 @@
-<?php
-/*
- * $Id: a4e6c2e3f776c5a353e52fb8518b3533f14a97c4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Wrapper class that holds all information necessary to create a task
- * that did not exist when Phing started.
- *
- * <em> This has something to do with phing encountering an task XML element
- * it is not aware of at start time. This is a situation where special steps
- * need to be taken so that the element is then known.</em>
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing
- */
-class UnknownElement extends Task {
-
- private $elementName;
- private $realThing;
- private $children = array();
-
- /**
- * Constructs a UnknownElement object
- *
- * @param string The XML element name that is unknown
- * @access public
- */
- function __construct($elementName) {
- $this->elementName = (string) $elementName;
- }
-
- /**
- * Return the XML element name that this <code>UnnownElement</code>
- * handles.
- *
- * @return string The XML element name that is unknown
- */
- public function getTag() {
- return (string) $this->elementName;
- }
-
- /**
- * Tries to configure the unknown element
- *
- * @throws BuildException if the element can not be configured
- */
- public function maybeConfigure() {
-
- $this->realThing = $this->makeObject($this, $this->wrapper);
- $this->wrapper->setProxy($this->realThing);
- if ($this->realThing instanceof Task) {
- $this->realThing->setRuntimeConfigurableWrapper($this->wrapper);
- }
-
- $this->handleChildren($this->realThing, $this->wrapper);
- $this->wrapper->maybeConfigure($this->getProject());
-
- }
-
- /**
- * Called when the real task has been configured for the first time.
- *
- * @throws BuildException if the task can not be created
- */
- public function main() {
-
- if ($this->realThing === null) {
- // plain impossible to get here, maybeConfigure should
- // have thrown an exception.
- throw new BuildException("Should not be executing UnknownElement::main() -- task/type: {$this->elementName}");
- }
-
- if ($this->realThing instanceof Task) {
- $this->realThing->main();
- }
-
- }
-
- /**
- * Add a child element to the unknown element
- *
- * @param object The object representing the child element
- */
- public function addChild(UnknownElement $child) {
- $this->children[] = $child;
- }
-
- /**
- * Handle child elemets of the unknown element, if any.
- *
- * @param ProjectComponent The parent object the unkown element belongs to
- * @param object The parent wrapper object
- */
- function handleChildren(ProjectComponent $parent, $parentWrapper) {
-
- if ($parent instanceof TaskAdapter) {
- $parent = $parent->getProxy();
- }
-
- $parentClass = get_class($parent);
- $ih = IntrospectionHelper::getHelper($parentClass);
-
- for ($i=0, $childrenCount=count($this->children); $i < $childrenCount; $i++) {
-
- $childWrapper = $parentWrapper->getChild($i);
- $child = $this->children[$i];
- $realChild = null;
- if ($parent instanceof TaskContainer) {
- $realChild = $this->makeTask($child, $childWrapper, false);
- $parent->addTask($realChild);
- } else {
- $project = $this->project === null ? $parent->project : $this->project;
- $realChild = $ih->createElement($project, $parent, $child->getTag());
- }
-
- $childWrapper->setProxy($realChild);
- if ($realChild instanceof Task) {
- $realChild->setRuntimeConfigurableWrapper($childWrapper);
- }
-
- if ($realChild instanceof ProjectComponent) {
- $child->handleChildren($realChild, $childWrapper);
- }
-
- if ($realChild instanceof Task) {
- $realChild->maybeConfigure();
- }
- }
- }
-
- /**
- * Creates a named task or data type. If the real object is a task,
- * it is configured up to the init() stage.
- *
- * @param UnknownElement $ue The unknown element to create the real object for.
- * Must not be <code>null</code>.
- * @param RuntimeConfigurable $w Ignored in this implementation.
- * @return object The Task or DataType represented by the given unknown element.
- */
- protected function makeObject(UnknownElement $ue, RuntimeConfigurable $w) {
- $o = $this->makeTask($ue, $w, true);
- if ($o === null) {
- $o = $this->project->createDataType($ue->getTag());
- }
- if ($o === null) {
- throw new BuildException("Could not create task/type: '".$ue->getTag()."'. Make sure that this class has been declared using taskdef / typedef.");
- }
- return $o;
- }
-
- /**
- * Create a named task and configure it up to the init() stage.
- *
- * @param UnknownElement $ue The unknwon element to create a task from
- * @param RuntimeConfigurable $w The wrapper object
- * @param boolean $onTopLevel Whether to treat this task as if it is top-level.
- * @return Task The freshly created task
- */
- protected function makeTask(UnknownElement $ue, RuntimeConfigurable $w, $onTopLevel = false) {
-
- $task = $this->project->createTask($ue->getTag());
-
- if ($task === null) {
- if (!$onTopLevel) {
- throw new BuildException("Could not create task of type: '".$this->elementName."'. Make sure that this class has been declared using taskdef.");
- }
- return null;
- }
-
- // used to set the location within the xmlfile so that exceptions can
- // give detailed messages
-
- $task->setLocation($this->getLocation());
- $attrs = $w->getAttributes();
- if (isset($attrs['id'])) {
- $this->project->addReference($attrs['id'], $task);
- }
-
- // UnknownElement always has an associated target
- $task->setOwningTarget($this->target);
-
- $task->init();
- return $task;
- }
-
- /**
- * Get the name of the task to use in logging messages.
- *
- * @return string The task's name
- */
- function getTaskName() {
- return $this->realThing === null ? parent::getTaskName() : $this->realThing->getTaskName();
- }
-}
diff --git a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Manager.php b/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Manager.php
deleted file mode 100644
index 6fe71107..00000000
--- a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Manager.php
+++ /dev/null
@@ -1,304 +0,0 @@
-<?php
-/**
- * DocBlox
- *
- * PHP Version 5
- *
- * @category DocBlox
- * @package Parallel
- * @author Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link http://docblox-project.org
- */
-
-/**
- * Manager class for Parallel processes.
- *
- * This class will manage the workers and make sure all processes are executed
- * in parallel and not too many at the same time.
- *
- * @category DocBlox
- * @package Parallel
- * @author Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link http://docblox-project.org
- */
-class DocBlox_Parallel_Manager extends ArrayObject
-{
- /** @var int The maximum number of processes to run simultaneously */
- protected $process_limit = 2;
-
- /** @var boolean Tracks whether this manager is currently executing */
- protected $is_running = false;
-
- /**
- * Tries to autodetect the optimal number of process by counting the number
- * of processors.
- *
- * @param array $input Input for the array object.
- * @param int $flags flags for the array object.
- * @param string $iterator_class Iterator class for this array object.
- */
- public function __construct(
- $input = array(), $flags = 0, $iterator_class = "ArrayIterator"
- ) {
- parent::__construct($input, $flags, $iterator_class);
-
- if (is_readable('/proc/cpuinfo')) {
- $processors = 0;
- exec("cat /proc/cpuinfo | grep processor | wc -l", $processors);
- $this->setProcessLimit(reset($processors));
- }
- }
-
- /**
- * Adds a worker to to the queue.
- *
- * This method will prepare a worker to be executed in parallel once the
- * execute method is invoked.
- * A fluent interface is provided so that you can chain multiple workers
- * in one call.
- *
- * Example:
- *
- * $cb1 = function() { var_dump('a'); sleep(1); };
- * $cb2 = function() { var_dump('b'); sleep(1); };
- *
- * $mgr = new DocBlox_Parallel_Manager();
- * $mgr->setProcessLimit(2)
- * ->addWorker(new DocBlox_Parallel_Worker($cb1))
- * ->addWorker(new DocBlox_Parallel_Worker($cb2))
- * ->execute();
- *
- * @param int $index The key for this worker.
- * @param DocBlox_Parallel_Worker $newval The worker to add onto the queue.
- *
- * @see DocBlox_Parallel_Manager::execute()
- *
- * @throws RuntimeException if this method is invoked while the
- * manager is busy executing tasks.
- * @throws InvalidArgumentException if the provided element is not of type
- * DocBlox_Parallel_Worker.
- *
- * @return void
- */
- public function offsetSet($index, $newval)
- {
- if (!$newval instanceof DocBlox_Parallel_Worker) {
- throw new InvalidArgumentException(
- 'Provided element must be of type DocBlox_Parallel_Worker'
- );
- }
- if ($this->isRunning()) {
- throw new RuntimeException(
- 'Workers may not be added during execution of the manager'
- );
- }
-
- parent::offsetSet($index, $newval);
- }
-
- /**
- * Convenience method to make the addition of workers explicit and allow a
- * fluent interface.
- *
- * @param DocBlox_Parallel_Worker $worker The worker to add onto the queue.
- *
- * @return self
- */
- public function addWorker(DocBlox_Parallel_Worker $worker)
- {
- $this[] = $worker;
-
- return $this;
- }
-
- /**
- * Sets how many processes at most to execute at the same time.
- *
- * A fluent interface is provided so that you can chain multiple workers
- * in one call.
- *
- * @param int $process_limit The limit, minimum of 1
- *
- * @see DocBlox_Parallel_Manager::addWorker() for an example
- *
- * @return self
- */
- public function setProcessLimit($process_limit)
- {
- if ($process_limit < 1) {
- throw new InvalidArgumentException(
- 'Number of simultaneous processes may not be less than 1'
- );
- }
-
- $this->process_limit = $process_limit;
-
- return $this;
- }
-
- /**
- * Returns the current limit on the amount of processes that can be
- * executed at the same time.
- *
- * @return int
- */
- public function getProcessLimit()
- {
- return $this->process_limit;
- }
-
- /**
- * Returns whether the manager is executing the workers.
- *
- * @return boolean
- */
- public function isRunning()
- {
- return $this->is_running;
- }
-
- /**
- * Executes each worker.
- *
- * This method loops through the list of workers and tries to fork as
- * many times as the ProcessLimit dictates at the same time.
- *
- * @return void
- */
- public function execute()
- {
- /** @var int[] $processes */
- $processes = $this->startExecution();
-
- /** @var DocBlox_Parallel_Worker $worker */
- foreach ($this as $worker) {
-
- // if requirements are not met, execute workers in series.
- if (!$this->checkRequirements()) {
- $worker->execute();
- continue;
- }
-
- $this->forkAndRun($worker, $processes);
- }
-
- $this->stopExecution($processes);
- }
-
- /**
- * Notifies manager that execution has started, checks requirements and
- * returns array for child processes.
- *
- * If forking is not available because library requirements are not met
- * than the list of workers is processed in series and a E_USER_NOTICE is
- * triggered.
- *
- * @return int[]
- */
- protected function startExecution()
- {
- $this->is_running = true;
-
- // throw a E_USER_NOTICE if the requirements are not met.
- if (!$this->checkRequirements()) {
- trigger_error(
- 'The PCNTL extension is not available, running workers in series '
- . 'instead of parallel',
- E_USER_NOTICE
- );
- }
-
- return array();
- }
-
- /**
- * Waits for all processes to have finished and notifies the manager that
- * execution has stopped.
- *
- * @param int[] &$processes List of running processes.
- *
- * @return void
- */
- protected function stopExecution(array &$processes)
- {
- // starting of processes has ended but some processes might still be
- // running wait for them to finish
- while (!empty($processes)) {
- pcntl_waitpid(array_shift($processes), $status);
- }
-
- /** @var DocBlox_Parallel_Worker $worker */
- foreach ($this as $worker) {
- $worker->pipe->push();
- }
-
- $this->is_running = false;
- }
-
- /**
- * Forks the current process and calls the Worker's execute method OR
- * handles the parent process' execution.
- *
- * This is the really tricky part of the forking mechanism. Here we invoke
- * {@link http://www.php.net/manual/en/function.pcntl-fork.php pcntl_fork}
- * and either execute the forked process or deal with the parent's process
- * based on in which process we are.
- *
- * To fully understand what is going on here it is recommended to read the
- * PHP manual page on
- * {@link http://www.php.net/manual/en/function.pcntl-fork.php pcntl_fork}
- * and associated articles.
- *
- * If there are more workers than may be ran simultaneously then this method
- * will wait until a slot becomes available and then starts the next worker.
- *
- * @param DocBlox_Parallel_Worker $worker The worker to process.
- * @param int[] &$processes The list of running processes.
- *
- * @throws RuntimeException if we are unable to fork.
- *
- * @return void
- */
- protected function forkAndRun(
- DocBlox_Parallel_Worker $worker, array &$processes
- ) {
- $worker->pipe = new DocBlox_Parallel_WorkerPipe($worker);
-
- // fork the process and register the PID
- $pid = pcntl_fork();
-
- switch ($pid) {
- case -1:
- throw new RuntimeException('Unable to establish a fork');
- case 0: // Child process
- $worker->execute();
-
- $worker->pipe->pull();
-
- // Kill -9 this process to prevent closing of shared file handlers.
- // Not doing this causes, for example, MySQL connections to be cleaned.
- posix_kill(getmypid(), SIGKILL);
- default: // Parent process
- // Keep track if the worker children
- $processes[] = $pid;
-
- if (count($processes) >= $this->getProcessLimit()) {
- pcntl_waitpid(array_shift($processes), $status);
- }
- break;
- }
- }
-
- /**
- * Returns true when all requirements are met.
- *
- * @return bool
- */
- protected function checkRequirements()
- {
- return (bool)(extension_loaded('pcntl'));
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/README.md b/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/README.md
deleted file mode 100644
index 272d7191..00000000
--- a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-Parallel
-========
-
-This is a library for introducing Parallelization into your project.
-See the `example.php` file for an example how to use this library.
-
-Theory of Operation
--------------------
-
-This library will enable the developer to execute a given amount of tasks
-(workers) in parallel. This is achieved by adding workers onto a manager,
-optionally defining how many processes to run simultaneously and then execute
-the manager.
-
-Under Linux this library will try to detect the number of processors and allow
-a maximum number of processes to run equal to the number of processors. If this
-cannot be determined or the user is running Windows then a default of 2 is used.
-
-Requirements and graceful degradation
--------------------------------------
-
-Parallelization has several requirements. But to allow distribution, without
-adding several requirements to your application, will this library execute the
-given tasks in serie if the requirements are not met. And throw a E_USER_NOTICE
-php error that explains to the user that dependencies are missing.
-
-The requirements for this library are:
-
-* A *NIX compatible operating system
-* Scripts must not run from an apache module
-* the PCNTL PHP extension (http://php.net/manual/en/book.pcntl.php)
-
-Workers
--------
-
-Workers are basically wrappers around callback functions or methods. As such you
-can use anything in your existing project and parallelize it.
-
-Do note that each parallel process is a duplicate of the original. This means
-that, for example, if you pass an object (or other reference) and change that,
-that the changes that you have made do not carry over to the caller.
-
-The return value of the given callback is stored as result on the worker and
-can be read using the `getResult()` method.
-
-Any exception that is thrown will result in an error, where the `getReturnCode()`
-method will return the exception code (be warned: this may be 0!) and the
-`getError()` method will return the exception message.
-
-Errors and exceptions
----------------------
-
-if a task throws an exception it is caught and registered as an error. The
-exception's code is used as error number, where the message is used as error
-message.
-
-By using this, instead of dying, you can continue execution of the other parallel
-processes and handle errors yourself after all processes have been executed.
-
-Examples
---------
-
-### Fluent interface
-
- $mgr = new DocBlox_Parallel_Manager();
- $mgr
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'a'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'b'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'c'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'd'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'e'; }))
- ->execute();
-
- /** @var DocBlox_Parallel_Worker $worker */
- foreach ($mgr as $worker) {
- var_dump($worker->getResult());
- }
-
-### Array interface
-
- $mgr = new DocBlox_Parallel_Manager();
- $mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'f'; });
- $mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'g'; });
- $mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'h'; });
- $mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'i'; });
- $mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'j'; });
- $mgr->execute();
-
- /** @var DocBlox_Parallel_Worker $worker */
- foreach ($mgr as $worker) {
- var_dump($worker->getResult());
- }
-
-TODO
-----
-
-* Improve docs
-* More intelligent process slots; currently only the oldest in a 'set' of slots
- is waited on but if this runs for a longer time then the other slots than
- those will not be filled as long as the first slot is occupied.
-* Last parts of IPC (Inter-Process Communication), to be able to return
- information from Workers to the Manager.
-
- * STDOUT
- * STDERR
-
diff --git a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Worker.php b/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Worker.php
deleted file mode 100644
index 338f4b25..00000000
--- a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/Worker.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * DocBlox
- *
- * PHP Version 5
- *
- * @category DocBlox
- * @package Parallel
- * @author Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link http://docblox-project.org
- */
-
-/**
- * Class that represents the execution of a single task within a parallelized
- * frame.
- *
- * @category DocBlox
- * @package Parallel
- * @author Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link http://docblox-project.org
- */
-class DocBlox_Parallel_Worker
-{
- /** @var callback the task to execute for this worker */
- protected $task = null;
-
- /** @var mixed[] A list of argument to pass to the task */
- protected $arguments = array();
-
- /** @var int The return code to tell the parent process how it went */
- protected $return_code = -1;
-
- /** @var mixed The result of the given task */
- protected $result = '';
-
- /** @var string The error message, if an error occurred */
- protected $error = '';
-
- /**
- * Creates the worker and sets the task to execute optionally including
- * the arguments that need to be passed to the task.
- *
- * @param callback $task The task to invoke upon execution.
- * @param mixed[] $arguments The arguments to provide to the task.
- */
- function __construct($task, array $arguments = array())
- {
- $this->setTask($task);
- $this->arguments = $arguments;
- }
-
- /**
- * Returns the list of arguments as provided int he constructor.
- *
- * @see DocBlox_Parallel_Worker::__construct()
- *
- * @return mixed[]
- */
- public function getArguments()
- {
- return $this->arguments;
- }
-
- /**
- * Returns the task as provided in the constructor.
- *
- * @see DocBlox_Parallel_Worker::__construct()
- *
- * @return callback
- */
- public function getTask()
- {
- return $this->task;
- }
-
- /**
- * Returns the available return code.
- *
- * This method may return -1 if no return code is available yet.
- *
- * @return int
- */
- public function getReturnCode()
- {
- return $this->return_code;
- }
-
- /**
- * Sets the return code for this worker.
- *
- * Recommended is to use the same codes as are used with
- * {@link http://www.gnu.org/software/bash/manual/html_node/Exit-Status.html
- * exit codes}.
- *
- * In short: 0 means that the task succeeded and a any other positive value
- * indicates an error condition.
- *
- * @param int $return_code Recommended to be a positive number
- *
- * @throw InvalidArgumentException if the code is not a number or negative
- *
- * @return void
- */
- public function setReturnCode($return_code)
- {
- if (!is_numeric($return_code) || ($return_code < 0)) {
- throw new InvalidArgumentException(
- 'Expected the return code to be a positive number'
- );
- }
-
- $this->return_code = $return_code;
- }
-
- /**
- * Returns the error message associated with the return code.
- *
- * @return string
- */
- public function getError()
- {
- return $this->error;
- }
-
- /**
- * Sets the error message.
- *
- * @param string $error The error message.
- *
- * @return void
- */
- public function setError($error)
- {
- $this->error = $error;
- }
-
- /**
- * Returns the result for this task run.
- *
- * @return null|mixed
- */
- public function getResult()
- {
- return $this->result;
- }
-
- /**
- * Sets the result for this task run.
- *
- * @param mixed $result The value that is returned by the task; can be anything.
- *
- * @return void
- */
- public function setResult($result)
- {
- $this->result = $result;
- }
-
- /**
- * Invokes the task with the given arguments and processes the output.
- *
- * @return void.
- */
- public function execute()
- {
- $this->setReturnCode(0);
- try {
- $this->setResult(
- call_user_func_array($this->getTask(), $this->getArguments())
- );
- } catch (Exception $e) {
- $this->setError($e->getMessage());
- $this->setReturnCode($e->getCode());
- }
- }
-
- /**
- * Sets the task for this worker and validates whether it is callable.
- *
- * @param callback $task The task to execute when the execute method
- * is invoked.
- *
- * @throws InvalidArgumentException if the given argument is not a callback.
- *
- * @see DocBlox_Parallel_Worker::__construct()
- * @see DocBlox_Parallel_Worker::execute()
- *
- * @return void
- */
- protected function setTask($task)
- {
- if (!is_callable($task)) {
- throw new InvalidArgumentException(
- 'Worker task is not a callable object'
- );
- }
-
- $this->task = $task;
- }
-}
diff --git a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/WorkerPipe.php b/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/WorkerPipe.php
deleted file mode 100644
index 3b7eb7fe..00000000
--- a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/WorkerPipe.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/**
- * DocBlox
- *
- * PHP Version 5
- *
- * @category DocBlox
- * @package Parallel
- * @author Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link http://docblox-project.org
- */
-
-/**
- * Class that represents a named pipe for a Worker.
- *
- * This class manages the named pipe for a worker and is able to push and pull
- * specific data to facilitate IPC (interprocess communication).
- *
- * @category DocBlox
- * @package Parallel
- * @author Mike van Riel <mike.vanriel@naenius.com>
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link http://docblox-project.org
- */
-class DocBlox_Parallel_WorkerPipe
-{
- /** @var DocBlox_Parallel_Worker worker class that is associated */
- protected $worker;
-
- /** @var string Path to the pipe */
- protected $path;
-
- /**
- * Initializes the named pipe.
- *
- * @param DocBlox_Parallel_Worker $worker Associated worker.
- */
- public function __construct(DocBlox_Parallel_Worker $worker)
- {
- $this->worker = $worker;
-
- $this->path = tempnam(sys_get_temp_dir(), 'dpm_');
- posix_mkfifo($this->path, 0750);
- }
-
- /**
- * If the named pipe was not cleaned up, do so now.
- */
- public function __destruct()
- {
- if (file_exists($this->path)) {
- $this->release();
- }
- }
-
- /**
- * Pull the worker data into the named pipe.
- *
- * @return void
- */
- public function pull()
- {
- $this->writePipeContents();
- }
-
- /**
- * Push the worker data back onto the worker and release the pipe.
- *
- * @return void
- */
- public function push()
- {
- list($result, $error, $return_code) = $this->readPipeContents();
- $this->release();
-
- $this->worker->setResult($result);
- $this->worker->setError($error);
- $this->worker->setReturnCode($return_code);
- }
-
- /**
- * Convenience method to show relation to readPipeContents.
- *
- * @return void
- */
- protected function writePipeContents()
- {
- // push the gathered data onto a name pipe
- $pipe = fopen($this->path, 'w');
- fwrite(
- $pipe, serialize(
- array(
- $this->worker->getResult(),
- $this->worker->getError(),
- $this->worker->getReturnCode()
- )
- )
- );
- fclose($pipe);
- }
-
- /**
- * Returns the unserialized contents of the pipe.
- *
- * @return array
- */
- protected function readPipeContents()
- {
- $pipe = fopen($this->path, 'r+');
- $result = unserialize(fread($pipe, filesize($this->path)));
- fclose($pipe);
-
- return $result;
- }
-
- /**
- * Releases the pipe.
- *
- * @return void
- */
- protected function release()
- {
- unlink($this->path);
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/example.php b/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/example.php
deleted file mode 100644
index 3bdcd408..00000000
--- a/buildscripts/phing/classes/phing/contrib/DocBlox/Parallel/example.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * DocBlox
- *
- * PHP Version 5
- *
- * @category DocBlox
- * @package Parallel
- * @author Mike van Riel <mike.vanriel@naenius.com>
- * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
- * @license http://www.opensource.org/licenses/mit-license.php MIT
- * @link http://docblox-project.org
- */
-
-/** Include the manager as we do not autoload */
-require_once 'Manager.php';
-
-/** Include the worker as we do not autoload */
-require_once 'Worker.php';
-
-/** Include the worker's pipe as we do not autoload */
-require_once 'WorkerPipe.php';
-
-// -----------------------------------------------------------------------------
-// method 1: using a fluent interface and the addWorker helper.
-// -----------------------------------------------------------------------------
-
-$mgr = new DocBlox_Parallel_Manager();
-$mgr
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'a'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'b'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'c'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'd'; }))
- ->addWorker(new DocBlox_Parallel_Worker(function() { sleep(1); return 'e'; }))
- ->execute();
-
-/** @var DocBlox_Parallel_Worker $worker */
-foreach ($mgr as $worker) {
- var_dump($worker->getResult());
-}
-
-// -----------------------------------------------------------------------------
-// method 2: using the manager as worker array
-// -----------------------------------------------------------------------------
-
-$mgr = new DocBlox_Parallel_Manager();
-$mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'f'; });
-$mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'g'; });
-$mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'h'; });
-$mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'i'; });
-$mgr[] = new DocBlox_Parallel_Worker(function() { sleep(1); return 'j'; });
-$mgr->execute();
-
-/** @var DocBlox_Parallel_Worker $worker */
-foreach ($mgr as $worker) {
- var_dump($worker->getResult());
-}
diff --git a/buildscripts/phing/classes/phing/filters/BaseFilterReader.php b/buildscripts/phing/classes/phing/filters/BaseFilterReader.php
deleted file mode 100755
index 4489b16e..00000000
--- a/buildscripts/phing/classes/phing/filters/BaseFilterReader.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * $Id: a1da135c09abf5cf07a53b3a327baf3497cfb697 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/system/io/FilterReader.php';
-include_once 'phing/system/io/StringReader.php';
-
-
-/**
- * Base class for core filter readers.
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @version $Id$
- * @access public
- * @see FilterReader
- * @package phing.filters
- */
-class BaseFilterReader extends FilterReader {
-
- /** Have the parameters passed been interpreted? */
- protected $initialized = false;
-
- /** The Phing project this filter is part of. */
- protected $project = null;
-
- /**
- * Constructor used by Phing's introspection mechanism.
- * The original filter reader is only used for chaining
- * purposes, never for filtering purposes (and indeed
- * it would be useless for filtering purposes, as it has
- * no real data to filter). ChainedReaderHelper uses
- * this placeholder instance to create a chain of real filters.
- *
- * @param Reader $in
- */
- function __construct($in = null) {
- if ($in === null) {
- $dummy = "";
- $in = new StringReader($dummy);
- }
- parent::__construct($in);
- }
-
- /**
- * Returns the initialized status.
- *
- * @return boolean whether or not the filter is initialized
- */
- function getInitialized() {
- return $this->initialized;
- }
-
- /**
- * Sets the initialized status.
- *
- * @param boolean $initialized Whether or not the filter is initialized.
- */
- function setInitialized($initialized) {
- $this->initialized = (boolean) $initialized;
- }
-
- /**
- * Sets the project to work with.
- *
- * @param object $project The project this filter is part of.
- * Should not be <code>null</code>.
- */
- function setProject(Project $project) {
- // type check, error must never occur, bad code of it does
- $this->project = $project;
- }
-
- /**
- * Returns the project this filter is part of.
- *
- * @return object The project this filter is part of
- */
- function getProject() {
- return $this->project;
- }
-
- /**
- * Reads characters.
- *
- * @param off Offset at which to start storing characters.
- * @param len Maximum number of characters to read.
- *
- * @return Characters read, or -1 if the end of the stream
- * has been reached
- *
- * @throws IOException If an I/O error occurs
- */
- function read($len = null) {
- return $this->in->read($len);
- }
-
- /**
- * Reads a line of text ending with '\n' (or until the end of the stream).
- * The returned String retains the '\n'.
- *
- * @return the line read, or <code>null</code> if the end of the
- stream has already been reached
- *
- * @throws IOException if the underlying reader throws one during
- * reading
- */
- function readLine() {
- $line = null;
-
- while ( ($ch = $this->in->read(1)) !== -1 ) {
- $line .= $ch;
- if ( $ch === "\n" )
- break;
- }
-
- return $line;
- }
-
- /**
- * Returns whether the end of file has been reached with input stream.
- * @return boolean
- */
- function eof() {
- return $this->in->eof();
- }
-
- /**
- * Convenience method to support logging in filters.
- * @param string $msg Message to log.
- * @param int $level Priority level.
- */
- function log($msg, $level = Project::MSG_INFO) {
- if ($this->project !== null) {
- $this->project->log("[filter:".get_class($this)."] ".$msg, $level);
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/BaseParamFilterReader.php b/buildscripts/phing/classes/phing/filters/BaseParamFilterReader.php
deleted file mode 100755
index 8d3b0810..00000000
--- a/buildscripts/phing/classes/phing/filters/BaseParamFilterReader.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-/*
- * $Id: 412cc012db35b1dcf3545b93d5053e727d66b61f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/types/Parameterizable.php';
-include_once 'phing/types/Parameter.php';
-
-/**
- * Base class for core filter readers.
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @copyright � 2003 seasonfive. All rights reserved
- * @version $Id$
- * @access public
- * @see FilterReader
- * @package phing.filters
- */
-class BaseParamFilterReader extends BaseFilterReader implements Parameterizable {
-
- /** The passed in parameter array. */
- protected $_parameters = array();
-
- /*
- * Sets the parameters used by this filter, and sets
- * the filter to an uninitialized status.
- *
- * @param array Array of parameters to be used by this filter.
- * Should not be <code>null</code>.
- */
- function setParameters($parameters) {
- // type check, error must never occur, bad code of it does
- if ( !is_array($parameters) ) {
- throw new Exception("Expected parameters array got something else");
- }
-
- $this->_parameters = $parameters;
- $this->setInitialized(false);
- }
-
- /*
- * Returns the parameters to be used by this filter.
- *
- * @return the parameters to be used by this filter
- */
- function &getParameters() {
- return $this->_parameters;
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/ChainableReader.php b/buildscripts/phing/classes/phing/filters/ChainableReader.php
deleted file mode 100644
index 2b773dbe..00000000
--- a/buildscripts/phing/classes/phing/filters/ChainableReader.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * $Id: fb9ebbb44f13ecc3693265e1b793ab17cea543a1 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-/**
- * Interface indicating that a reader may be chained to another one.
- *
- * @author Magesh Umasankar
- * @package phing.filters
- */
-interface ChainableReader {
-
- /**
- * Returns a reader with the same configuration as this one,
- * but filtering input from the specified reader.
- *
- * @param Reader $rdr the reader which the returned reader should be filtering
- *
- * @return Reader A reader with the same configuration as this one, but
- * filtering input from the specified reader
- */
- public function chain(Reader $rdr);
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/ExpandProperties.php b/buildscripts/phing/classes/phing/filters/ExpandProperties.php
deleted file mode 100755
index 2517783f..00000000
--- a/buildscripts/phing/classes/phing/filters/ExpandProperties.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-/*
- * $Id: d6bb7717db7cf2b122cbdcb93e5bb0f45d97ec52 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-require_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Expands Phing Properties, if any, in the data.
- * <p>
- * Example:<br>
- * <pre><expandproperties/></pre>
- * Or:
- * <pre><filterreader classname="phing.filters.ExpandProperties'/></pre>
- *
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: d6bb7717db7cf2b122cbdcb93e5bb0f45d97ec52 $
- * @see BaseFilterReader
- * @package phing.filters
- */
-class ExpandProperties extends BaseFilterReader implements ChainableReader {
- protected $logLevel = Project::MSG_VERBOSE;
-
- /**
- * Set level of log messages generated (default = info)
- * @param string $level
- */
- public function setLevel($level)
- {
- switch ($level)
- {
- case "error": $this->logLevel = Project::MSG_ERR; break;
- case "warning": $this->logLevel = Project::MSG_WARN; break;
- case "info": $this->logLevel = Project::MSG_INFO; break;
- case "verbose": $this->logLevel = Project::MSG_VERBOSE; break;
- case "debug": $this->logLevel = Project::MSG_DEBUG; break;
- }
- }
-
- /**
- * Returns the filtered stream.
- * The original stream is first read in fully, and the Phing properties are expanded.
- *
- * @return mixed the filtered stream, or -1 if the end of the resulting stream has been reached.
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- $project = $this->getProject();
- $buffer = ProjectConfigurator::replaceProperties($project, $buffer, $project->getProperties(), $this->logLevel);
-
- return $buffer;
- }
-
- /**
- * Creates a new ExpandProperties filter using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new ExpandProperties($reader);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/HeadFilter.php b/buildscripts/phing/classes/phing/filters/HeadFilter.php
deleted file mode 100755
index 3cbcb51b..00000000
--- a/buildscripts/phing/classes/phing/filters/HeadFilter.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-
-/*
- * $Id: e3e9c0a171b4416545e57fe42b45b4eec14914ce $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Reads the first <code>n</code> lines of a stream.
- * (Default is first 10 lines.)
- * <p>
- * Example:
- * <pre><headfilter lines="3"/></pre>
- * Or:
- * <pre><filterreader classname="phing.filters.HeadFilter">
- * <param name="lines" value="3"/>
- * </filterreader></pre>
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @author hans lellelid, hans@velum.net
- * @version $Id$
- * @access public
- * @see FilterReader
- * @package phing.filters
- */
-class HeadFilter extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Parameter name for the number of lines to be returned.
- */
- const LINES_KEY = "lines";
-
- /**
- * Number of lines currently read in.
- * @var integer
- */
- private $_linesRead = 0;
-
- /**
- * Number of lines to be returned in the filtered stream.
- * @var integer
- */
- private $_lines = 10;
-
- /**
- * Returns first n lines of stream.
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // note, if buffer contains fewer lines than
- // $this->_lines this code will not work.
-
- if($this->_linesRead < $this->_lines) {
-
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- // now grab first X lines from buffer
-
- $lines = explode("\n", $buffer);
-
- $linesCount = count($lines);
-
- // must account for possibility that the num lines requested could
- // involve more than one buffer read.
- $len = ($linesCount > $this->_lines ? $this->_lines - $this->_linesRead : $linesCount);
- $filtered_buffer = implode("\n", array_slice($lines, 0, $len) );
- $this->_linesRead += $len;
-
- return $filtered_buffer;
-
- }
-
- return -1; // EOF, since the file is "finished" as far as subsequent filters are concerned.
- }
-
- /**
- * Sets the number of lines to be returned in the filtered stream.
- *
- * @param integer $lines the number of lines to be returned in the filtered stream.
- */
- function setLines($lines) {
- $this->_lines = (int) $lines;
- }
-
- /**
- * Returns the number of lines to be returned in the filtered stream.
- *
- * @return integer The number of lines to be returned in the filtered stream.
- */
- function getLines() {
- return $this->_lines;
- }
-
- /**
- * Creates a new HeadFilter using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader.
- */
- function chain(Reader $reader) {
- $newFilter = new HeadFilter($reader);
- $newFilter->setLines($this->getLines());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Scans the parameters list for the "lines" parameter and uses
- * it to set the number of lines to be returned in the filtered stream.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0, $_i=count($params) ; $i < $_i; $i++) {
- if ( self::LINES_KEY == $params[$i]->getName() ) {
- $this->_lines = (int) $params[$i]->getValue();
- break;
- }
- }
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/IconvFilter.php b/buildscripts/phing/classes/phing/filters/IconvFilter.php
deleted file mode 100755
index c9883b17..00000000
--- a/buildscripts/phing/classes/phing/filters/IconvFilter.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-/*
- * $Id: 9c0d703f08f0160b6a699d328a6025587877e104 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Encode data from <code>in</code> encoding to <code>out</code> encoding.
- *
- * Example:
- * <pre>
- * <iconvfilter inputencoding="UTF-8" outputencoding="CP1251" />
- * </pre>
- * Or:
- * <pre>
- * <filterreader classname="phing.filters.IconvFilter">
- * <param name="inputencoding" value="UTF-8" />
- * <param name="outputencoding" value="CP1251" />
- * </filterreader>
- * </pre>
- *
- * @author Alexey Shockov, <alexey@shockov.com>
- * @version $Id$
- * @package phing.filters
- */
-class IconvFilter
- extends BaseParamFilterReader
- implements ChainableReader {
-
- private $_inputEncoding;
-
- private $_outputEncoding;
-
- /**
- * Returns first n lines of stream.
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
- $this->_initialize();
-
- // Process whole text at once.
- $text = null;
- while (($data = $this->in->read($len)) !== -1) {
- $text .= $data;
- }
-
- // At the end.
- if (null === $text) {
- return -1;
- }
-
- $this->log(
- "Encoding " . $this->in->getResource() . " from " . $this->getInputEncoding() . " to " . $this->getOutputEncoding(),
- Project::MSG_VERBOSE
- );
-
- return iconv($this->_inputEncoding, $this->_outputEncoding, $text);
- }
-
- /**
- *
- * @param string $encoding Input encoding.
- */
- public function setInputEncoding($encoding) {
- $this->_inputEncoding = $encoding;
- }
-
- /**
- *
- * @return string
- */
- public function getInputEncoding() {
- return $this->_inputEncoding;
- }
-
- /**
- *
- * @param string $encoding Output encoding.
- */
- public function setOutputEncoding($encoding) {
- $this->_outputEncoding = $encoding;
- }
-
- /**
- *
- * @return string
- */
- public function getOutputEncoding() {
- return $this->_outputEncoding;
- }
-
- /**
- * Creates a new IconvFilter using the passed in Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream. Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering the specified reader.
- */
- function chain(Reader $reader) {
- $filter = new self($reader);
-
- $filter->setInputEncoding($this->getInputEncoding());
- $filter->setOutputEncoding($this->getOutputEncoding());
-
- $filter->setInitialized(true);
- $filter->setProject($this->getProject());
-
- return $filter;
- }
-
- /**
- * Configuring object from the parameters list.
- */
- private function _initialize() {
- if ($this->getInitialized()) {
- return;
- }
-
- $params = $this->getParameters();
- if ($params !== null) {
- foreach ($params as $param) {
- if ('in' == $param->getName()) {
- $this->setInputEncoding($param->getValue());
- } else if ('out' == $param->getName()) {
- $this->setOutputEncoding($param->getValue());
- }
- }
- }
-
- $this->setInitialized(true);
- }
-}
diff --git a/buildscripts/phing/classes/phing/filters/LineContains.php b/buildscripts/phing/classes/phing/filters/LineContains.php
deleted file mode 100755
index b84b62c1..00000000
--- a/buildscripts/phing/classes/phing/filters/LineContains.php
+++ /dev/null
@@ -1,260 +0,0 @@
-<?php
-
-/*
- * $Id: 2e783b14ff093df7de21477479a123403d630984 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Filter which includes only those lines that contain all the user-specified
- * strings.
- *
- * Example:
- *
- * <pre><linecontains>
- * <contains value="foo">
- * <contains value="bar">
- * </linecontains></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.LineContains">
- * <param type="contains" value="foo"/>
- * <param type="contains" value="bar"/>
- * </filterreader></pre>
- *
- * This will include only those lines that contain <code>foo</code> and
- * <code>bar</code>.
- *
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @author Hans Lellelid <hans@velum.net>
- * @version $Id$
- * @see PhingFilterReader
- * @package phing.filters
-*/
-class LineContains extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * The parameter name for the string to match on.
- * @var string
- */
- const CONTAINS_KEY = "contains";
-
- /**
- * Array of Contains objects.
- * @var array
- */
- private $_contains = array();
-
- /**
- * [Deprecated]
- * @var string
- */
- private $_line = null;
-
- /**
- * Returns all lines in a buffer that contain specified strings.
- * @return mixed buffer, -1 on EOF
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $matched = array();
- $containsSize = count($this->_contains);
-
- foreach($lines as $line) {
- for($i = 0 ; $i < $containsSize ; $i++) {
- $containsStr = $this->_contains[$i]->getValue();
- if ( strstr($line, $containsStr) === false ) {
- $line = null;
- break;
- }
- }
- if($line !== null) {
- $matched[] = $line;
- }
- }
- $filtered_buffer = implode("\n", $matched);
- return $filtered_buffer;
- }
-
- /**
- * [Deprecated. For reference only, used to be read() method.]
- * Returns the next character in the filtered stream, only including
- * lines from the original stream which contain all of the specified words.
- *
- * @return the next character in the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function readChar() {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $ch = -1;
-
- if ( $this->_line !== null ) {
- $ch = substr($this->_line, 0, 1);
- if ( strlen($this->_line) === 1 )
- $this->_line = null;
- else
- $this->_line = substr($this->_line, 1);
- } else {
- $this->_line = $this->readLine();
- if ( $this->_line === null ) {
- $ch = -1;
- } else {
- $containsSize = count($this->_contains);
- for($i = 0 ; $i < $containsSize ; $i++) {
- $containsStr = $this->_contains[$i]->getValue();
- if ( strstr($this->_line, $containsStr) === false ) {
- $this->_line = null;
- break;
- }
- }
- return $this->readChar();
- }
- }
-
- return $ch;
- }
-
- /**
- * Adds a <code>contains</code> nested element.
- *
- * @return Contains The <code>contains</code> element added.
- * Must not be <code>null</code>.
- */
- function createContains() {
- $num = array_push($this->_contains, new Contains());
- return $this->_contains[$num-1];
- }
-
- /**
- * Sets the array of words which must be contained within a line read
- * from the original stream in order for it to match this filter.
- *
- * @param array $contains An array of words which must be contained
- * within a line in order for it to match in this filter.
- * Must not be <code>null</code>.
- */
- function setContains($contains) {
- // type check, error must never occur, bad code of it does
- if ( !is_array($contains) ) {
- throw new Exception("Excpected array got something else");
- }
-
- $this->_contains = $contains;
- }
-
- /**
- * Returns the vector of words which must be contained within a line read
- * from the original stream in order for it to match this filter.
- *
- * @return array The array of words which must be contained within a line read
- * from the original stream in order for it to match this filter. The
- * returned object is "live" - in other words, changes made to the
- * returned object are mirrored in the filter.
- */
- function getContains() {
- return $this->_contains;
- }
-
- /**
- * Creates a new LineContains using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new LineContains($reader);
- $newFilter->setContains($this->getContains());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to add user-defined contains strings.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- foreach($params as $param) {
- if ( self::CONTAINS_KEY == $param->getType() ) {
- $cont = new Contains();
- $cont->setValue($param->getValue());
- array_push($this->_contains, $cont);
- break; // because we only support a single contains
- }
- }
- }
- }
-}
-
-/**
- * Holds a contains element.
- *
- * @package phing.filters
- */
-class Contains {
-
- /**
- * @var string
- */
- private $_value;
-
- /**
- * Set 'contains' value.
- * @param string $contains
- */
- function setValue($contains) {
- $this->_value = (string) $contains;
- }
-
- /**
- * Returns 'contains' value.
- * @return string
- */
- function getValue() {
- return $this->_value;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/filters/LineContainsRegexp.php b/buildscripts/phing/classes/phing/filters/LineContainsRegexp.php
deleted file mode 100755
index c603978f..00000000
--- a/buildscripts/phing/classes/phing/filters/LineContainsRegexp.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/*
- * $Id: 0a881c0b67c96c20345980fd033f006379949dda $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/types/RegularExpression.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Filter which includes only those lines that contain the user-specified
- * regular expression matching strings.
- *
- * Example:
- * <pre><linecontainsregexp>
- * <regexp pattern="foo*">
- * </linecontainsregexp></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.LineContainsRegExp">
- * <param type="regexp" value="foo*"/>
- * </filterreader></pre>
- *
- * This will fetch all those lines that contain the pattern <code>foo</code>
- *
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @see FilterReader
- * @package phing.filters
- */
-class LineContainsRegexp extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Parameter name for regular expression.
- * @var string
- */
- const REGEXP_KEY = "regexp";
-
- /**
- * Regular expressions that are applied against lines.
- * @var array
- */
- private $_regexps = array();
-
- /**
- * Returns all lines in a buffer that contain specified strings.
- * @return mixed buffer, -1 on EOF
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $matched = array();
-
- $regexpsSize = count($this->_regexps);
- foreach($lines as $line) {
- for($i = 0 ; $i<$regexpsSize ; $i++) {
- $regexp = $this->_regexps[$i];
- $re = $regexp->getRegexp($this->getProject());
- $matches = $re->matches($line);
- if ( !$matches ) {
- $line = null;
- break;
- }
- }
- if($line !== null) {
- $matched[] = $line;
- }
- }
- $filtered_buffer = implode("\n", $matched);
- return $filtered_buffer;
- }
-
- /**
- * Adds a <code>regexp</code> element.
- *
- * @return object regExp The <code>regexp</code> element added.
- */
- function createRegexp() {
- $num = array_push($this->_regexps, new RegularExpression());
- return $this->_regexps[$num-1];
- }
-
- /**
- * Sets the vector of regular expressions which must be contained within
- * a line read from the original stream in order for it to match this
- * filter.
- *
- * @param regexps An array of regular expressions which must be contained
- * within a line in order for it to match in this filter. Must not be
- * <code>null</code>.
- */
- function setRegexps($regexps) {
- // type check, error must never occur, bad code of it does
- if ( !is_array($regexps) ) {
- throw new Exception("Excpected an 'array', got something else");
- }
- $this->_regexps = $regexps;
- }
-
- /**
- * Returns the array of regular expressions which must be contained within
- * a line read from the original stream in order for it to match this
- * filter.
- *
- * @return array The array of regular expressions which must be contained within
- * a line read from the original stream in order for it to match this
- * filter. The returned object is "live" - in other words, changes made to
- * the returned object are mirrored in the filter.
- */
- function getRegexps() {
- return $this->_regexps;
- }
-
- /**
- * Creates a new LineContainsRegExp using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new LineContainsRegExp($reader);
- $newFilter->setRegexps($this->getRegexps());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses parameters to add user defined regular expressions.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $i<count($params) ; $i++) {
- if ( self::REGEXP_KEY === $params[$i]->getType() ) {
- $pattern = $params[$i]->getValue();
- $regexp = new RegularExpression();
- $regexp->setPattern($pattern);
- array_push($this->_regexps, $regexp);
- }
- }
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/PrefixLines.php b/buildscripts/phing/classes/phing/filters/PrefixLines.php
deleted file mode 100755
index 9edcc02a..00000000
--- a/buildscripts/phing/classes/phing/filters/PrefixLines.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-
-/*
- * $Id: 744d8766d5aba397c0a8efd61afb8e60bd77b0c3 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Attaches a prefix to every line.
- *
- * Example:
- * <pre><prefixlines prefix="Foo"/></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.PrefixLines">
- * <param name="prefix" value="Foo"/>
- * </filterreader></pre>
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @author hans lellelid, hans@velum.net
- * @version $Id$
- * @access public
- * @see FilterReader
- * @package phing.filters
-*/
-class PrefixLines extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Parameter name for the prefix.
- * @var string
- */
- const PREFIX_KEY = "lines";
-
- /**
- * The prefix to be used.
- * @var string
- */
- private $_prefix = null;
-
- /**
- * Adds a prefix to each line of input stream and returns resulting stream.
- *
- * @return mixed buffer, -1 on EOF
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $filtered = array();
-
- foreach($lines as $line) {
- $line = $this->_prefix . $line;
- $filtered[] = $line;
- }
-
- $filtered_buffer = implode("\n", $filtered);
- return $filtered_buffer;
- }
-
- /**
- * Sets the prefix to add at the start of each input line.
- *
- * @param string $prefix The prefix to add at the start of each input line.
- * May be <code>null</code>, in which case no prefix
- * is added.
- */
- function setPrefix($prefix) {
- $this->_prefix = (string) $prefix;
- }
-
- /**
- * Returns the prefix which will be added at the start of each input line.
- *
- * @return string The prefix which will be added at the start of each input line
- */
- function getPrefix() {
- return $this->_prefix;
- }
-
- /**
- * Creates a new PrefixLines filter using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new PrefixLines($reader);
- $newFilter->setPrefix($this->getPrefix());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Initializes the prefix if it is available from the parameters.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0, $_i=count($params) ; $i < $_i ; $i++) {
- if ( self::PREFIX_KEY == $params[$i]->getName() ) {
- $this->_prefix = (string) $params[$i]->getValue();
- break;
- }
- }
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/ReplaceRegexp.php b/buildscripts/phing/classes/phing/filters/ReplaceRegexp.php
deleted file mode 100755
index 70e8940f..00000000
--- a/buildscripts/phing/classes/phing/filters/ReplaceRegexp.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
-/*
- * $Id: 3ea7f569d0f0b1c4d0f057c9f7f8969cb829f2cb $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-require_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-include_once 'phing/types/RegularExpression.php';
-
-/**
- * Performs a regexp find/replace on stream.
- * <p>
- * Example:<br>
- * <pre>
- * <replaceregexp>
- * <regexp pattern="\r\n" replace="\n"/>
- * <regexp pattern="(\w+)\.xml" replace="\1.php" ignoreCase="true"/>
- * </replaceregexp>
- * </pre>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.filters
- */
-class ReplaceRegexp extends BaseFilterReader implements ChainableReader {
-
- /**
- * @var array RegularExpression[]
- */
- private $regexps = array();
-
- /**
- * Creator method handles nested <regexp> tags.
- * @return RegularExpression
- */
- function createRegexp() {
- $num = array_push($this->regexps, new RegularExpression());
- return $this->regexps[$num-1];
- }
-
- /**
- * Sets the current regexps.
- * (Used when, e.g., cloning/chaining the method.)
- * @param array RegularExpression[]
- */
- function setRegexps($regexps) {
- $this->regexps = $regexps;
- }
-
- /**
- * Gets the current regexps.
- * (Used when, e.g., cloning/chaining the method.)
- * @return array RegularExpression[]
- */
- function getRegexps() {
- return $this->regexps;
- }
-
- /**
- * Returns the filtered stream.
- * The original stream is first read in fully, and the regex replace is performed.
- *
- * @param int $len Required $len for Reader compliance.
- *
- * @return mixed The filtered stream, or -1 if the end of the resulting stream has been reached.
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- // perform regex replace here ...
- foreach($this->regexps as $exptype) {
- $regexp = $exptype->getRegexp($this->project);
- try {
- $buffer = $regexp->replace($buffer);
- $this->log("Performing regexp replace: /".$regexp->getPattern()."/".$regexp->getReplace()."/g".$regexp->getModifiers(), Project::MSG_VERBOSE);
- } catch (Exception $e) {
- // perhaps mismatch in params (e.g. no replace or pattern specified)
- $this->log("Error performing regexp replace: " . $e->getMessage(), Project::MSG_WARN);
- }
- }
-
- return $buffer;
- }
-
- /**
- * Creates a new ReplaceRegExp filter using the passed in
- * Reader for instantiation.
- *
- * @param Reader $reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return ReplaceRegExp A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new ReplaceRegExp($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setRegexps($this->getRegexps());
- return $newFilter;
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/ReplaceTokens.php b/buildscripts/phing/classes/phing/filters/ReplaceTokens.php
deleted file mode 100755
index a5cd7521..00000000
--- a/buildscripts/phing/classes/phing/filters/ReplaceTokens.php
+++ /dev/null
@@ -1,435 +0,0 @@
-<?php
-
-/*
- * $Id: 6c5d97f2254de3c08ac34baaabf6119c54a49a7d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/types/TokenSource.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Replaces tokens in the original input with user-supplied values.
- *
- * Example:
- *
- * <pre><replacetokens begintoken="#" endtoken="#">;
- * <token key="DATE" value="${TODAY}"/>
- * </replacetokens></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.ReplaceTokens">
- * <param type="tokenchar" name="begintoken" value="#"/>
- * <param type="tokenchar" name="endtoken" value="#"/>
- * <param type="token" name="DATE" value="${TODAY}"/>
- * </filterreader></pre>
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @author hans lellelid, hans@velum.net
- * @version $Id: 6c5d97f2254de3c08ac34baaabf6119c54a49a7d $
- * @access public
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class ReplaceTokens extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Default "begin token" character.
- * @var string
- */
- const DEFAULT_BEGIN_TOKEN = "@";
-
- /**
- * Default "end token" character.
- * @var string
- */
- const DEFAULT_END_TOKEN = "@";
-
- /**
- * [Deprecated] Data that must be read from, if not null.
- * @var string
- */
- private $_queuedData = null;
-
- /**
- * Array to hold the replacee-replacer pairs (String to String).
- * @var array
- */
- private $_tokens = array();
-
- /**
- * Array to hold the token sources that make tokens from
- * different sources available
- * @var array
- */
- private $_tokensources = array();
-
- /**
- * Array holding all tokens given directly to the Filter and
- * those passed via a TokenSource.
- * @var array
- */
- private $_alltokens = null;
-
- /**
- * Character marking the beginning of a token.
- * @var string
- */
- private $_beginToken = "@"; // self::DEFAULT_BEGIN_TOKEN;
-
- /**
- * Character marking the end of a token.
- * @var string
- */
- private $_endToken = "@"; //self::DEFAULT_END_TOKEN;
-
- /**
- * Performs lookup on key and returns appropriate replacement string.
- * @param array $matches Array of 1 el containing key to search for.
- * @return string Text with which to replace key or value of key if none is found.
- * @access private
- */
- private function replaceTokenCallback($matches) {
-
- $key = $matches[1];
-
- /* Get tokens from tokensource and merge them with the
- * tokens given directly via build file. This should be
- * done a bit more elegantly
- */
- if ($this->_alltokens === null) {
- $this->_alltokens = array();
-
- $count = count($this->_tokensources);
- for ($i = 0; $i < $count; $i++) {
- $source = $this->_tokensources[$i];
- $this->_alltokens = array_merge($this->_alltokens, $source->getTokens());
- }
-
-
- $this->_alltokens = array_merge($this->_tokens, $this->_alltokens);
- }
-
- $tokens = $this->_alltokens;
-
- $replaceWith = null;
- $count = count($tokens);
-
- for ($i = 0; $i < $count; $i++) {
- if ($tokens[$i]->getKey() === $key) {
- $replaceWith = $tokens[$i]->getValue();
- }
- }
-
- if ($replaceWith === null) {
- $replaceWith = $this->_beginToken . $key . $this->_endToken;
- $this->log("No token defined for key \"".$this->_beginToken . $key . $this->_endToken."\"");
- } else {
- $this->log("Replaced \"".$this->_beginToken . $key . $this->_endToken ."\" with \"".$replaceWith."\"", Project::MSG_VERBOSE);
- }
-
- return $replaceWith;
- }
-
- /**
- * Returns stream with tokens having been replaced with appropriate values.
- * If a replacement value is not found for a token, the token is left in the stream.
- *
- * @return mixed filtered stream, -1 on EOF.
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // read from next filter up the chain
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- // filter buffer
- $buffer = preg_replace_callback(
- "/".preg_quote($this->_beginToken, '/')."([\w\.\-:]+?)".preg_quote($this->_endToken, '/')."/",
- array($this, 'replaceTokenCallback'), $buffer);
-
- return $buffer;
- }
-
- /**
- * Sets the "begin token" character.
- *
- * @param string $beginToken the character used to denote the beginning of a token.
- */
- function setBeginToken($beginToken) {
- $this->_beginToken = (string) $beginToken;
- }
-
- /**
- * Returns the "begin token" character.
- *
- * @return string The character used to denote the beginning of a token.
- */
- function getBeginToken() {
- return $this->_beginToken;
- }
-
- /**
- * Sets the "end token" character.
- *
- * @param string $endToken the character used to denote the end of a token
- */
- function setEndToken($endToken) {
- $this->_endToken = (string) $endToken;
- }
-
- /**
- * Returns the "end token" character.
- *
- * @return the character used to denote the beginning of a token
- */
- function getEndToken() {
- return $this->_endToken;
- }
-
- /**
- * Adds a token element to the map of tokens to replace.
- *
- * @return object The token added to the map of replacements.
- * Must not be <code>null</code>.
- */
- function createToken() {
- $num = array_push($this->_tokens, new Token());
- return $this->_tokens[$num-1];
- }
-
- /**
- * Adds a token source to the sources of this filter.
- *
- * @return object A Reference to the source just added.
- */
- function createTokensource() {
- $num = array_push($this->_tokensources, new TokenSource());
- return $this->_tokensources[$num-1];
- }
-
- /**
- * Sets the map of tokens to replace.
- * ; used by ReplaceTokens::chain()
- *
- * @param array A map (String->String) of token keys to replacement
- * values. Must not be <code>null</code>.
- */
- function setTokens($tokens) {
- // type check, error must never occur, bad code of it does
- if ( !is_array($tokens) ) {
- throw new Exception("Excpected 'array', got something else");
- }
-
- $this->_tokens = $tokens;
- }
-
- /**
- * Returns the map of tokens which will be replaced.
- * ; used by ReplaceTokens::chain()
- *
- * @return array A map (String->String) of token keys to replacement values.
- */
- function getTokens() {
- return $this->_tokens;
- }
-
- /**
- * Sets the tokensources to use; used by ReplaceTokens::chain()
- *
- * @param array An array of token sources.
- */
- function setTokensources($sources) {
- // type check
- if ( !is_array($sources)) {
- throw new Exception("Exspected 'array', got something else");
- }
- $this->_tokensources = $sources;
- }
-
- /**
- * Returns the token sources used by this filter; used by ReplaceTokens::chain()
- *
- * @return array
- */
- function getTokensources() {
- return $this->_tokensources;
- }
-
- /**
- * Creates a new ReplaceTokens using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new ReplaceTokens($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setBeginToken($this->getBeginToken());
- $newFilter->setEndToken($this->getEndToken());
- $newFilter->setTokens($this->getTokens());
- $newFilter->setTokensources($this->getTokensources());
- $newFilter->setInitialized(true);
- return $newFilter;
- }
-
- /**
- * Initializes tokens and loads the replacee-replacer hashtable.
- * This method is only called when this filter is used through
- * a <filterreader> tag in build file.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $i<count($params) ; $i++) {
- if ( $params[$i] !== null ) {
- $type = $params[$i]->getType();
- if ( $type === "tokenchar" ) {
- $name = $params[$i]->getName();
- if ( $name === "begintoken" ) {
- $this->_beginToken = substr($params[$i]->getValue(), 0, 1);
- } else if ( $name === "endtoken" ) {
- $this->_endToken = substr($params[$i]->getValue(), 0, 1);
- }
- } else if ( $type === "token" ) {
- $name = $params[$i]->getName();
- $value = $params[$i]->getValue();
-
- $tok = new Token();
- $tok->setKey($name);
- $tok->setValue($value);
-
- array_push($this->_tokens, $tok);
- } else if ( $type === "tokensource" ) {
- // Store data from nested tags in local array
- $arr = array(); $subparams = $params[$i]->getParams();
- $count = count($subparams);
- for ($i = 0; $i < $count; $i++) {
- $arr[$subparams[$i]->getName()] = $subparams[$i]->getValue();
- }
-
- // Create TokenSource
- $tokensource = new TokenSource();
- if (isset($arr["classname"]))
- $tokensource->setClassname($arr["classname"]);
-
- // Copy other parameters 1:1 to freshly created TokenSource
- foreach ($arr as $key => $value) {
- if (strtolower($key) === "classname")
- continue;
- $param = $tokensource->createParam();
- $param->setName($key);
- $param->setValue($value);
- }
-
- $this->_tokensources[] = $tokensource;
- }
- }
- }
- }
- }
-}
-
-/**
- * Holds a token.
- *
- * @package phing.filters
- */
-class Token {
-
- /**
- * Token key.
- * @var string
- */
- private $_key;
-
- /**
- * Token value.
- * @var string
- */
- private $_value;
-
- /**
- * Sets the token key.
- *
- * @param string $key The key for this token. Must not be <code>null</code>.
- */
- function setKey($key) {
- $this->_key = (string) $key;
- }
-
- /**
- * Sets the token value.
- *
- * @param string $value The value for this token. Must not be <code>null</code>.
- */
- function setValue($value) {
- // special case for boolean values
- if (is_bool($value)) {
- if ($value) {
- $this->_value = "true";
- } else {
- $this->_value = "false";
- }
- } else {
- $this->_value = (string) $value;
- }
- }
-
- /**
- * Returns the key for this token.
- *
- * @return string The key for this token.
- */
- function getKey() {
- return $this->_key;
- }
-
- /**
- * Returns the value for this token.
- *
- * @return string The value for this token.
- */
- function getValue() {
- return $this->_value;
- }
-
- /**
- * Sets the token value from text.
- *
- * @param string $value The value for this token. Must not be <code>null</code>.
- */
- function addText($value) {
- $this->setValue($value);
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/ReplaceTokensWithFile.php b/buildscripts/phing/classes/phing/filters/ReplaceTokensWithFile.php
deleted file mode 100644
index 580b8d84..00000000
--- a/buildscripts/phing/classes/phing/filters/ReplaceTokensWithFile.php
+++ /dev/null
@@ -1,361 +0,0 @@
-<?php
-
-/*
- * $Id: 164a2d9eeba3673653086b32e9fa2045168c992c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Replaces tokens in the original input with the contents of a file.
- * The file to be used is controlled by the name of the token which
- * corresponds to the basename of the file to be used together with
- * the optional pre and postfix strings that is possible to set.
- *
- * By default all HTML entities in the file is replaced by the
- * corresponding HTML entities. This behaviour can be controlled by
- * the "translatehtml" parameter.
- *
- * Supported parameters are:
- * <pre>
- * prefix string Text to be prefixed to token before using as filename
- * postfix string Text to be prefixed to token before using as filename
- * dir string The directory where the files should be read from
- * translatehtml bool If we should translate all HTML entities in the file.
- * </pre>
- * Example:
- *
- * <pre><filterreader classname="phing.filters.ReplaceTokensWithFile">
- * <param name="dir" value="examples/" />
- * <param name="postfix" value=".php" />
- * </filterreader></pre>
- *
- * @author johan persson, johanp@aditus.nu
- * @version $Id: 164a2d9eeba3673653086b32e9fa2045168c992c $
- * @access public
- * @see ReplaceTokensWithFile
- * @package phing.filters
- */
-class ReplaceTokensWithFile extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Default "begin token" character.
- * @var string
- */
- const DEFAULT_BEGIN_TOKEN = "#@#";
-
- /**
- * Default "end token" character.
- * @var string
- */
- const DEFAULT_END_TOKEN = "#@#";
-
- /**
- * Array to hold the token sources that make tokens from
- * different sources available
- * @var array
- */
- private $_tokensources = array();
-
- /**
- * Character marking the beginning of a token.
- * @var string
- */
- private $_beginToken = ReplaceTokensWithFile::DEFAULT_BEGIN_TOKEN;
-
- /**
- * Character marking the end of a token.
- * @var string
- */
- private $_endToken = ReplaceTokensWithFile::DEFAULT_END_TOKEN;
-
- /**
- * File prefix to be inserted in front of the token to create the
- * file name to be used.
- * @var string
- */
- private $_prefix = '';
-
- /**
- * File postfix to be inserted in front of the token to create the
- * file name to be used.
- * @var string
- */
- private $_postfix = '';
-
- /**
- * Directory where to look for the files. The default is to look in the
- * current file.
- *
- * @var string
- */
- private $_dir = './';
-
- /**
- * Translate all HTML entities in the file to the corresponding HTML
- * entities before it is used as replacements. For example all '<'
- * will be translated to &lt; before the content is inserted.
- *
- * @var boolean
- */
- private $_translatehtml = true;
-
-
- /**
- * Sets the drectory where to look for the files to use for token replacement
- *
- * @param string $dir
- */
- function setTranslateHTML($translate) {
- $this->_translatehtml = (bool) $translate;
- }
-
- /**
- * Returns the drectory where to look for the files to use for token replacement
- */
- function getTranslateHTML() {
- return $this->_translatehtml;
- }
-
- /**
- * Sets the drectory where to look for the files to use for token replacement
- *
- * @param string $dir
- */
- function setDir($dir) {
- $this->_dir = (string) $dir;
- }
-
- /**
- * Returns the drectory where to look for the files to use for token replacement
- */
- function getDir() {
- return $this->_dir;
- }
-
- /**
- * Sets the prefix that is prepended to the token in order to create the file
- * name. For example if the token is 01 and the prefix is "example" then
- * the filename to look for will be "example01"
- *
- * @param string $prefix
- */
- function setPrefix($prefix) {
- $this->_prefix = (string) $prefix;
- }
-
- /*
- * Returns the prefix that is prepended to the token in order to create the file
- * name. For example if the token is 01 and the prefix is "example" then
- * the filename to look for will be "example01"
- */
- function getPrefix() {
- return $this->_prefix;
- }
-
- /**
- * Sets the postfix that is added to the token in order to create the file
- * name. For example if the token is 01 and the postfix is ".php" then
- * the filename to look for will be "01.php"
- *
- * @param string $postfix
- */
- function setPostfix($postfix) {
- $this->_postfix = (string) $postfix;
- }
-
- /**
- * Returns the postfix that is added to the token in order to create the file
- * name. For example if the token is 01 and the postfix is ".php" then
- * the filename to look for will be "01.php"
- */
- function getPostfix() {
- return $this->_postfix;
- }
-
- /**
- * Sets the "begin token" character.
- *
- * @param string $beginToken the character used to denote the beginning of a token.
- */
- function setBeginToken($beginToken) {
- $this->_beginToken = (string) $beginToken;
- }
-
- /**
- * Returns the "begin token" character.
- *
- * @return string The character used to denote the beginning of a token.
- */
- function getBeginToken() {
- return $this->_beginToken;
- }
-
- /**
- * Sets the "end token" character.
- *
- * @param string $endToken the character used to denote the end of a token
- */
- function setEndToken($endToken) {
- $this->_endToken = (string) $endToken;
- }
-
- /**
- * Returns the "end token" character.
- *
- * @return the character used to denote the beginning of a token
- */
- function getEndToken() {
- return $this->_endToken;
- }
-
- /**
- * Replace the token found with the appropriate file contents
- * @param array $matches Array of 1 el containing key to search for.
- * @return string Text with which to replace key or value of key if none is found.
- * @access private
- */
- private function replaceTokenCallback($matches) {
-
- $filetoken = $matches[1];
-
- // We look in all specified directories for the named file and use
- // the first directory which has the file.
- $dirs = explode(';',$this->_dir);
-
- $ndirs = count($dirs);
- $n = 0;
- $file = $dirs[$n] . $this->_prefix . $filetoken . $this->_postfix;
-
- while ( $n < $ndirs && ! is_readable($file) ) {
- ++$n;
- }
-
- if( ! is_readable($file) || $n >= $ndirs ) {
- $this->log("Can not read or find file \"$file\". Searched in directories: {$this->_dir}", Project::MSG_WARN);
- //return $this->_beginToken . $filetoken . $this->_endToken;
- return "[Phing::Filters::ReplaceTokensWithFile: Can not find file " . '"' . $filetoken . $this->_postfix . '"' . "]";
- }
-
- $buffer = file_get_contents($file);
- if( $this->_translatehtml ) {
- $buffer = htmlentities($buffer);
- }
-
- if ($buffer === null) {
- $buffer = $this->_beginToken . $filetoken . $this->_endToken;
- $this->log("No corresponding file found for key \"$buffer\"", Project::MSG_WARN);
- } else {
- $this->log("Replaced \"".$this->_beginToken . $filetoken . $this->_endToken."\" with content from file \"$file\"");
- }
-
- return $buffer;
- }
-
- /**
- * Returns stream with tokens having been replaced with appropriate values.
- * If a replacement value is not found for a token, the token is left in the stream.
- *
- * @return mixed filtered stream, -1 on EOF.
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // read from next filter up the chain
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- // filter buffer
- $buffer = preg_replace_callback(
- "/".preg_quote($this->_beginToken)."([\w\.\-:\/]+?)".preg_quote($this->_endToken)."/",
- array($this, 'replaceTokenCallback'), $buffer);
-
- return $buffer;
- }
-
- /**
- * Creates a new ReplaceTokensWithFile using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new ReplaceTokensWithFile($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setTranslateHTML($this->getTranslateHTML());
- $newFilter->setDir($this->getDir());
- $newFilter->setPrefix($this->getPrefix());
- $newFilter->setPostfix($this->getPostfix());
- $newFilter->setBeginToken($this->getBeginToken());
- $newFilter->setEndToken($this->getEndToken());
- $newFilter->setInitialized(true);
- return $newFilter;
- }
-
- /**
- * Initializes parameters
- * This method is only called when this filter is used through
- * a <filterreader> tag in build file.
- */
- private function _initialize() {
- $params = $this->getParameters();
- $n = count($params);
-
- if ( $params !== null ) {
- for($i = 0 ; $i < $n ; $i++) {
- if ( $params[$i] !== null ) {
- $name = $params[$i]->getName();
- switch( $name ) {
- case 'begintoken' :
- $this->_beginToken = $params[$i]->getValue();
- break;
- case 'endtoken' :
- $this->_endToken = $params[$i]->getValue();
- break;
- case 'dir':
- $this->_dir = $params[$i]->getValue();
- break;
- case 'prefix':
- $this->_prefix = $params[$i]->getValue();
- break;
- case 'postfix':
- $this->_postfix = $params[$i]->getValue();
- break;
- case 'translatehtml':
- $this->_translatehtml = $params[$i]->getValue();
- break;
- }
- }
- }
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/StripLineBreaks.php b/buildscripts/phing/classes/phing/filters/StripLineBreaks.php
deleted file mode 100755
index 08d1aa6b..00000000
--- a/buildscripts/phing/classes/phing/filters/StripLineBreaks.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-
-/*
- * $Id: 84767114c6fcf8abe5fcc0dce48513faf18d6306 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Filter to flatten the stream to a single line.
- *
- * Example:
- *
- * <pre><striplinebreaks/></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.StripLineBreaks"/></pre>
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @author hans lellelid, hans@velum.net
- * @version $Id$
- * @access public
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class StripLineBreaks extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Default line-breaking characters.
- * @var string
- */
- const DEFAULT_LINE_BREAKS = "\r\n";
-
- /**
- * Parameter name for the line-breaking characters parameter.
- * @var string
- */
- const LINES_BREAKS_KEY = "linebreaks";
-
- /**
- * The characters that are recognized as line breaks.
- * @var string
- */
- private $_lineBreaks = "\r\n"; // self::DEFAULT_LINE_BREAKS;
-
- /**
- * Returns the filtered stream, only including
- * characters not in the set of line-breaking characters.
- *
- * @return mixed the resulting stream, or -1
- * if the end of the resulting stream has been reached.
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- $buffer = preg_replace("/[".$this->_lineBreaks."]/", '', $buffer);
-
- return $buffer;
- }
-
- /**
- * Sets the line-breaking characters.
- *
- * @param string $lineBreaks A String containing all the characters to be
- * considered as line-breaking.
- */
- function setLineBreaks($lineBreaks) {
- $this->_lineBreaks = (string) $lineBreaks;
- }
-
- /**
- * Gets the line-breaking characters.
- *
- * @return string A String containing all the characters that are considered as line-breaking.
- */
- function getLineBreaks() {
- return $this->_lineBreaks;
- }
-
- /**
- * Creates a new StripLineBreaks using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new StripLineBreaks($reader);
- $newFilter->setLineBreaks($this->getLineBreaks());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to set the line-breaking characters.
- */
- private function _initialize() {
- $userDefinedLineBreaks = null;
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $i<count($params) ; $i++) {
- if ( self::LINE_BREAKS_KEY === $params[$i]->getName() ) {
- $userDefinedLineBreaks = $params[$i]->getValue();
- break;
- }
- }
- }
-
- if ( $userDefinedLineBreaks !== null ) {
- $this->_lineBreaks = $userDefinedLineBreaks;
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/StripLineComments.php b/buildscripts/phing/classes/phing/filters/StripLineComments.php
deleted file mode 100755
index 2a19ca25..00000000
--- a/buildscripts/phing/classes/phing/filters/StripLineComments.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-
-/*
- * $Id: b0b2b1dc67fff8bd5285e43e9d11b15f4ef44ae7 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * This filter strips line comments.
- *
- * Example:
- *
- * <pre><striplinecomments>
- * <comment value="#"/>
- * <comment value="--"/>
- * <comment value="REM "/>
- * <comment value="rem "/>
- * <comment value="//"/>
- * </striplinecomments></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.StripLineComments">
- * <param type="comment" value="#"/>
- * <param type="comment" value="--"/>
- * <param type="comment" value="REM "/>
- * <param type="comment" value="rem "/>
- * <param type="comment" value="//"/>
- * </filterreader></pre>
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @author hans lellelid, hans@velum.net
- * @version $Id$
- * @access public
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class StripLineComments extends BaseParamFilterReader implements ChainableReader {
-
- /** Parameter name for the comment prefix. */
- const COMMENTS_KEY = "comment";
-
- /** Array that holds the comment prefixes. */
- private $_comments = array();
-
- /**
- * Returns stream only including
- * lines from the original stream which don't start with any of the
- * specified comment prefixes.
- *
- * @return mixed the resulting stream, or -1
- * if the end of the resulting stream has been reached.
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if ($buffer === -1) {
- return -1;
- }
-
- $lines = explode("\n", $buffer);
- $filtered = array();
-
- $commentsSize = count($this->_comments);
-
- foreach($lines as $line) {
- for($i = 0; $i < $commentsSize; $i++) {
- $comment = $this->_comments[$i]->getValue();
- if ( StringHelper::startsWith($comment, ltrim($line)) ) {
- $line = null;
- break;
- }
- }
- if ($line !== null) {
- $filtered[] = $line;
- }
- }
-
- $filtered_buffer = implode("\n", $filtered);
- return $filtered_buffer;
- }
-
- /*
- * Adds a <code>comment</code> element to the list of prefixes.
- *
- * @return comment The <code>comment</code> element added to the
- * list of comment prefixes to strip.
- */
- function createComment() {
- $num = array_push($this->_comments, new Comment());
- return $this->_comments[$num-1];
- }
-
- /*
- * Sets the list of comment prefixes to strip.
- *
- * @param comments A list of strings, each of which is a prefix
- * for a comment line. Must not be <code>null</code>.
- */
- function setComments($lineBreaks) {
- if (!is_array($lineBreaks)) {
- throw new Exception("Excpected 'array', got something else");
- }
- $this->_comments = $lineBreaks;
- }
-
- /*
- * Returns the list of comment prefixes to strip.
- *
- * @return array The list of comment prefixes to strip.
- */
- function getComments() {
- return $this->_comments;
- }
-
- /*
- * Creates a new StripLineComments using the passed in
- * Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new StripLineComments($reader);
- $newFilter->setComments($this->getComments());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /*
- * Parses the parameters to set the comment prefixes.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $i<count($params) ; $i++) {
- if ( self::COMMENTS_KEY === $params[$i]->getType() ) {
- $comment = new Comment();
- $comment->setValue($params[$i]->getValue());
- array_push($this->_comments, $comment);
- }
- }
- }
- }
-}
-
-/**
- * The class that holds a comment representation.
- *
- * @package phing.filters
- */
-class Comment {
-
- /** The prefix for a line comment. */
- private $_value;
-
- /*
- * Sets the prefix for this type of line comment.
- *
- * @param string $value The prefix for a line comment of this type.
- * Must not be <code>null</code>.
- */
- function setValue($value) {
- $this->_value = (string) $value;
- }
-
- /*
- * Returns the prefix for this type of line comment.
- *
- * @return string The prefix for this type of line comment.
- */
- function getValue() {
- return $this->_value;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/filters/StripPhpComments.php b/buildscripts/phing/classes/phing/filters/StripPhpComments.php
deleted file mode 100755
index 0abb8a67..00000000
--- a/buildscripts/phing/classes/phing/filters/StripPhpComments.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-
-/*
- * $Id: 6c68ae0ad1aa7f2f7825087c1c54233bd2462124 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * This is a Php comment and string stripper reader that filters
- * those lexical tokens out for purposes of simple Php parsing.
- * (if you have more complex Php parsing needs, use a real lexer).
- * Since this class heavily relies on the single char read function,
- * you are reccomended to make it work on top of a buffered reader.
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @author hans lellelid, hans@velum.net
- * @version $Id$
- * @access public
- * @see FilterReader
- * @package phing.filters
- */
-class StripPhpComments extends BaseFilterReader implements ChainableReader {
- /**
- * The read-ahead character, used for effectively pushing a single
- * character back. -1 indicates that no character is in the buffer.
- */
- private $_readAheadCh = -1;
-
- /**
- * Whether or not the parser is currently in the middle of a string
- * literal.
- * @var boolean
- */
- private $_inString = false;
-
- /**
- * Returns the stream without Php comments.
- *
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- // This regex replace /* */ and // style comments
- $buffer = preg_replace('/\/\*[^*]*\*+([^\/*][^*]*\*+)*\/|\/\/[^\n]*|("(\\\\.|[^"\\\\])*"|\'(\\\\.|[^\'\\\\])*\'|.[^\/"\'\\\\]*)/s', "$2", $buffer);
-
- // The regex above is not identical to, but is based on the expression below:
- //
- // created by Jeffrey Friedl
- // and later modified by Fred Curtis.
- // s{
- // /\* ## Start of /* ... */ comment
- // [^*]*\*+ ## Non-* followed by 1-or-more *'s
- // (
- // [^/*][^*]*\*+
- // )* ## 0-or-more things which don't start with /
- // ## but do end with '*'
- // / ## End of /* ... */ comment
- //
- // | ## OR various things which aren't comments:
- //
- // (
- // " ## Start of " ... " string
- // (
- // \\. ## Escaped char
- // | ## OR
- // [^"\\] ## Non "\
- // )*
- // " ## End of " ... " string
- //
- // | ## OR
- //
- // ' ## Start of ' ... ' string
- // (
- // \\. ## Escaped char
- // | ## OR
- // [^'\\] ## Non '\
- // )*
- // ' ## End of ' ... ' string
- //
- // | ## OR
- //
- // . ## Anything other char
- // [^/"'\\]* ## Chars which doesn't start a comment, string or escape
- // )
- // }{$2}gxs;
-
- return $buffer;
- }
-
-
- /*
- * Returns the next character in the filtered stream, not including
- * Php comments.
- *
- * @return the next character in the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- * @deprecated
- */
- function readChar() {
- $ch = -1;
-
- if ( $this->_readAheadCh !== -1 ) {
- $ch = $this->_readAheadCh;
- $this->_readAheadCh = -1;
- } else {
- $ch = $this->in->readChar();
- if ( $ch === "\"" ) {
- $this->_inString = !$this->_inString;
- } else {
- if ( !$this->_inString ) {
- if ( $ch === "/" ) {
- $ch = $this->in->readChar();
- if ( $ch === "/" ) {
- while ( $ch !== "\n" && $ch !== -1 ) {
- $ch = $this->in->readChar();
- }
- } else if ( $ch === "*" ) {
- while ( $ch !== -1 ) {
- $ch = $this->in->readChar();
- while ( $ch === "*" && $ch !== -1 ) {
- $ch = $this->in->readChar();
- }
-
- if ( $ch === "/" ) {
- $ch = $this->readChar();
- echo "$ch\n";
- break;
- }
- }
- } else {
- $this->_readAheadCh = $ch;
- $ch = "/";
- }
- }
- }
- }
- }
-
- return $ch;
- }
-
- /**
- * Creates a new StripPhpComments using the passed in
- * Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new StripPhpComments($reader);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/filters/StripWhitespace.php b/buildscripts/phing/classes/phing/filters/StripWhitespace.php
deleted file mode 100755
index d7b6113f..00000000
--- a/buildscripts/phing/classes/phing/filters/StripWhitespace.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/*
- * $Id $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Strips whitespace from [php] files using PHP stripwhitespace() method.
- *
- * @author Hans Lellelid, hans@velum.net
- * @version $Id$
- * @see FilterReader
- * @package phing.filters
- * @todo -c use new PHP functions to perform this instead of regex.
- */
-class StripWhitespace extends BaseFilterReader implements ChainableReader {
-
- private $processed = false;
-
- /**
- * Returns the stream without Php comments and whitespace.
- *
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ($this->processed === true) {
- return -1; // EOF
- }
-
- // Read XML
- $php = null;
- while ( ($buffer = $this->in->read($len)) !== -1 ) {
- $php .= $buffer;
- }
-
- if ($php === null ) { // EOF?
- return -1;
- }
-
- if(empty($php)) {
- $this->log("PHP file is empty!", Project::MSG_WARN);
- return ''; // return empty string, don't attempt to strip whitespace
- }
-
- // write buffer to a temporary file, since php_strip_whitespace() needs a filename
- $file = new PhingFile(tempnam(PhingFile::getTempDir(), 'stripwhitespace'));
- file_put_contents($file->getAbsolutePath(), $php);
- $output = php_strip_whitespace($file->getAbsolutePath());
- unlink($file->getAbsolutePath());
-
- $this->processed = true;
-
- return $output;
- }
-
- /**
- * Creates a new StripWhitespace using the passed in
- * Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- public function chain(Reader $reader) {
- $newFilter = new StripWhitespace($reader);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-}
diff --git a/buildscripts/phing/classes/phing/filters/TabToSpaces.php b/buildscripts/phing/classes/phing/filters/TabToSpaces.php
deleted file mode 100755
index 80d3c215..00000000
--- a/buildscripts/phing/classes/phing/filters/TabToSpaces.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-
-/*
- * $Id: 71dc074faa0ed97b47c49fec5449233ea485120c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-require_once 'phing/filters/BaseParamFilterReader.php';
-require_once 'phing/filters/ChainableReader.php';
-
-/**
- * Converts tabs to spaces.
- *
- * Example:
- *
- * <pre><tabtospaces tablength="8"></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.TabsToSpaces">
- * <param name="tablength" value="8">
- * </filterreader></pre>
- *
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class TabToSpaces extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * The default tab length.
- * @var int
- */
- const DEFAULT_TAB_LENGTH = 8;
-
- /**
- * Parameter name for the length of a tab.
- * @var string
- */
- const TAB_LENGTH_KEY = "tablength";
-
- /**
- * Tab length in this filter.
- * @var int
- */
- private $tabLength = 8; //self::DEFAULT_TAB_LENGTH;
-
- /**
- * Returns stream after converting tabs to the specified number of spaces.
- *
- * @return the resulting stream, or -1
- * if the end of the resulting stream has been reached
- *
- * @exception IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
-
- if($buffer === -1) {
- return -1;
- }
-
- $buffer = str_replace("\t", str_repeat(' ', $this->tabLength), $buffer);
-
- return $buffer;
- }
-
- /**
- * Sets the tab length.
- *
- * @param int $tabLength The number of spaces to be used when converting a tab.
- */
- function setTablength($tabLength) {
- $this->tabLength = (int) $tabLength;
- }
-
- /**
- * Returns the tab length.
- *
- * @return int The number of spaces used when converting a tab
- */
- function getTablength() {
- return $this->tabLength;
- }
-
- /**
- * Creates a new TabsToSpaces using the passed in
- * Reader for instantiation.
- *
- * @param Reader $reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return Reader A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new TabToSpaces($reader);
- $newFilter->setTablength($this->getTablength());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to set the tab length.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0 ; $i<count($params) ; $i++) {
- if (self::TAB_LENGTH_KEY === $params[$i]->getName()) {
- $this->tabLength = $params[$i]->getValue();
- break;
- }
- }
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/TailFilter.php b/buildscripts/phing/classes/phing/filters/TailFilter.php
deleted file mode 100755
index 95a9c6f5..00000000
--- a/buildscripts/phing/classes/phing/filters/TailFilter.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * $Id: 3c108d45a4b3be6f6b9a395477e7641d8e17c44b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-require_once 'phing/filters/BaseParamFilterReader.php';
-
-/**
- * Reads the last <code>n</code> lines of a stream. (Default is last10 lines.)
- *
- * Example:
- *
- * <pre><tailfilter lines="3" /></pre>
- *
- * Or:
- *
- * <pre><filterreader classname="phing.filters.TailFilter">
- * <param name="lines" value="3">
- * </filterreader></pre>
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @author hans lellelid, hans@velum.net
- * @copyright � 2003 seasonfive. All rights reserved
- * @version $Id$
- * @see BaseParamFilterReader
- * @package phing.filters
- */
-class TailFilter extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Parameter name for the number of lines to be returned.
- * @var string
- */
- const LINES_KEY = "lines";
-
-
- /**
- * Number of lines to be returned in the filtered stream.
- * @var integer
- */
- private $_lines = 10;
-
- /**
- * Array to hold lines.
- * @var array
- */
- private $_lineBuffer = array();
-
- /**
- * Returns the last n lines of a file.
- * @param int $len Num chars to read.
- * @return mixed The filtered buffer or -1 if EOF.
- */
- function read($len = null) {
-
- while ( ($buffer = $this->in->read($len)) !== -1 ) {
- // Remove the last "\n" from buffer for
- // prevent explode to add an empty cell at
- // the end of array
- $buffer= trim($buffer, "\n");
-
- $lines = explode("\n", $buffer);
-
- if ( count($lines) >= $this->_lines ) {
- // Buffer have more (or same) number of lines than needed.
- // Fill lineBuffer with the last "$this->_lines" lasts ones.
- $off = count($lines)-$this->_lines;
- $this->_lineBuffer = array_slice($lines, $off);
- } else {
- // Some new lines ...
- // Prepare space for insert these new ones
- $this->_lineBuffer = array_slice($this->_lineBuffer, count($lines)-1);
- $this->_lineBuffer = array_merge($this->_lineBuffer, $lines);
- }
- }
-
- if ( empty($this->_lineBuffer) )
- $ret = -1;
- else {
- $ret = implode("\n", $this->_lineBuffer);
- $this->_lineBuffer = array();
- }
-
- return $ret;
- }
-
- /**
- * Sets the number of lines to be returned in the filtered stream.
- *
- * @param integer $lines the number of lines to be returned in the filtered stream.
- */
- function setLines($lines) {
- $this->_lines = (int) $lines;
- }
-
- /**
- * Returns the number of lines to be returned in the filtered stream.
- *
- * @return integer The number of lines to be returned in the filtered stream.
- */
- function getLines() {
- return $this->_lines;
- }
-
- /**
- * Creates a new TailFilter using the passed in
- * Reader for instantiation.
- *
- * @param object A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return object A new filter based on this configuration, but filtering
- * the specified reader.
- */
- function chain(Reader $reader) {
- $newFilter = new TailFilter($reader);
- $newFilter->setLines($this->getLines());
- $newFilter->setInitialized(true);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Scans the parameters list for the "lines" parameter and uses
- * it to set the number of lines to be returned in the filtered stream.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i=0, $_i=count($params); $i < $_i; $i++) {
- if ( self::LINES_KEY == $params[$i]->getName() ) {
- $this->_lines = (int) $params[$i]->getValue();
- break;
- }
- }
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/TidyFilter.php b/buildscripts/phing/classes/phing/filters/TidyFilter.php
deleted file mode 100755
index 22abcee5..00000000
--- a/buildscripts/phing/classes/phing/filters/TidyFilter.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-/*
- * $Id: a612fea7722441639c6dfdc69b43ad65ec02652f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * This filter uses the bundled-with-PHP Tidy extension to filter input.
- *
- * <p>
- * Example:<br/>
- * <pre>
- * <tidyfilter encoding="utf8">
- * <config name="indent" value="true"/>
- * <config name="output-xhtml" value="true"/>
- * </tidyfilter>
- * </pre>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.filters
- */
-class TidyFilter extends BaseParamFilterReader implements ChainableReader {
-
- /** @var string Encoding of resulting document. */
- private $encoding = 'utf8';
-
- /** @var array Parameter[] */
- private $configParameters = array();
-
- /**
- * Set the encoding for resulting (X)HTML document.
- * @param string $v
- */
- public function setEncoding($v) {
- $this->encoding = $v;
- }
-
- /**
- * Sets the config params.
- * @param array Parameter[]
- * @see chain()
- */
- public function setConfigParameters($params)
- {
- $this->configParameters = $params;
- }
-
- /**
- * Adds a <config> element (which is a Parameter).
- * @return Parameter
- */
- public function createConfig() {
- $num = array_push($this->configParameters, new Parameter());
- return $this->configParameters[$num-1];
- }
-
- /**
- * Converts the Parameter objects being used to store configuration into a simle assoc array.
- * @return array
- */
- private function getDistilledConfig() {
- $config = array();
- foreach($this->configParameters as $p) {
- $config[$p->getName()] = $p->getValue();
- }
- return $config;
- }
-
- /**
- * Reads input and returns Tidy-filtered output.
- *
- * @return the resulting stream, or -1 if the end of the resulting stream has been reached
- *
- * @throws IOException if the underlying stream throws an IOException
- * during reading
- */
- function read($len = null) {
-
- if (!class_exists('Tidy')) {
- throw new BuildException("You must enable the 'tidy' extension in your PHP configuration in order to use the Tidy filter.");
- }
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- $config = $this->getDistilledConfig();
-
- $tidy = new Tidy();
- $tidy->parseString($buffer, $config, $this->encoding);
- $tidy->cleanRepair();
-
- return tidy_get_output($tidy);
-
- }
-
-
- /**
- * Creates a new TidyFilter using the passed in Reader for instantiation.
- *
- * @param reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return a new filter based on this configuration, but filtering
- * the specified reader
- */
- public function chain(Reader $reader) {
- $newFilter = new TidyFilter($reader);
- $newFilter->setConfigParameters($this->configParameters);
- $newFilter->setEncoding($this->encoding);
- $newFilter->setProject($this->getProject());
- return $newFilter;
- }
-
- /**
- * Initializes any parameters (e.g. config options).
- * This method is only called when this filter is used through a <filterreader> tag in build file.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ($params) {
- foreach($params as $param) {
- if ($param->getType() == "config") {
- $this->configParameters[] = $param;
- } else {
-
- if ($param->getName() == "encoding") {
- $this->setEncoding($param->getValue());
- }
-
- }
-
- }
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/filters/TranslateGettext.php b/buildscripts/phing/classes/phing/filters/TranslateGettext.php
deleted file mode 100755
index b2a4264c..00000000
--- a/buildscripts/phing/classes/phing/filters/TranslateGettext.php
+++ /dev/null
@@ -1,285 +0,0 @@
-<?php
-
-/*
- * $Id: 7dc28b63ed7f57bcf86d92f2b669bd386c2076a6 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-require_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Replaces gettext("message id") and _("message id") with the translated string.
- *
- * Gettext is great for creating multi-lingual sites, but in some cases (e.g. for
- * performance reasons) you may wish to replace the gettext calls with the translations
- * of the strings; that's what this task is for. Note that this is similar to
- * ReplaceTokens, but both the find and the replace aspect is more complicated -- hence
- * this is a separate, stand-alone filter.
- *
- * <p>
- * Example:<br>
- * <pre>
- * <translategettext locale="en_US" domain="messages" dir="${webroot}/local"/>
- * </pre>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @access public
- * @see BaseFilterReader
- * @package phing.filters
- */
-class TranslateGettext extends BaseParamFilterReader implements ChainableReader {
-
- // constants for specifying keys to expect
- // when this is called using <filterreader ... />
- const DOMAIN_KEY = "domain";
- const DIR_KEY = "dir";
- const LOCALE_KEY = "locale";
-
- /** The domain to use */
- private $domain = 'messages';
-
- /** The dir containing LC_MESSAGES */
- private $dir;
-
- /** The locale to use */
- private $locale;
-
- /** The system locale before it was changed for this filter. */
- private $storedLocale;
-
- /**
- * Set the text domain to use.
- * The text domain must correspond to the name of the compiled .mo files.
- * E.g. "messages" ==> $dir/LC_MESSAGES/messages.mo
- * "mydomain" ==> $dir/LC_MESSAGES/mydomain.mo
- * @param string $domain
- */
- function setDomain($domain) {
- $this->domain = $domain;
- }
-
- /**
- * Get the current domain.
- * @return string
- */
- function getDomain() {
- return $this->domain;
- }
-
- /**
- * Sets the root locale directory.
- * @param PhingFile $dir
- */
- function setDir(PhingFile $dir) {
- $this->dir = $dir;
- }
-
- /**
- * Gets the root locale directory.
- * @return PhingFile
- */
- function getDir() {
- return $this->dir;
- }
-
- /**
- * Sets the locale to use for translation.
- * Note that for gettext() to work, you have to make sure this locale
- * is specific enough for your system (e.g. some systems may allow an 'en' locale,
- * but others will require 'en_US', etc.).
- * @param string $locale
- */
- function setLocale($locale) {
- $this->locale = $locale;
- }
-
- /**
- * Gets the locale to use for translation.
- * @return string
- */
- function getLocale() {
- return $this->locale;
- }
-
- /**
- * Make sure that required attributes are set.
- * @throws BuldException - if any required attribs aren't set.
- */
- protected function checkAttributes() {
- if (!$this->domain || !$this->locale || !$this->dir) {
- throw new BuildException("You must specify values for domain, locale, and dir attributes.");
- }
- }
-
- /**
- * Initialize the gettext/locale environment.
- * This method will change some env vars and locale settings; the
- * restoreEnvironment should put them all back :)
- *
- * @return void
- * @throws BuildException - if locale cannot be set.
- * @see restoreEnvironment()
- */
- protected function initEnvironment() {
- $this->storedLocale = getenv("LANG");
-
- $this->log("Setting locale to " . $this->locale, Project::MSG_DEBUG);
- putenv("LANG=".$this->locale);
- $ret = setlocale(LC_ALL, $this->locale);
- if ($ret === false) {
- $msg = "Could not set locale to " . $this->locale
- . ". You may need to use fully qualified name"
- . " (e.g. en_US instead of en).";
- throw new BuildException($msg);
- }
-
- $this->log("Binding domain '".$this->domain."' to " . $this->dir, Project::MSG_DEBUG);
- bindtextdomain($this->domain, $this->dir->getAbsolutePath());
- textdomain($this->domain);
- }
-
- /**
- * Restores environment settings and locale.
- * This does _not_ restore any gettext-specific settings
- * (e.g. textdomain()).
- *
- * @return void
- */
- protected function restoreEnvironment() {
- putenv("LANG=".$this->storedLocale);
- setlocale(LC_ALL, $this->storedLocale);
- }
-
- /**
- * Performs gettext translation of msgid and returns translated text.
- *
- * This function simply wraps gettext() call, but provides ability to log
- * string replacements. (alternative would be using preg_replace with /e which
- * would probably be faster, but no ability to debug/log.)
- *
- * @param array $matches Array of matches; we're interested in $matches[2].
- * @return string Translated text
- */
- private function xlateStringCallback($matches) {
- $charbefore = $matches[1];
- $msgid = $matches[2];
- $translated = gettext($msgid);
- $this->log("Translating \"$msgid\" => \"$translated\"", Project::MSG_DEBUG);
- return $charbefore . '"' . $translated . '"';
- }
-
- /**
- * Returns the filtered stream.
- * The original stream is first read in fully, and then translation is performed.
- *
- * @return mixed the filtered stream, or -1 if the end of the resulting stream has been reached.
- *
- * @throws IOException - if the underlying stream throws an IOException during reading
- * @throws BuildException - if the correct params are not supplied
- */
- function read($len = null) {
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // Make sure correct params/attribs have been set
- $this->checkAttributes();
-
- $buffer = $this->in->read($len);
- if($buffer === -1) {
- return -1;
- }
-
- // Setup the locale/gettext environment
- $this->initEnvironment();
-
-
- // replace any occurrences of _("") or gettext("") with
- // the translated value.
- //
- // ([^\w]|^)_\("((\\"|[^"])*)"\)
- // --$1--- -----$2----
- // ---$3-- [match escaped quotes or any char that's not a quote]
- //
- // also match gettext() -- same as above
-
- $buffer = preg_replace_callback('/([^\w]|^)_\("((\\\"|[^"])*)"\)/', array($this, 'xlateStringCallback'), $buffer);
- $buffer = preg_replace_callback('/([^\w]|^)gettext\("((\\\"|[^"])*)"\)/', array($this, 'xlateStringCallback'), $buffer);
-
- // Check to see if there are any _('') calls and flag an error
-
- // Check to see if there are any unmatched gettext() calls -- and flag an error
-
- $matches = array();
- if (preg_match('/([^\w]|^)(gettext\([^\)]+\))/', $buffer, $matches)) {
- $this->log("Unable to perform translation on: " . $matches[2], Project::MSG_WARN);
- }
-
- $this->restoreEnvironment();
-
- return $buffer;
- }
-
- /**
- * Creates a new TranslateGettext filter using the passed in
- * Reader for instantiation.
- *
- * @param Reader $reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return TranslateGettext A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new TranslateGettext($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setDomain($this->getDomain());
- $newFilter->setLocale($this->getLocale());
- $newFilter->setDir($this->getDir());
- return $newFilter;
- }
-
- /**
- * Parses the parameters if this filter is being used in "generic" mode.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- foreach($params as $param) {
- switch($param->getType()) {
- case self::DOMAIN_KEY:
- $this->setDomain($param->getValue());
- break;
- case self::DIR_KEY:
- $this->setDir($this->project->resolveFile($param->getValue()));
- break;
-
- case self::LOCALE_KEY:
- $this->setLocale($param->getValue());
- break;
- } // switch
- }
- } // if params !== null
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/XincludeFilter.php b/buildscripts/phing/classes/phing/filters/XincludeFilter.php
deleted file mode 100644
index e2b3cd00..00000000
--- a/buildscripts/phing/classes/phing/filters/XincludeFilter.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-
-/*
- * $Id: 6c47e03d52cf26c183b05e347dac83735dd8c8dd $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Applies Xinclude parsing to incoming text.
- *
- * Uses PHP DOM XML support
- *
- * @author Bill Karwin <bill@karwin.com>
- * @version $Id: 6c47e03d52cf26c183b05e347dac83735dd8c8dd $
- * @see FilterReader
- * @package phing.filters
- */
-class XincludeFilter extends BaseParamFilterReader implements ChainableReader {
-
- private $basedir = null;
-
- /**
- * @var bool
- */
- private $processed = false;
-
- /**
- * Whether to resolve entities.
- *
- * @var bool
- *
- * @since 2.4
- */
- private $resolveExternals = false;
-
- /**
- * Whether to resolve entities.
- *
- * @param $resolveExternals
- *
- * @since 2.4
- */
- public function setResolveExternals($resolveExternals)
- {
- $this->resolveExternals = (bool)$resolveExternals;
- }
-
- /**
- * @return bool
- *
- * @since 2.4
- */
- public function getResolveExternals()
- {
- return $this->resolveExternals;
- }
-
- public function setBasedir(PhingFile $dir)
- {
- $this->basedir = $dir;
- }
-
- public function getBasedir()
- {
- return $this->basedir;
- }
-
- /**
- * Reads stream, applies XSLT and returns resulting stream.
- * @return string transformed buffer.
- * @throws BuildException - if XSLT support missing, if error in xslt processing
- */
- function read($len = null) {
-
- if (!class_exists('DomDocument')) {
- throw new BuildException("Could not find the DomDocument class. Make sure PHP has been compiled/configured to support DOM XML.");
- }
-
- if ($this->processed === true) {
- return -1; // EOF
- }
-
- // Read XML
- $_xml = null;
- while ( ($data = $this->in->read($len)) !== -1 )
- $_xml .= $data;
-
- if ($_xml === null ) { // EOF?
- return -1;
- }
-
- if (empty($_xml)) {
- $this->log("XML file is empty!", Project::MSG_WARN);
- return '';
- }
-
- $this->log("Transforming XML " . $this->in->getResource() . " using Xinclude ", Project::MSG_VERBOSE);
-
- $out = '';
- try {
- $out = $this->process($_xml);
- $this->processed = true;
- } catch (IOException $e) {
- throw new BuildException($e);
- }
-
- return $out;
- }
-
- /**
- * Try to process the Xinclude transformation
- *
- * @param string XML to process.
- *
- * @throws BuildException On errors
- */
- protected function process($xml) {
-
- if ($this->basedir) {
- $cwd = getcwd();
- chdir($this->basedir);
- }
-
- // Create and setup document.
- $xmlDom = new DomDocument();
- $xmlDom->resolveExternals = $this->resolveExternals;
-
- $xmlDom->loadXML($xml);
-
- $xmlDom->xinclude();
-
- if ($this->basedir) {
- chdir($cwd);
- }
-
- return $xmlDom->saveXML();
- }
-
- /**
- * Creates a new XincludeFilter using the passed in
- * Reader for instantiation.
- *
- * @param Reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return Reader A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new XincludeFilter($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setBasedir($this->getBasedir());
- return $newFilter;
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/filters/XsltFilter.php b/buildscripts/phing/classes/phing/filters/XsltFilter.php
deleted file mode 100644
index 8866bff7..00000000
--- a/buildscripts/phing/classes/phing/filters/XsltFilter.php
+++ /dev/null
@@ -1,408 +0,0 @@
-<?php
-
-/*
- * $Id: 057af49d450e4c137127acc0f5331368e7a76183 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/filters/BaseParamFilterReader.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Applies XSL stylesheet to incoming text.
- *
- * Uses PHP XSLT support (libxslt).
- *
- * @author Hans Lellelid <hans@velum.net>
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @version $Id: 057af49d450e4c137127acc0f5331368e7a76183 $
- * @see FilterReader
- * @package phing.filters
- */
-class XsltFilter extends BaseParamFilterReader implements ChainableReader {
-
- /**
- * Path to XSL stylesheet.
- * @var string
- */
- private $xslFile = null;
-
- /**
- * Whether XML file has been transformed.
- * @var boolean
- */
- private $processed = false;
-
- /**
- * XSLT Params.
- * @var array
- */
- private $xsltParams = array();
-
- /**
- * Whether to use loadHTML() to parse the input XML file.
- */
- private $html = false;
-
- /**
- * Whether to resolve entities in the XML document (see
- * {@link http://www.php.net/manual/en/class.domdocument.php#domdocument.props.resolveexternals}
- * for more details).
- *
- * @var bool
- *
- * @since 2.4
- */
- private $resolveDocumentExternals = false;
-
- /**
- * Whether to resolve entities in the stylesheet.
- *
- * @var bool
- *
- * @since 2.4
- */
- private $resolveStylesheetExternals = false;
-
- /**
- * Create new XSLT Param object, to handle the <param/> nested element.
- * @return XSLTParam
- */
- function createParam() {
- $num = array_push($this->xsltParams, new XSLTParam());
- return $this->xsltParams[$num-1];
- }
-
- /**
- * Sets the XSLT params for this class.
- * This is used to "clone" this class, in the chain() method.
- * @param array $params
- */
- function setParams($params) {
- $this->xsltParams = $params;
- }
-
- /**
- * Returns the XSLT params set for this class.
- * This is used to "clone" this class, in the chain() method.
- * @return array
- */
- function getParams() {
- return $this->xsltParams;
- }
-
- /**
- * Set the XSLT stylesheet.
- * @param mixed $file PhingFile object or path.
- */
- function setStyle(PhingFile $file) {
- $this->xslFile = $file;
- }
-
- /**
- * Whether to use HTML parser for the XML.
- * This is supported in libxml2 -- Yay!
- * @return boolean
- */
- function getHtml() {
- return $this->html;
- }
-
- /**
- * Whether to use HTML parser for XML.
- * @param boolean $b
- */
- function setHtml($b) {
- $this->html = (boolean) $b;
- }
-
- /**
- * Get the path to XSLT stylesheet.
- * @return mixed XSLT stylesheet path.
- */
- function getStyle() {
- return $this->xslFile;
- }
-
- /**
- * Whether to resolve entities in document.
- *
- * @param bool $resolveExternals
- *
- * @since 2.4
- */
- function setResolveDocumentExternals($resolveExternals) {
- $this->resolveDocumentExternals = (bool)$resolveExternals;
- }
-
- /**
- * @return bool
- *
- * @since 2.4
- */
- function getResolveDocumentExternals() {
- return $this->resolveDocumentExternals;
- }
-
- /**
- * Whether to resolve entities in stylesheet.
- *
- * @param bool $resolveExternals
- *
- * @since 2.4
- */
- function setResolveStylesheetExternals($resolveExternals) {
- $this->resolveStylesheetExternals = (bool)$resolveExternals;
- }
-
- /**
- * @return bool
- *
- * @since 2.4
- */
- function getResolveStylesheetExternals() {
- return $this->resolveStylesheetExternals;
- }
-
- /**
- * Reads stream, applies XSLT and returns resulting stream.
- * @return string transformed buffer.
- * @throws BuildException - if XSLT support missing, if error in xslt processing
- */
- function read($len = null) {
-
- if (!class_exists('XSLTProcessor')) {
- throw new BuildException("Could not find the XSLTProcessor class. Make sure PHP has been compiled/configured to support XSLT.");
- }
-
- if ($this->processed === true) {
- return -1; // EOF
- }
-
- if ( !$this->getInitialized() ) {
- $this->_initialize();
- $this->setInitialized(true);
- }
-
- // Read XML
- $_xml = null;
- while ( ($data = $this->in->read($len)) !== -1 )
- $_xml .= $data;
-
- if ($_xml === null ) { // EOF?
- return -1;
- }
-
- if(empty($_xml)) {
- $this->log("XML file is empty!", Project::MSG_WARN);
- return ''; // return empty string, don't attempt to apply XSLT
- }
-
- // Read XSLT
- $_xsl = null;
- $xslFr = new FileReader($this->xslFile);
- $xslFr->readInto($_xsl);
-
- $this->log("Tranforming XML " . $this->in->getResource() . " using style " . $this->xslFile->getPath(), Project::MSG_VERBOSE);
-
- $out = '';
- try {
- $out = $this->process($_xml, $_xsl);
- $this->processed = true;
- } catch (IOException $e) {
- throw new BuildException($e);
- }
-
- return $out;
- }
-
- // {{{ method _ProcessXsltTransformation($xml, $xslt) throws BuildException
- /**
- * Try to process the XSLT transformation
- *
- * @param string XML to process.
- * @param string XSLT sheet to use for the processing.
- *
- * @throws BuildException On XSLT errors
- */
- protected function process($xml, $xsl) {
-
- $processor = new XSLTProcessor();
-
- // Create and setup document.
- $xmlDom = new DOMDocument();
- $xmlDom->resolveExternals = $this->resolveDocumentExternals;
-
- // Create and setup stylesheet.
- $xslDom = new DOMDocument();
- $xslDom->resolveExternals = $this->resolveStylesheetExternals;
-
- if ($this->html) {
- $xmlDom->loadHTML($xml);
- } else {
- $xmlDom->loadXML($xml);
- }
-
- $xslDom->loadxml($xsl);
-
- $processor->importStylesheet($xslDom);
-
- // ignoring param "type" attrib, because
- // we're only supporting direct XSL params right now
- foreach($this->xsltParams as $param) {
- $this->log("Setting XSLT param: " . $param->getName() . "=>" . $param->getExpression(), Project::MSG_DEBUG);
- $processor->setParameter(null, $param->getName(), $param->getExpression());
- }
-
- $errorlevel = error_reporting();
- error_reporting($errorlevel & ~E_WARNING);
- @$result = $processor->transformToXML($xmlDom);
- error_reporting($errorlevel);
-
- if (false === $result) {
- //$errno = xslt_errno($processor);
- //$err = xslt_error($processor);
- throw new BuildException("XSLT Error");
- } else {
- return $result;
- }
- }
-
- /**
- * Creates a new XsltFilter using the passed in
- * Reader for instantiation.
- *
- * @param Reader A Reader object providing the underlying stream.
- * Must not be <code>null</code>.
- *
- * @return Reader A new filter based on this configuration, but filtering
- * the specified reader
- */
- function chain(Reader $reader) {
- $newFilter = new XsltFilter($reader);
- $newFilter->setProject($this->getProject());
- $newFilter->setStyle($this->getStyle());
- $newFilter->setInitialized(true);
- $newFilter->setParams($this->getParams());
- $newFilter->setHtml($this->getHtml());
- return $newFilter;
- }
-
- /**
- * Parses the parameters to get stylesheet path.
- */
- private function _initialize() {
- $params = $this->getParameters();
- if ( $params !== null ) {
- for($i = 0, $_i=count($params) ; $i < $_i; $i++) {
- if ( $params[$i]->getType() === null ) {
- if ($params[$i]->getName() === "style") {
- $this->setStyle($params[$i]->getValue());
- }
- } elseif ($params[$i]->getType() == "param") {
- $xp = new XSLTParam();
- $xp->setName($params[$i]->getName());
- $xp->setExpression($params[$i]->getValue());
- $this->xsltParams[] = $xp;
- }
- }
- }
- }
-
-}
-
-
-/**
- * Class that holds an XSLT parameter.
- *
- * @package phing.filters
- */
-class XSLTParam {
-
- private $name;
-
- private $expr;
-
- /**
- * Sets param name.
- * @param string $name
- */
- public function setName($name) {
- $this->name = $name;
- }
-
- /**
- * Get param name.
- * @return string
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * Sets expression value (alias to the setExpression()) method.
- *
- * @param string $v
- * @see setExpression()
- */
- public function setValue($v)
- {
- $this->setExpression($v);
- }
-
- /**
- * Gets expression value (alias to the getExpression()) method.
- *
- * @param string $v
- * @see getExpression()
- */
- public function getValue()
- {
- return $this->getExpression();
- }
-
- /**
- * Sets expression value.
- * @param string $expr
- */
- public function setExpression($expr) {
- $this->expr = $expr;
- }
-
- /**
- * Sets expression to dynamic register slot.
- * @param RegisterSlot $expr
- */
- public function setListeningExpression(RegisterSlot $expr) {
- $this->expr = $expr;
- }
-
- /**
- * Returns expression value -- performs lookup if expr is registerslot.
- * @return string
- */
- public function getExpression() {
- if ($this->expr instanceof RegisterSlot) {
- return $this->expr->getValue();
- } else {
- return $this->expr;
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/filters/util/ChainReaderHelper.php b/buildscripts/phing/classes/phing/filters/util/ChainReaderHelper.php
deleted file mode 100755
index c465d0a1..00000000
--- a/buildscripts/phing/classes/phing/filters/util/ChainReaderHelper.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-/*
- * $Id: c1709ddb9da44ce62fbe072c61d29dba4814e3f6 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/Project.php';
-include_once 'phing/filters/BaseFilterReader.php';
-include_once 'phing/types/PhingFilterReader.php';
-include_once 'phing/types/FilterChain.php';
-include_once 'phing/types/Parameter.php';
-include_once 'phing/util/FileUtils.php';
-include_once 'phing/util/StringHelper.php';
-include_once 'phing/filters/ChainableReader.php';
-
-/**
- * Process a FilterReader chain.
- *
- * Here, the interesting method is 'getAssembledReader'.
- * The purpose of this one is to create a simple Reader object which
- * apply all filters on another primary Reader object.
- *
- * For example : In copyFile (phing.util.FileUtils) the primary Reader
- * is a FileReader object (more accuratly, a BufferedReader) previously
- * setted for the source file to copy. So, consider this filterchain :
- *
- * <filterchain>
- * <stripphpcomments />
- * <linecontains>
- * <contains value="foo">
- * </linecontains>
- * <tabtospaces tablength="8" />
- * </filterchain>
- *
- * getAssembledReader will return a Reader object wich read on each
- * of these filters. Something like this : ('->' = 'which read data from') :
- *
- * [TABTOSPACES] -> [LINECONTAINS] -> [STRIPPHPCOMMENTS] -> [FILEREADER]
- * (primary reader)
- *
- * So, getAssembledReader will return the TABTOSPACES Reader object. Then
- * each read done with this Reader object will follow this path.
- *
- * Hope this explanation is clear :)
- *
- * TODO: Implement the classPath feature.
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @version $Id$
- * @access public
- * @package phing.filters.util
-*/
-class ChainReaderHelper {
-
- /** Primary reader to wich the reader chain is to be attached */
- private $primaryReader = null;
-
- /** The site of the buffer to be used. */
- private $bufferSize = 8192;
-
- /** Chain of filters */
- private $filterChains = array();
-
- /** The Phing project */
- private $project;
-
- /*
- * Sets the primary reader
- */
- function setPrimaryReader(Reader $reader) {
- $this->primaryReader = $reader;
- }
-
- /*
- * Set the project to work with
- */
- function setProject(Project $project) {
- $this->project = $project;
- }
-
- /*
- * Get the project
- */
- function getProject() {
- return $this->project;
- }
-
- /*
- * Sets the buffer size to be used. Defaults to 8192,
- * if this method is not invoked.
- */
- function setBufferSize($size) {
- $this->bufferSize = $size;
- }
-
- /*
- * Sets the collection of filter reader sets
- */
- function setFilterChains(&$fchain) {
- $this->filterChains = &$fchain;
- }
-
- /*
- * Assemble the reader
- */
- function getAssembledReader() {
-
- $instream = $this->primaryReader;
- $filterReadersCount = count($this->filterChains);
- $finalFilters = array();
-
- // Collect all filter readers of all filter chains used ...
- for($i = 0 ; $i<$filterReadersCount ; $i++) {
- $filterchain = &$this->filterChains[$i];
- $filterReaders = $filterchain->getFilterReaders();
- $readerCount = count($filterReaders);
- for($j = 0 ; $j<$readerCount ; $j++) {
- $finalFilters[] = $filterReaders[$j];
- }
- }
-
- // ... then chain the filter readers.
- $filtersCount = count($finalFilters);
- if ( $filtersCount > 0 ) {
- for($i = 0 ; $i<$filtersCount ; $i++) {
- $filter = $finalFilters[$i];
-
- if ( $filter instanceof PhingFilterReader ) {
-
- // This filter reader is an external class.
- $className = $filter->getClassName();
- $classpath = $filter->getClasspath();
- $project = $filter->getProject();
-
- if ( $className !== null ) {
- $cls = Phing::import($className, $classpath);
- $impl = new $cls();
- }
-
- if ( !($impl instanceof FilterReader) ) {
- throw new Exception($className." does not extend phing.system.io.FilterReader");
- }
-
- $impl->setReader($instream); // chain
- $impl->setProject($this->getProject()); // what about $project above ?
-
- if ( $impl instanceof Parameterizable ) {
- $impl->setParameters($filter->getParams());
- }
-
- $instream = $impl; // now that it's been chained
-
- } elseif (($filter instanceof ChainableReader) && ($filter instanceof Reader)) {
- if ( $this->getProject() !== null && ($filter instanceof BaseFilterReader) ) {
- $filter->setProject($this->getProject());
- }
- $instream = $filter->chain($instream);
- } else {
- throw new Exception("Cannot chain invalid filter: " . get_class($filter));
- }
- }
- }
-
- return $instream;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/filters/util/IniFileTokenReader.php b/buildscripts/phing/classes/phing/filters/util/IniFileTokenReader.php
deleted file mode 100755
index f47e155c..00000000
--- a/buildscripts/phing/classes/phing/filters/util/IniFileTokenReader.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/*
- * $Id: e709765b4c0c1be330183f462ab527fa8354b555 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/types/TokenReader.php';
-include_once 'phing/system/io/IOException.php';
-include_once 'phing/filters/ReplaceTokens.php'; // For class Token
-
-/**
- * Class that allows reading tokens from INI files.
- *
- * @author Manuel Holtgewe
- * @version $Id$
- * @package phing.filters.util
- */
-class IniFileTokenReader extends TokenReader {
-
- /**
- * Holds the path to the INI file that is to be read.
- * @var object Reference to a PhingFile Object representing
- * the path to the INI file.
- */
- private $file = null;
-
- /**
- * @var string Sets the section to load from the INI file.
- * if omitted, all sections are loaded.
- */
- private $section = null;
-
- /**
- * Reads the next token from the INI file
- *
- * @throws IOException On error
- * @return Token
- */
- function readToken() {
- if ($this->file === null) {
- throw new BuildException("No File set for IniFileTokenReader");
- }
-
- static $tokens = null;
- if ($tokens === null) {
- $tokens = array();
- $arr = parse_ini_file($this->file->getAbsolutePath(), true);
- if ($this->section === null) {
- foreach ($arr as $sec_name => $values) {
- foreach($arr[$sec_name] as $key => $value) {
- $tok = new Token;
- $tok->setKey($key);
- $tok->setValue($value);
- $tokens[] = $tok;
- }
- }
- } else if (isset($arr[$this->section])) {
- foreach ($arr[$this->section] as $key => $value) {
- $tok = new Token;
- $tok->setKey($key);
- $tok->setValue($value);
- $tokens[] = $tok;
- }
- }
- }
-
- if (count($tokens) > 0) {
- return array_pop($tokens);
- } else
- return null;
- }
-
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- function setSection($str) {
- $this->section = (string) $str;
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/input/DefaultInputHandler.php b/buildscripts/phing/classes/phing/input/DefaultInputHandler.php
deleted file mode 100755
index 5e53c878..00000000
--- a/buildscripts/phing/classes/phing/input/DefaultInputHandler.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-/*
- * $Id: 5d3d4fb125da3344b5aafec31ba330969bdbdb42 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/input/InputHandler.php';
-include_once 'phing/system/io/ConsoleReader.php';
-
-/**
- * Prompts using print(); reads input from Console.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @version $Id$
- * @package phing.input
- */
-class DefaultInputHandler implements InputHandler {
-
- /**
- * Prompts and requests input. May loop until a valid input has
- * been entered.
- * @throws BuildException
- */
- public function handleInput(InputRequest $request) {
- $prompt = $this->getPrompt($request);
- $in = new ConsoleReader();
- do {
- print $prompt;
- try {
- $input = $in->readLine();
- if ($input === "" && ($request->getDefaultValue() !== null) ) {
- $input = $request->getDefaultValue();
- }
- $request->setInput($input);
- } catch (Exception $e) {
- throw new BuildException("Failed to read input from Console.", $e);
- }
- } while (!$request->isInputValid());
- }
-
- /**
- * Constructs user prompt from a request.
- *
- * <p>This implementation adds (choice1,choice2,choice3,...) to the
- * prompt for <code>MultipleChoiceInputRequest</code>s.</p>
- *
- * @param $request the request to construct the prompt for.
- * Must not be <code>null</code>.
- */
- protected function getPrompt(InputRequest $request) {
- $prompt = $request->getPrompt();
- $defaultValue = $request->getDefaultValue();
-
- if ($request instanceof YesNoInputRequest) {
- $choices = $request->getChoices();
- $defaultValue = $choices[(int) !$request->getDefaultValue()];
- $prompt .= '(' . implode('/', $request->getChoices()) .')';
- } elseif ($request instanceof MultipleChoiceInputRequest) { // (a,b,c,d)
- $prompt .= '(' . implode(',', $request->getChoices()) . ')';
- }
-
- if ($request->getDefaultValue() !== null) {
- $prompt .= ' ['.$defaultValue.']';
- }
- $pchar = $request->getPromptChar();
- return $prompt . ($pchar ? $pchar . ' ' : ' ');
- }
-}
diff --git a/buildscripts/phing/classes/phing/input/InputHandler.php b/buildscripts/phing/classes/phing/input/InputHandler.php
deleted file mode 100755
index 9a414fd4..00000000
--- a/buildscripts/phing/classes/phing/input/InputHandler.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/*
- * $Id: c7412bfab167852910c4dfe935769e4b0c7ec9fe $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Plugin to Phing to handle requests for user input.
- *
- * @author Stefan Bodewig <stefan.bodewig@epost.de>
- * @version $Id$
- * @package phing.input
- */
-interface InputHandler {
-
- /**
- * Handle the request encapsulated in the argument.
- *
- * <p>Precondition: the request.getPrompt will return a non-null
- * value.</p>
- *
- * <p>Postcondition: request.getInput will return a non-null
- * value, request.isInputValid will return true.</p>
- * @return void
- * @throws BuildException
- */
- public function handleInput(InputRequest $request);
-
-}
diff --git a/buildscripts/phing/classes/phing/input/InputRequest.php b/buildscripts/phing/classes/phing/input/InputRequest.php
deleted file mode 100755
index 1d9e156d..00000000
--- a/buildscripts/phing/classes/phing/input/InputRequest.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/*
- * $Id: f74cb3768bf512aeb0156b8de3e3b65c824cd0dc $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Encapsulates an input request.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @version $Id$
- * @package phing.input
- */
-class InputRequest {
-
- protected $prompt;
- protected $input;
- protected $defaultValue;
- protected $promptChar;
-
- /**
- * @param string $prompt The prompt to show to the user. Must not be null.
- */
- public function __construct($prompt) {
- if ($prompt === null) {
- throw new BuildException("prompt must not be null");
- }
- $this->prompt = $prompt;
- }
-
- /**
- * Retrieves the prompt text.
- */
- public function getPrompt() {
- return $this->prompt;
- }
-
- /**
- * Sets the user provided input.
- */
- public function setInput($input) {
- $this->input = $input;
- }
-
- /**
- * Is the user input valid?
- */
- public function isInputValid() {
- return true;
- }
-
- /**
- * Retrieves the user input.
- */
- public function getInput() {
- return $this->input;
- }
-
- /**
- * Set the default value to use.
- * @param mixed $v
- */
- public function setDefaultValue($v) {
- $this->defaultValue = $v;
- }
-
- /**
- * Return the default value to use.
- * @return mixed
- */
- public function getDefaultValue() {
- return $this->defaultValue;
- }
-
- /**
- * Set the default value to use.
- * @param string $c
- */
- public function setPromptChar($c) {
- $this->promptChar = $c;
- }
-
- /**
- * Return the default value to use.
- * @return string
- */
- public function getPromptChar() {
- return $this->promptChar;
- }
-}
diff --git a/buildscripts/phing/classes/phing/input/MultipleChoiceInputRequest.php b/buildscripts/phing/classes/phing/input/MultipleChoiceInputRequest.php
deleted file mode 100755
index 24e93b58..00000000
--- a/buildscripts/phing/classes/phing/input/MultipleChoiceInputRequest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/*
- * $Id: 12fcf735b10cae890d51bce8d3aebb637d9b6928 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/input/InputRequest.php';
-
-/**
- * Encapsulates an input request.
- *
- * @author Stefan Bodewig <stefan.bodewig@epost.de>
- * @version $Id$
- * @package phing.input
- */
-class MultipleChoiceInputRequest extends InputRequest {
-
- protected $choices = array();
-
- /**
- * @param string $prompt The prompt to show to the user. Must not be null.
- * @param array $choices holds all input values that are allowed.
- * Must not be null.
- */
- public function __construct($prompt, $choices) {
- parent::__construct($prompt);
- $this->choices = $choices;
- }
-
- /**
- * @return The possible values.
- */
- public function getChoices() {
- return $this->choices;
- }
-
- /**
- * @return true if the input is one of the allowed values.
- */
- public function isInputValid() {
- return in_array($this->getInput(), $this->choices); // not strict (?)
- }
-}
diff --git a/buildscripts/phing/classes/phing/input/YesNoInputRequest.php b/buildscripts/phing/classes/phing/input/YesNoInputRequest.php
deleted file mode 100755
index 1a712327..00000000
--- a/buildscripts/phing/classes/phing/input/YesNoInputRequest.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/*
- * $Id: 659526fec1ed2e66d5b9308fba48924ea3dda494 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/input/MultipleChoiceInputRequest.php';
-
-/**
- * Encapsulates an input request that returns a boolean (yes/no).
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: 659526fec1ed2e66d5b9308fba48924ea3dda494 $
- * @package phing.input
- */
-class YesNoInputRequest extends MultipleChoiceInputRequest {
-
- /**
- * @return true if the input is one of the allowed values.
- */
- public function isInputValid() {
- return StringHelper::isBoolean($this->input);
- }
-
- /**
- * Converts input to boolean.
- * @return boolean
- */
- public function getInput() {
- return StringHelper::booleanValue($this->input);
- }
-}
diff --git a/buildscripts/phing/classes/phing/lib/Capsule.php b/buildscripts/phing/classes/phing/lib/Capsule.php
deleted file mode 100755
index e6885a6a..00000000
--- a/buildscripts/phing/classes/phing/lib/Capsule.php
+++ /dev/null
@@ -1,267 +0,0 @@
-<?php
-
-/**
- * Capsule is a simple "template" engine that essentially provides an isolated context
- * for PHP scripts.
- *
- * There is no special templating language, and therefore no limitations to what
- * can be accomplished within templates. The main purpose of Capsule is to separate
- * the business logic from display / output logic.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.lib
- */
-class Capsule {
-
- /**
- * Look for templates here (if relative path provided).
- * @var string
- */
- protected $templatePath;
-
- /**
- * Where should output files be written?
- * (This is named inconsistently to be compatible w/ Texen.)
- * @var string
- */
- protected $outputDirectory;
-
- /**
- * The variables that can be used by the templates.
- * @var array Hash of variables.
- */
- public $vars = array();
-
- /**
- * Has template been initialized.
- */
- protected $initialized = false;
-
- /**
- * Stores the pre-parse() include_path.
- * @var string
- */
- private $old_include_path;
-
- function __construct() {
- }
-
- /**
- * Clears one or several or all variables.
- * @param mixed $which String name of var, or array of names.
- * @return void
- */
- function clear($which = null) {
- if ($which === null) {
- $this->vars = array();
- } elseif (is_array($which)) {
- foreach($which as $var) {
- unset($this->vars[$var]);
- }
- } else {
- unset($this->vars[$which]);
- }
- }
-
- /**
- * Set the basepath to use for template lookups.
- * @param string $v
- */
- function setTemplatePath($v) {
- $this->templatePath = rtrim($v, DIRECTORY_SEPARATOR.'/');
- }
-
- /**
- * Get the basepath to use for template lookups.
- * @return string
- */
- function getTemplatePath() {
- return $this->templatePath;
- }
-
- /**
- * Set a basepath to use for output file creation.
- * @param string $v
- */
- function setOutputDirectory($v) {
- $this->outputDirectory = rtrim($v, DIRECTORY_SEPARATOR.'/');
- }
-
- /**
- * Get basepath to use for output file creation.
- * @return string
- */
- function getOutputDirectory() {
- return $this->outputDirectory;
- }
-
- /**
- * Low overhead (no output buffering) method to simply dump template
- * to buffer.
- *
- * @param string $__template
- * @return void
- * @throws Exception - if template cannot be found
- */
- function display($__template) {
-
- // Prepend "private" variable names with $__ in this function
- // to keep namespace conflict potential to a minimum.
-
- // Alias this class to $generator.
- $generator = $this;
-
- if (isset($this->vars['this'])) {
- throw new Exception("Assigning a variable named \$this to a context conflicts with class namespace.");
- }
-
- // extract variables into local namespace
- extract($this->vars);
-
- // prepend template path to include path,
- // so that include "path/relative/to/templates"; can be used within templates
- $__old_inc_path = ini_get('include_path');
- ini_set('include_path', $this->templatePath . PATH_SEPARATOR . $__old_inc_path);
-
- @ini_set('track_errors', true);
- include $__template;
- @ini_restore('track_errors');
-
- // restore the include path
- ini_set('include_path', $__old_inc_path);
-
- if (!empty($php_errormsg)) {
- throw new Exception("Unable to parse template " . $__template . ": " . $php_errormsg);
- }
- }
-
- /**
- * Fetches the results of a tempalte parse and either returns
- * the string or writes results to a specified output file.
- *
- * @param string $template The template filename (relative to templatePath or absolute).
- * @param string $outputFile If specified, contents of template will also be written to this file.
- * @param boolean $append Should output be appended to source file?
- * @return string The "parsed" template output.
- * @throws Exception - if template not found.
- */
- function parse($template, $outputFile = null, $append = false) {
-
- // main work done right here:
- // hopefully this works recursively ... fingers crossed.
- ob_start();
-
- try {
- $this->display($template);
- } catch (Exception $e) {
- ob_end_flush(); // flush the output on error (so we can see up to what point it parsed everything)
- throw $e;
- }
-
- $output = ob_get_contents();
- ob_end_clean();
-
- if ($outputFile !== null) {
- $outputFile = $this->resolvePath($outputFile, $this->outputDirectory);
-
- $flags = null;
- if ($append) $flags = FILE_APPEND;
-
- if (!file_put_contents($outputFile, $output, $flags) && $output != "") {
- throw new Exception("Unable to write output to " . $outputFile);
- }
- }
-
- return $output;
- }
-
- /**
- * This returns a "best guess" path for the given file.
- *
- * @param string $file File name or possibly absolute path.
- * @param string $basepath The basepath that should be prepended if $file is not absolute.
- * @return string "Best guess" path for this file.
- */
- protected function resolvePath($file, $basepath) {
- if ( !($file{0} == DIRECTORY_SEPARATOR || $file{0} == '/')
- // also account for C:\ style path
- && !($file{1} == ':' && ($file{2} == DIRECTORY_SEPARATOR || $file{2} == '/'))) {
- if ($basepath != null) {
- $file = $basepath . DIRECTORY_SEPARATOR . $file;
- }
- }
- return $file;
- }
-
- /**
- * Gets value of specified var or NULL if var has not been put().
- * @param string $name Variable name to retrieve.
- * @return mixed
- */
- function get($name) {
- if (!isset($this->vars[$name])) return null;
- return $this->vars[$name];
- }
-
- /**
- * Merges in passed hash to vars array.
- *
- * Given an array like:
- *
- * array( 'myvar' => 'Hello',
- * 'myvar2' => 'Hello')
- *
- * Resulting template will have access to $myvar and $myvar2.
- *
- * @param array $vars
- * @param boolean $recursiveMerge Should matching keys be recursively merged?
- * @return void
- */
- function putAll($vars, $recursiveMerge = false) {
- if ($recursiveMerge) {
- $this->vars = array_merge_recursive($this->vars, $vars);
- } else {
- $this->vars = array_merge($this->vars, $vars);
- }
- }
-
- /**
- * Adds a variable to the context.
- *
- * Resulting template will have access to ${$name$} variable.
- *
- * @param string $name
- * @param mixed $value
- */
- function put($name, $value) {
- $this->vars[$name] = $value;
- }
-
- /**
- * Put a variable into the context, assigning it by reference.
- * This means that if the template modifies the variable, then it
- * will also be modified in the context.
- *
- * @param $name
- * @param &$value
- */
- function putRef($name, &$value) {
- $this->vars[$name] = &$value;
- }
-
- /**
- * Makes a copy of the value and puts it into the context.
- * This is primarily to force copying (cloning) of objects, rather
- * than the default behavior which is to assign them by reference.
- * @param string $name
- * @param mixed $value
- */
- function putCopy($name, $value) {
- if (is_object($value)) {
- $value = clone $value;
- }
- $this->vars[$name] = $value;
- }
-
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/listener/AnsiColorLogger.php b/buildscripts/phing/classes/phing/listener/AnsiColorLogger.php
deleted file mode 100755
index fc12c9d2..00000000
--- a/buildscripts/phing/classes/phing/listener/AnsiColorLogger.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-/*
- * $Id: bea608bad3f8bd5733c7eac6451d15b1c937115c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/listener/DefaultLogger.php';
-include_once 'phing/system/util/Properties.php';
-
-/**
- * Uses ANSI Color Code Sequences to colorize messages
- * sent to the console.
- *
- * If used with the -logfile option, the output file
- * will contain all the necessary escape codes to
- * display the text in colorized mode when displayed
- * in the console using applications like cat, more,
- * etc.
- *
- * This is designed to work on terminals that support ANSI
- * color codes. It works on XTerm, ETerm, Mindterm, etc.
- * It also works on Win9x (with ANSI.SYS loaded.)
- *
- * NOTE:
- * It doesn't work on WinNT's COMMAND.COM even with
- * ANSI.SYS loaded.
- *
- * The default colors used for differentiating
- * the message levels can be changed by editing the
- * phing/listener/defaults.properties file.
- *
- * This file contains 5 key/value pairs:
- * AnsiColorLogger.ERROR_COLOR=2;31
- * AnsiColorLogger.WARNING_COLOR=2;35
- * AnsiColorLogger.INFO_COLOR=2;36
- * AnsiColorLogger.VERBOSE_COLOR=2;32
- * AnsiColorLogger.DEBUG_COLOR=2;34
- *
- * Another option is to pass a system variable named
- * ant.logger.defaults, with value set to the path of
- * the file that contains user defined Ansi Color
- * Codes, to the <B>java</B> command using -D option.
- *
- * To change these colors use the following chart:
- *
- * <B>ANSI COLOR LOGGER CONFIGURATION</B>
- *
- * Format for AnsiColorLogger.*=
- * Attribute;Foreground;Background
- *
- * Attribute is one of the following:
- * 0 -> Reset All Attributes (return to normal mode)
- * 1 -> Bright (Usually turns on BOLD)
- * 2 -> Dim
- * 3 -> Underline
- * 5 -> link
- * 7 -> Reverse
- * 8 -> Hidden
- *
- * Foreground is one of the following:
- * 30 -> Black
- * 31 -> Red
- * 32 -> Green
- * 33 -> Yellow
- * 34 -> Blue
- * 35 -> Magenta
- * 36 -> Cyan
- * 37 -> White
- *
- * Background is one of the following:
- * 40 -> Black
- * 41 -> Red
- * 42 -> Green
- * 43 -> Yellow
- * 44 -> Blue
- * 45 -> Magenta
- * 46 -> Cyan
- * 47 -> White
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Magesh Umasankar (Ant)
- * @package phing.listener
- * @version $Id$
- */
-class AnsiColorLogger extends DefaultLogger {
-
- const ATTR_NORMAL = 0;
- const ATTR_BRIGHT = 1;
- const ATTR_DIM = 2;
- const ATTR_UNDERLINE = 3;
- const ATTR_BLINK = 5;
- const ATTR_REVERSE = 7;
- const ATTR_HIDDEN = 8;
-
- const FG_BLACK = 30;
- const FG_RED = 31;
- const FG_GREEN = 32;
- const FG_YELLOW = 33;
- const FG_BLUE = 34;
- const FG_MAGENTA = 35;
- const FG_CYAN = 36;
- const FG_WHITE = 37;
-
- const BG_BLACK = 40;
- const BG_RED = 41;
- const BG_GREEN = 42;
- const BG_YELLOW = 44;
- const BG_BLUE = 44;
- const BG_MAGENTA = 45;
- const BG_CYAN = 46;
- const BG_WHITE = 47;
-
- const PREFIX = "\x1b[";
- const SUFFIX = "m";
- const SEPARATOR = ';';
- const END_COLOR = "\x1b[m"; // self::PREFIX . self::SUFFIX;
-
- private $errColor;
- private $warnColor;
- private $infoColor;
- private $verboseColor;
- private $debugColor;
-
- private $colorsSet = false;
-
- /**
- * Construct new AnsiColorLogger
- * Perform initializations that cannot be done in var declarations.
- */
- public function __construct() {
- parent::__construct();
- $this->errColor = self::PREFIX . self::ATTR_NORMAL . self::SEPARATOR . self::FG_RED . self::SUFFIX;
- $this->warnColor = self::PREFIX . self::ATTR_NORMAL . self::SEPARATOR . self::FG_MAGENTA . self::SUFFIX;
- $this->infoColor = self::PREFIX . self::ATTR_NORMAL . self::SEPARATOR . self::FG_CYAN . self::SUFFIX;
- $this->verboseColor = self::PREFIX . self::ATTR_NORMAL . self::SEPARATOR . self::FG_GREEN . self::SUFFIX;
- $this->debugColor = self::PREFIX . self::ATTR_NORMAL . self::SEPARATOR . self::FG_BLUE . self::SUFFIX;
- }
-
- /**
- * Set the colors to use from a property file specified by the
- * special ant property ant.logger.defaults
- */
- private final function setColors() {
-
- $userColorFile = Phing::getProperty("phing.logger.defaults");
- $systemColorFile = new PhingFile(Phing::getResourcePath("phing/listener/defaults.properties"));
-
- $in = null;
-
- try {
- $prop = new Properties();
-
- if ($userColorFile !== null) {
- $prop->load($userColorFile);
- } else {
- $prop->load($systemColorFile);
- }
-
- $err = $prop->getProperty("AnsiColorLogger.ERROR_COLOR");
- $warn = $prop->getProperty("AnsiColorLogger.WARNING_COLOR");
- $info = $prop->getProperty("AnsiColorLogger.INFO_COLOR");
- $verbose = $prop->getProperty("AnsiColorLogger.VERBOSE_COLOR");
- $debug = $prop->getProperty("AnsiColorLogger.DEBUG_COLOR");
- if ($err !== null) {
- $this->errColor = self::PREFIX . $err . self::SUFFIX;
- }
- if ($warn !== null) {
- $this->warnColor = self::PREFIX . $warn . self::SUFFIX;
- }
- if ($info !== null) {
- $this->infoColor = self::PREFIX . $info . self::SUFFIX;
- }
- if ($verbose !== null) {
- $this->verboseColor = self::PREFIX . $verbose . self::SUFFIX;
- }
- if ($debug !== null) {
- $this->debugColor = self::PREFIX . $debug . self::SUFFIX;
- }
- } catch (IOException $ioe) {
- //Ignore exception - we will use the defaults.
- }
- }
-
- /**
- * @see DefaultLogger#printMessage
- * @param string $message
- * @param OutputStream $stream
- * @param int $priority
- */
- protected final function printMessage($message, OutputStream $stream, $priority) {
- if ($message !== null) {
-
- if (!$this->colorsSet) {
- $this->setColors();
- $this->colorsSet = true;
- }
-
- switch ($priority) {
- case Project::MSG_ERR:
- $message = $this->errColor . $message . self::END_COLOR;
- break;
- case Project::MSG_WARN:
- $message = $this->warnColor . $message . self::END_COLOR;
- break;
- case Project::MSG_INFO:
- $message = $this->infoColor . $message . self::END_COLOR;
- break;
- case Project::MSG_VERBOSE:
- $message = $this->verboseColor . $message . self::END_COLOR;
- break;
- case Project::MSG_DEBUG:
- $message = $this->debugColor . $message . self::END_COLOR;
- break;
- }
-
- $stream->write($message . PHP_EOL);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/listener/DefaultLogger.php b/buildscripts/phing/classes/phing/listener/DefaultLogger.php
deleted file mode 100755
index 31051a75..00000000
--- a/buildscripts/phing/classes/phing/listener/DefaultLogger.php
+++ /dev/null
@@ -1,279 +0,0 @@
-<?php
-/*
- * $Id: e7f902228f55a3be17b42eed785137cb97e7a29e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/listener/StreamRequiredBuildLogger.php';
-include_once 'phing/BuildEvent.php';
-
-/**
- * Writes a build event to the console.
- *
- * Currently, it only writes which targets are being executed, and
- * any messages that get logged.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @see BuildEvent
- * @package phing.listener
- */
-class DefaultLogger implements StreamRequiredBuildLogger {
-
- /**
- * Size of the left column in output. The default char width is 12.
- * @var int
- */
- const LEFT_COLUMN_SIZE = 12;
-
- /**
- * The message output level that should be used. The default is
- * <code>Project::MSG_VERBOSE</code>.
- * @var int
- */
- protected $msgOutputLevel = Project::MSG_ERR;
-
- /**
- * Time that the build started
- * @var int
- */
- protected $startTime;
-
- /**
- * @var OutputStream Stream to use for standard output.
- */
- protected $out;
-
- /**
- * @var OutputStream Stream to use for error output.
- */
- protected $err;
-
- /**
- * Construct a new default logger.
- */
- public function __construct() {
-
- }
-
- /**
- * Set the msgOutputLevel this logger is to respond to.
- *
- * Only messages with a message level lower than or equal to the given
- * level are output to the log.
- *
- * <p> Constants for the message levels are in Project.php. The order of
- * the levels, from least to most verbose, is:
- *
- * <ul>
- * <li>Project::MSG_ERR</li>
- * <li>Project::MSG_WARN</li>
- * <li>Project::MSG_INFO</li>
- * <li>Project::MSG_VERBOSE</li>
- * <li>Project::MSG_DEBUG</li>
- * </ul>
- *
- * The default message level for DefaultLogger is Project::MSG_ERR.
- *
- * @param int $level The logging level for the logger.
- * @see BuildLogger#setMessageOutputLevel()
- */
- public function setMessageOutputLevel($level) {
- $this->msgOutputLevel = (int) $level;
- }
-
- /**
- * Sets the output stream.
- * @param OutputStream $output
- * @see BuildLogger#setOutputStream()
- */
- public function setOutputStream(OutputStream $output) {
- $this->out = $output;
- }
-
- /**
- * Sets the error stream.
- * @param OutputStream $err
- * @see BuildLogger#setErrorStream()
- */
- public function setErrorStream(OutputStream $err) {
- $this->err = $err;
- }
-
- /**
- * Sets the start-time when the build started. Used for calculating
- * the build-time.
- *
- * @param object The BuildEvent
- * @access public
- */
- public function buildStarted(BuildEvent $event) {
- $this->startTime = Phing::currentTimeMillis();
- if ($this->msgOutputLevel >= Project::MSG_INFO) {
- $this->printMessage("Buildfile: ".$event->getProject()->getProperty("phing.file"), $this->out, Project::MSG_INFO);
- }
- }
-
- /**
- * Prints whether the build succeeded or failed, and any errors that
- * occured during the build. Also outputs the total build-time.
- *
- * @param object The BuildEvent
- * @see BuildEvent::getException()
- */
- public function buildFinished(BuildEvent $event) {
- $error = $event->getException();
- if ($error === null) {
- $msg = PHP_EOL . $this->getBuildSuccessfulMessage() . PHP_EOL;
- } else {
- $msg = PHP_EOL . $this->getBuildFailedMessage() . PHP_EOL;
- if (Project::MSG_VERBOSE <= $this->msgOutputLevel || !($error instanceof BuildException)) {
- $msg .= $error->__toString().PHP_EOL;
- } else {
- $msg .= $error->getMessage();
- }
- }
- $msg .= PHP_EOL . "Total time: " .self::formatTime(Phing::currentTimeMillis() - $this->startTime) . PHP_EOL;
-
- if ($error === null) {
- $this->printMessage($msg, $this->out, Project::MSG_VERBOSE);
- } else {
- $this->printMessage($msg, $this->err, Project::MSG_ERR);
- }
- }
-
- /**
- * Get the message to return when a build failed.
- * @return string The classic "BUILD FAILED"
- */
- protected function getBuildFailedMessage() {
- return "BUILD FAILED";
- }
-
- /**
- * Get the message to return when a build succeeded.
- * @return string The classic "BUILD FINISHED"
- */
- protected function getBuildSuccessfulMessage() {
- return "BUILD FINISHED";
- }
-
- /**
- * Prints the current target name
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getTarget()
- */
- public function targetStarted(BuildEvent $event) {
- if (Project::MSG_INFO <= $this->msgOutputLevel) {
- $showLongTargets = $event->getProject()->getProperty("phing.showlongtargets");
- $msg = PHP_EOL . $event->getProject()->getName() . ' > ' . $event->getTarget()->getName() . ($showLongTargets ? ' [' . $event->getTarget()->getDescription() . ']' : '') . ':' . PHP_EOL;
- $this->printMessage($msg, $this->out, $event->getPriority());
- }
- }
-
- /**
- * Fired when a target has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param object The BuildEvent
- * @see BuildEvent::getException()
- */
- public function targetFinished(BuildEvent $event) {}
-
- /**
- * Fired when a task is started. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getTask()
- */
- public function taskStarted(BuildEvent $event) {}
-
- /**
- * Fired when a task has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getException()
- */
- public function taskFinished(BuildEvent $event) {}
-
- /**
- * Print a message to the stdout.
- *
- * @param object The BuildEvent
- * @access public
- * @see BuildEvent::getMessage()
- */
- public function messageLogged(BuildEvent $event) {
- $priority = $event->getPriority();
- if ($priority <= $this->msgOutputLevel) {
- $msg = "";
- if ($event->getTask() !== null) {
- $name = $event->getTask();
- $name = $name->getTaskName();
- $msg = str_pad("[$name] ", self::LEFT_COLUMN_SIZE, " ", STR_PAD_LEFT);
- }
-
- $msg .= $event->getMessage();
-
- if ($priority != Project::MSG_ERR) {
- $this->printMessage($msg, $this->out, $priority);
- } else {
- $this->printMessage($msg, $this->err, $priority);
- }
- }
- }
-
- /**
- * Formats a time micro integer to human readable format.
- *
- * @param integer The time stamp
- * @access private
- */
- public static function formatTime($micros) {
- $seconds = $micros;
- $minutes = $seconds / 60;
- if ($minutes > 1) {
- return sprintf("%1.0f minute%s %0.2f second%s",
- $minutes, ($minutes === 1 ? " " : "s "),
- $seconds - floor($seconds/60) * 60, ($seconds%60 === 1 ? "" : "s"));
- } else {
- return sprintf("%0.4f second%s", $seconds, ($seconds%60 === 1 ? "" : "s"));
- }
- }
-
- /**
- * Prints a message to console.
- *
- * @param string $message The message to print.
- * Should not be <code>null</code>.
- * @param resource $stream The stream to use for message printing.
- * @param int $priority The priority of the message.
- * (Ignored in this implementation.)
- * @return void
- */
- protected function printMessage($message, OutputStream $stream, $priority) {
- $stream->write($message . PHP_EOL);
- }
-}
diff --git a/buildscripts/phing/classes/phing/listener/HtmlColorLogger.php b/buildscripts/phing/classes/phing/listener/HtmlColorLogger.php
deleted file mode 100755
index 6514f8d1..00000000
--- a/buildscripts/phing/classes/phing/listener/HtmlColorLogger.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-/*
- * $Id: 4b57f4d435b61b6501688394f1ff8534d4b7e93f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/listener/DefaultLogger.php';
-include_once 'phing/system/util/Properties.php';
-
-/**
- * Uses CSS class that must be defined in the HTML page
- * where the Phing output is displayed.
- *
- * If used with the -logfile option, the output
- * will contain the text wrapped in html <span> elements
- * with those css classes.
- *
- * The default classes used for differentiating
- * the message levels can be changed by editing the
- * phing/listener/defaults.properties file.
- *
- * This file can contain 5 key/value pairs:
- * HtmlColorLogger.ERROR_CLASS=_your_css_class_name_
- * HtmlColorLogger.WARNING_CLASS=_your_css_class_name_
- * HtmlColorLogger.INFO_CLASS=_your_css_class_name_
- * HtmlColorLogger.VERBOSE_CLASS=_your_css_class_name_
- * HtmlColorLogger.DEBUG_CLASS=_your_css_class_name_
- *
- * This stems from the Ansi Color Logger done by Hans Lellelid:
- *
- * @author Anton Stöckl <anton@stoeckl.de> (Phing HTML Color Logger)
- * @author Hans Lellelid <hans@xmpl.org> (Phing Ansi Color Logger)
- * @author Magesh Umasankar (Ant)
- * @package phing.listener
- * @version $Id: 4b57f4d435b61b6501688394f1ff8534d4b7e93f $
- */
-class HtmlColorLogger extends DefaultLogger {
-
- const CLASS_ERR = 'phing_err';
- const CLASS_VERBOSE = 'phing_verbose';
- const CLASS_DEBUG = 'phing_debug';
- const CLASS_WARN = 'phing_warn';
- const CLASS_INFO = 'phing_info';
-
- const PREFIX = '<span class="';
- const SUFFIX = '">';
- const END_COLOR = '</span>';
-
- private $errColor;
- private $warnColor;
- private $infoColor;
- private $verboseColor;
- private $debugColor;
-
- private $colorsSet = false;
-
- /**
- * Construct new HtmlColorLogger
- * Perform initializations that cannot be done in var declarations.
- */
- public function __construct() {
- parent::__construct();
- $this->errColor = self::PREFIX . self::CLASS_ERR . self::SUFFIX;
- $this->warnColor = self::PREFIX . self::CLASS_WARN . self::SUFFIX;
- $this->infoColor = self::PREFIX . self::CLASS_INFO . self::SUFFIX;
- $this->verboseColor = self::PREFIX . self::CLASS_VERBOSE . self::SUFFIX;
- $this->debugColor = self::PREFIX . self::CLASS_DEBUG . self::SUFFIX;
- }
-
- /**
- * Set the colors to use from a property file specified in the
- * special phing property file "phing/listener/defaults.properties".
- */
- private final function setColors() {
-
- $systemColorFile = new PhingFile(Phing::getResourcePath("phing/listener/defaults.properties"));
-
- try {
- $prop = new Properties();
-
- $prop->load($systemColorFile);
-
- $err = $prop->getProperty("HtmlColorLogger.ERROR_CLASS");
- $warn = $prop->getProperty("HtmlColorLogger.WARNING_CLASS");
- $info = $prop->getProperty("HtmlColorLogger.INFO_CLASS");
- $verbose = $prop->getProperty("HtmlColorLogger.VERBOSE_CLASS");
- $debug = $prop->getProperty("HtmlColorLogger.DEBUG_CLASS");
- if ($err !== null) {
- $this->errColor = self::PREFIX . $err . self::SUFFIX;
- }
- if ($warn !== null) {
- $this->warnColor = self::PREFIX . $warn . self::SUFFIX;
- }
- if ($info !== null) {
- $this->infoColor = self::PREFIX . $info . self::SUFFIX;
- }
- if ($verbose !== null) {
- $this->verboseColor = self::PREFIX . $verbose . self::SUFFIX;
- }
- if ($debug !== null) {
- $this->debugColor = self::PREFIX . $debug . self::SUFFIX;
- }
- } catch (IOException $ioe) {
- //Ignore exception - we will use the defaults.
- }
- }
-
- /**
- * @see DefaultLogger#printMessage
- * @param string $message
- * @param OutputStream $stream
- * @param int $priority
- */
- protected final function printMessage($message, OutputStream $stream, $priority) {
- if ($message !== null) {
-
- if (!$this->colorsSet) {
- $this->setColors();
- $this->colorsSet = true;
- }
-
- $search = array('<', '>');
- $replace = array('&lt;', '&gt;');
- $message = str_replace($search, $replace, $message);
-
- $search = array("\t", "\n", "\r");
- $replace = array('&nbsp;&nbsp;&nbsp;', '<br>', '');
- $message = str_replace($search, $replace, $message);
-
- if (preg_match('@^( +)([^ ].+)@', $message, $matches)) {
- $len = strlen($matches[1]);
- $space = '&nbsp;';
- for ($i = 1; $i < $len; $i++) {
- $space .= '&nbsp;';
- }
- $message = $space . $matches[2];
- }
-
- switch ($priority) {
- case Project::MSG_ERR:
- $message = $this->errColor . $message . self::END_COLOR;
- break;
- case Project::MSG_WARN:
- $message = $this->warnColor . $message . self::END_COLOR;
- break;
- case Project::MSG_INFO:
- $message = $this->infoColor . $message . self::END_COLOR;
- break;
- case Project::MSG_VERBOSE:
- $message = $this->verboseColor . $message . self::END_COLOR;
- break;
- case Project::MSG_DEBUG:
- $message = $this->debugColor . $message . self::END_COLOR;
- break;
- }
-
- $stream->write($message . '<br/>');
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/listener/MailLogger.php b/buildscripts/phing/classes/phing/listener/MailLogger.php
deleted file mode 100755
index 344f3de4..00000000
--- a/buildscripts/phing/classes/phing/listener/MailLogger.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/*
- * $Id: bea608bad3f8bd5733c7eac6451d15b1c937115c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/listener/DefaultLogger.php';
-include_once 'phing/system/util/Properties.php';
-
-/**
- * Uses PEAR Mail package to send the build log to one or
- * more recipients.
- *
- * @author Michiel Rook <mrook@php.net>
- * @package phing.listener
- * @version $Id$
- */
-class MailLogger extends DefaultLogger
-{
- private $_mailMessage = "";
-
- private $_from = "phing@phing.info";
- private $_subject = "Phing build result";
- private $_tolist = null;
-
- /**
- * Construct new MailLogger
- */
- public function __construct() {
- parent::__construct();
-
- @require_once 'Mail.php';
-
- if (!class_exists('Mail')) {
- throw new BuildException('Need the PEAR Mail package to send logs');
- }
-
- $from = Phing::getDefinedProperty('phing.log.mail.from');
- $subject = Phing::getDefinedProperty('phing.log.mail.subject');
- $tolist = Phing::getDefinedProperty('phing.log.mail.recipients');
-
- if (!empty($from)) {
- $this->_from = $from;
- }
-
- if (!empty($subject)) {
- $this->_subject = $subject;
- }
-
- if (!empty($tolist)) {
- $this->_tolist = $tolist;
- }
- }
-
- /**
- * @see DefaultLogger#printMessage
- * @param string $message
- * @param OutputStream $stream
- * @param int $priority
- */
- protected final function printMessage($message, OutputStream $stream, $priority)
- {
- if ($message !== null) {
- $this->_mailMessage .= $message . "\n";
- }
- }
-
- /**
- * Sends the mail
- *
- * @see DefaultLogger#buildFinished
- * @param BuildEvent $event
- */
- public function buildFinished(BuildEvent $event)
- {
- parent::buildFinished($event);
-
- if (empty($this->_tolist)) {
- return;
- }
-
- $hdrs = array(
- 'From' => $this->_from,
- 'Subject' => $this->_subject . (empty($event) ? " (build succesful)" : " (build failed)")
- );
-
- $mail = Mail::factory('mail');
- $mail->send($this->_tolist, $hdrs, $this->_mailMessage);
- }
-}
diff --git a/buildscripts/phing/classes/phing/listener/NoBannerLogger.php b/buildscripts/phing/classes/phing/listener/NoBannerLogger.php
deleted file mode 100755
index 887f6678..00000000
--- a/buildscripts/phing/classes/phing/listener/NoBannerLogger.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * $Id: d74783e6edb73c6f11fbb93701f0bb6e7ccf06b1 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/listener/DefaultLogger.php';
-
-/**
- * Extends DefaultLogger to strip out empty targets.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing.listener
- */
-class NoBannerLogger extends DefaultLogger {
-
- private $targetName = null;
-
- function targetStarted(BuildEvent $event) {
- $target = $event->getTarget();
- $this->targetName = $target->getName();
- }
-
- function targetFinished(BuildEvent $event) {
- $this->targetName = null;
- }
-
- function messageLogged(BuildEvent $event) {
-
- if ($event->getPriority() > $this->msgOutputLevel || null === $event->getMessage() || trim($event->getMessage() === "")) {
- return;
- }
-
- if ($this->targetName !== null) {
- $msg = PHP_EOL . $event->getProject()->getName() . ' > ' . $this->targetName . ':' . PHP_EOL;
- $this->printMessage($msg, $this->out, $event->getPriority());
- $this->targetName = null;
- }
-
- parent::messageLogged($event);
- }
-}
diff --git a/buildscripts/phing/classes/phing/listener/PearLogListener.php b/buildscripts/phing/classes/phing/listener/PearLogListener.php
deleted file mode 100755
index 76efdbbb..00000000
--- a/buildscripts/phing/classes/phing/listener/PearLogListener.php
+++ /dev/null
@@ -1,197 +0,0 @@
-<?php
-/*
- * $Id: d2d1a761c30c120a07e419622bcbcb9b5e067c24 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/BuildListener.php';
-
-/**
- * Writes build messages to PEAR Log.
- *
- * By default it will log to file in current directory w/ name 'phing.log'. You can customize
- * this behavior by setting properties:
- * - pear.log.type
- * - pear.log.name
- * - pear.log.ident (note that this class changes ident to project name)
- * - pear.log.conf (note that array values are currently unsupported in Phing property files)
- *
- * <code>
- * phing -f build.xml -logger phing.listener.PearLogger -Dpear.log.type=file -Dpear.log.name=/path/to/log.log
- * </code>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @see BuildEvent
- * @package phing.listener
- */
-class PearLogListener implements BuildListener {
-
- /**
- * Size of the left column in output. The default char width is 12.
- * @var int
- */
- const LEFT_COLUMN_SIZE = 12;
-
- /**
- * Time that the build started
- * @var int
- */
- protected $startTime;
-
- /**
- * Maps Phing Project::MSG_* constants to PEAR_LOG_* constants.
- * @var array
- */
- protected static $levelMap = array( Project::MSG_DEBUG => PEAR_LOG_DEBUG,
- Project::MSG_INFO => PEAR_LOG_INFO,
- Project::MSG_VERBOSE => PEAR_LOG_NOTICE,
- Project::MSG_WARN => PEAR_LOG_WARNING,
- Project::MSG_ERR => PEAR_LOG_ERR
- );
- /**
- * Whether logging has been configured.
- * @var boolean
- */
- protected $logConfigured = false;
-
- /**
- * @var Log PEAR Log object.
- */
- protected $logger;
-
- /**
- * Configure the logger.
- */
- protected function configureLogging() {
-
- $type = Phing::getDefinedProperty('pear.log.type');
- $name = Phing::getDefinedProperty('pear.log.name');
- $ident = Phing::getDefinedProperty('pear.log.ident');
- $conf = Phing::getDefinedProperty('pear.log.conf');
-
- if ($type === null) $type = 'file';
- if ($name === null) $name = 'phing.log';
- if ($ident === null) $ident = 'phing';
- if ($conf === null) $conf = array();
-
- include_once 'Log.php';
- if (!class_exists('Log')) {
- throw new BuildException("Cannot find PEAR Log class for use by PearLogger.");
- }
-
- $this->logger = Log::singleton($type, $name, $ident, $conf, self::$levelMap[$this->msgOutputLevel]);
- }
-
- /**
- * Get the configured PEAR logger to use.
- * This method just ensures that logging has been configured and returns the configured logger.
- * @return Log
- */
- protected function logger() {
- if (!$this->logConfigured) {
- $this->configureLogging();
- }
- return $this->logger;
- }
-
- /**
- * Sets the start-time when the build started. Used for calculating
- * the build-time.
- *
- * @param BuildEvent The BuildEvent
- */
- public function buildStarted(BuildEvent $event) {
- $this->startTime = Phing::currentTimeMillis();
- $this->logger()->setIdent($event->getProject()->getName());
- $this->logger()->info("Starting build with buildfile: ". $event->getProject()->getProperty("phing.file"));
- }
-
- /**
- * Logs whether the build succeeded or failed, and any errors that
- * occured during the build. Also outputs the total build-time.
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getException()
- */
- public function buildFinished(BuildEvent $event) {
- $error = $event->getException();
- if ($error === null) {
- $msg = "Finished successful build.";
- } else {
- $msg = "Build failed. [reason: " . $error->getMessage() ."]";
- }
- $this->logger()->log($msg . " Total time: " . DefaultLogger::formatTime(Phing::currentTimeMillis() - $this->startTime));
- }
-
- /**
- * Logs the current target name
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getTarget()
- */
- public function targetStarted(BuildEvent $event) {}
-
- /**
- * Fired when a target has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param BuildEvent The BuildEvent
- * @access public
- * @see BuildEvent::getException()
- */
- public function targetFinished(BuildEvent $event) {}
-
- /**
- * Fired when a task is started. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param BuildEvent The BuildEvent
- * @access public
- * @see BuildEvent::getTask()
- */
- public function taskStarted(BuildEvent $event) {}
-
- /**
- * Fired when a task has finished. We don't need specific action on this
- * event. So the methods are empty.
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getException()
- */
- public function taskFinished(BuildEvent $event) {}
-
- /**
- * Logs a message to the configured PEAR logger.
- *
- * @param BuildEvent The BuildEvent
- * @see BuildEvent::getMessage()
- */
- public function messageLogged(BuildEvent $event) {
- if ($event->getPriority() <= $this->msgOutputLevel) {
- $msg = "";
- if ($event->getTask() !== null) {
- $name = $event->getTask();
- $name = $name->getTaskName();
- $msg = str_pad("[$name] ", self::LEFT_COLUMN_SIZE, " ", STR_PAD_LEFT);
- }
- $msg .= $event->getMessage();
- $this->logger()->log($msg, self::$levelMap[$event->getPriority()]);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/listener/StreamRequiredBuildLogger.php b/buildscripts/phing/classes/phing/listener/StreamRequiredBuildLogger.php
deleted file mode 100755
index c463a59d..00000000
--- a/buildscripts/phing/classes/phing/listener/StreamRequiredBuildLogger.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * $Id: e0daef8de8e5be892b2eaaa7a42fa5d04ad540b5 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/BuildLogger.php';
-
-/**
- * Interface for build loggers that require that out/err streams be set in order to function.
- *
- * This is just an empty sub-interface to BuildLogger, but is used by Phing to throw
- * graceful errors when classes like phing.listener.DefaultLogger are being used as
- * -listener.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @see BuildEvent
- * @see Project::addBuildListener()
- * @package phing
- */
-interface StreamRequiredBuildLogger extends BuildLogger {
-
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/listener/XmlLogger.php b/buildscripts/phing/classes/phing/listener/XmlLogger.php
deleted file mode 100755
index 25ff0ba2..00000000
--- a/buildscripts/phing/classes/phing/listener/XmlLogger.php
+++ /dev/null
@@ -1,354 +0,0 @@
-<?php
-/**
- * $Id: aaf7d77e9952319b9598d786c556be005d34c188 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/BuildLogger.php';
-require_once 'phing/listener/DefaultLogger.php';
-require_once 'phing/system/util/Timer.php';
-
-/**
- * Generates a file in the current directory with
- * an XML description of what happened during a build.
- * The default filename is "log.xml", but this can be overridden
- * with the property <code>XmlLogger.file</code>.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: aaf7d77e9952319b9598d786c556be005d34c188 $
- * @package phing.listener
- */
-class XmlLogger implements BuildLogger {
-
- /** XML element name for a build. */
- const BUILD_TAG = "build";
-
- /** XML element name for a target. */
- const TARGET_TAG = "target";
-
- /** XML element name for a task. */
- const TASK_TAG = "task";
-
- /** XML element name for a message. */
- const MESSAGE_TAG = "message";
-
- /** XML attribute name for a name. */
- const NAME_ATTR = "name";
-
- /** XML attribute name for a time. */
- const TIME_ATTR = "time";
-
- /** XML attribute name for a message priority. */
- const PRIORITY_ATTR = "priority";
-
- /** XML attribute name for a file location. */
- const LOCATION_ATTR = "location";
-
- /** XML attribute name for an error description. */
- const ERROR_ATTR = "error";
-
- /** XML element name for a stack trace. */
- const STACKTRACE_TAG = "stacktrace";
-
- /**
- * @var DOMDocument The XML document created by this logger.
- */
- private $doc;
-
- /**
- * @var int Start time for entire build.
- */
- private $buildTimerStart = 0;
-
- /**
- * @var DOMElement Top-level (root) build element
- */
- private $buildElement;
-
- /**
- * @var array DOMElement[] The parent of the element being processed.
- */
- private $elementStack = array();
-
- /**
- * @var array int[] Array of millisecond times for the various elements being processed.
- */
- private $timesStack = array();
-
- /**
- * @var int
- */
- private $msgOutputLevel = Project::MSG_DEBUG;
-
- /**
- * @var OutputStream Stream to use for standard output.
- */
- private $out;
-
- /**
- * @var OutputStream Stream to use for error output.
- */
- private $err;
-
- /**
- * @var string Name of filename to create.
- */
- private $outFilename;
-
- /**
- * Constructs a new BuildListener that logs build events to an XML file.
- */
- public function __construct() {
- $this->doc = new DOMDocument("1.0", "UTF-8");
- $this->doc->formatOutput = true;
- }
-
- /**
- * Fired when the build starts, this builds the top-level element for the
- * document and remembers the time of the start of the build.
- *
- * @param BuildEvent Ignored.
- */
- function buildStarted(BuildEvent $event) {
- $this->buildTimerStart = Phing::currentTimeMillis();
- $this->buildElement = $this->doc->createElement(XmlLogger::BUILD_TAG);
- array_push($this->elementStack, $this->buildElement);
- array_push($this->timesStack, $this->buildTimerStart);
- }
-
- /**
- * Fired when the build finishes, this adds the time taken and any
- * error stacktrace to the build element and writes the document to disk.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be <code>null</code>.
- */
- public function buildFinished(BuildEvent $event) {
-
- $elapsedTime = Phing::currentTimeMillis() - $this->buildTimerStart;
-
- $this->buildElement->setAttribute(XmlLogger::TIME_ATTR, DefaultLogger::formatTime($elapsedTime));
-
- if ($event->getException() != null) {
- $this->buildElement->setAttribute(XmlLogger::ERROR_ATTR, $event->getException()->getMessage());
- $errText = $this->doc->createCDATASection($event->getException()->getTraceAsString());
- $stacktrace = $this->doc->createElement(XmlLogger::STACKTRACE_TAG);
- $stacktrace->appendChild($errText);
- $this->buildElement->appendChild($stacktrace);
- }
-
- $this->doc->appendChild($this->buildElement);
-
- $outFilename = $event->getProject()->getProperty("XmlLogger.file");
- if ($outFilename == null) {
- $outFilename = "log.xml";
- }
-
- try {
- $stream = $this->out;
- if ($stream === null) {
- $stream = new FileOutputStream($outFilename);
- }
-
- // Yes, we could just stream->write() but this will eventually be the better
- // way to do this (when we need to worry about charset conversions.
- $writer = new OutputStreamWriter($stream);
- $writer->write($this->doc->saveXML());
- $writer->close();
- } catch (IOException $exc) {
- try {
- $stream->close(); // in case there is a stream open still ...
- } catch (Exception $x) {}
- throw new BuildException("Unable to write log file.", $exc);
- }
-
- // cleanup:remove the buildElement
- $this->buildElement = null;
-
- array_pop($this->elementStack);
- array_pop($this->timesStack);
- }
-
-
- /**
- * Fired when a target starts building, remembers the current time and the name of the target.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be <code>null</code>.
- */
- public function targetStarted(BuildEvent $event) {
- $target = $event->getTarget();
-
- $targetElement = $this->doc->createElement(XmlLogger::TARGET_TAG);
- $targetElement->setAttribute(XmlLogger::NAME_ATTR, $target->getName());
-
- array_push($this->timesStack, Phing::currentTimeMillis());
- array_push($this->elementStack, $targetElement);
- }
-
- /**
- * Fired when a target finishes building, this adds the time taken
- * to the appropriate target element in the log.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be <code>null</code>.
- */
- public function targetFinished(BuildEvent $event) {
- $targetTimerStart = array_pop($this->timesStack);
- $targetElement = array_pop($this->elementStack);
-
- $elapsedTime = Phing::currentTimeMillis() - $targetTimerStart;
- $targetElement->setAttribute(XmlLogger::TIME_ATTR, DefaultLogger::formatTime($elapsedTime));
-
- $parentElement = $this->elementStack[ count($this->elementStack) - 1 ];
- $parentElement->appendChild($targetElement);
- }
-
- /**
- * Fired when a task starts building, remembers the current time and the name of the task.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be <code>null</code>.
- */
- public function taskStarted(BuildEvent $event) {
- $task = $event->getTask();
-
- $taskElement = $this->doc->createElement(XmlLogger::TASK_TAG);
- $taskElement->setAttribute(XmlLogger::NAME_ATTR, $task->getTaskName());
- $taskElement->setAttribute(XmlLogger::LOCATION_ATTR, $task->getLocation()->toString());
-
- array_push($this->timesStack, Phing::currentTimeMillis());
- array_push($this->elementStack, $taskElement);
- }
-
- /**
- * Fired when a task finishes building, this adds the time taken
- * to the appropriate task element in the log.
- *
- * @param BuildEvent $event An event with any relevant extra information.
- * Will not be <code>null</code>.
- */
- public function taskFinished(BuildEvent $event) {
- $taskTimerStart = array_pop($this->timesStack);
- $taskElement = array_pop($this->elementStack);
-
- $elapsedTime = Phing::currentTimeMillis() - $taskTimerStart;
- $taskElement->setAttribute(XmlLogger::TIME_ATTR, DefaultLogger::formatTime($elapsedTime));
-
- $parentElement = $this->elementStack[ count($this->elementStack) - 1 ];
- $parentElement->appendChild($taskElement);
- }
-
- /**
- * Fired when a message is logged, this adds a message element to the
- * most appropriate parent element (task, target or build) and records
- * the priority and text of the message.
- *
- * @param BuildEvent An event with any relevant extra information.
- * Will not be <code>null</code>.
- */
- public function messageLogged(BuildEvent $event)
- {
- $priority = $event->getPriority();
-
- if ($priority > $this->msgOutputLevel) {
- return;
- }
-
- $messageElement = $this->doc->createElement(XmlLogger::MESSAGE_TAG);
-
- switch ($priority) {
- case Project::MSG_ERR:
- $name = "error";
- break;
- case Project::MSG_WARN:
- $name = "warn";
- break;
- case Project::MSG_INFO:
- $name = "info";
- break;
- default:
- $name = "debug";
- break;
- }
-
- $messageElement->setAttribute(XmlLogger::PRIORITY_ATTR, $name);
-
- if (function_exists('mb_convert_encoding'))
- {
- $messageConverted = mb_convert_encoding($event->getMessage(), 'UTF-8');
- }
- else
- {
- $messageConverted = utf8_encode($event->getMessage());
- }
-
- $messageText = $this->doc->createCDATASection($messageConverted);
-
- $messageElement->appendChild($messageText);
-
- if (!empty($this->elementStack)) {
- $this->elementStack[count($this->elementStack)-1]->appendChild($messageElement);
- }
- }
-
- /**
- * Set the msgOutputLevel this logger is to respond to.
- *
- * Only messages with a message level lower than or equal to the given
- * level are output to the log.
- *
- * <p> Constants for the message levels are in Project.php. The order of
- * the levels, from least to most verbose, is:
- *
- * <ul>
- * <li>Project::MSG_ERR</li>
- * <li>Project::MSG_WARN</li>
- * <li>Project::MSG_INFO</li>
- * <li>Project::MSG_VERBOSE</li>
- * <li>Project::MSG_DEBUG</li>
- * </ul>
- *
- * The default message level for DefaultLogger is Project::MSG_ERR.
- *
- * @param int $level The logging level for the logger.
- * @see BuildLogger#setMessageOutputLevel()
- */
- public function setMessageOutputLevel($level) {
- $this->msgOutputLevel = (int) $level;
- }
-
- /**
- * Sets the output stream.
- * @param OutputStream $output
- * @see BuildLogger#setOutputStream()
- */
- public function setOutputStream(OutputStream $output) {
- $this->out = $output;
- }
-
- /**
- * Sets the error stream.
- * @param OutputStream $err
- * @see BuildLogger#setErrorStream()
- */
- public function setErrorStream(OutputStream $err) {
- $this->err = $err;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/listener/defaults.properties b/buildscripts/phing/classes/phing/listener/defaults.properties
deleted file mode 100644
index 4a4dec68..00000000
--- a/buildscripts/phing/classes/phing/listener/defaults.properties
+++ /dev/null
@@ -1,43 +0,0 @@
-####################################################
-#
-# ANSI COLOR LOGGER CONFIGURATION
-#
-# Format for AnsiColorLogger.*=
-# Attribute;Foreground;Background
-#
-# Attribute is one of the following:
-# 0 -> Reset All Attributes (return to normal mode)
-# 1 -> Bright (Usually turns on BOLD)
-# 2 -> Dim
-# 3 -> Underline
-# 5 -> link
-# 7 -> Reverse
-# 8 -> Hidden
-#
-# Foreground is one of the following:
-# 30 -> Black
-# 31 -> Red
-# 32 -> Green
-# 33 -> Yellow
-# 34 -> Blue
-# 35 -> Magenta
-# 36 -> Cyan
-# 37 -> White
-#
-# Background is one of the following:
-# 40 -> Black
-# 41 -> Red
-# 42 -> Green
-# 43 -> Yellow
-# 44 -> Blue
-# 45 -> Magenta
-# 46 -> Cyan
-# 47 -> White
-#
-####################################################
-
-AnsiColorLogger.ERROR_COLOR=01;31
-AnsiColorLogger.WARNING_COLOR=01;35
-AnsiColorLogger.INFO_COLOR=00;36
-AnsiColorLogger.VERBOSE_COLOR=00;32
-AnsiColorLogger.DEBUG_COLOR=01;34
diff --git a/buildscripts/phing/classes/phing/mappers/FileNameMapper.php b/buildscripts/phing/classes/phing/mappers/FileNameMapper.php
deleted file mode 100755
index f4306b4c..00000000
--- a/buildscripts/phing/classes/phing/mappers/FileNameMapper.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * $Id: 24c9367363b11f9ab97509532739bf2353023034 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Interface for filename mapper classes.
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.mappers
- */
-interface FileNameMapper {
-
- /**
- * The mapper implementation.
- *
- * @param mixed $sourceFileName The data the mapper works on.
- * @return array The data after the mapper has been applied; must be in array format (for some reason).
- */
- public function main($sourceFileName);
-
- /**
- * Accessor. Sets the to property. The actual implementation
- * depends on the child class.
- *
- * @param string $to To what this mapper should convert the from string
- * @return void
- */
- public function setTo($to);
-
- /**
- * Accessor. Sets the from property. What this mapper should
- * recognize. The actual implementation is dependent upon the
- * child class
- *
- * @param string $from On what this mapper should work
- * @return void
- */
- public function setFrom($from);
-
-}
diff --git a/buildscripts/phing/classes/phing/mappers/FlattenMapper.php b/buildscripts/phing/classes/phing/mappers/FlattenMapper.php
deleted file mode 100755
index 55ed4113..00000000
--- a/buildscripts/phing/classes/phing/mappers/FlattenMapper.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/*
- * $Id: c18f079545fa2c53e9a129ec1dcf32447b597c09 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/mappers/FileNameMapper.php';
-
-/**
- * Removes any directory information from the passed path.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @version $Id$
- * @package phing.mappers
- */
-class FlattenMapper implements FileNameMapper {
-
- /**
- * The mapper implementation. Returns string with source filename
- * but without leading directory information
- *
- * @param string $sourceFileName The data the mapper works on
- * @return array The data after the mapper has been applied
- */
- function main($sourceFileName) {
- $f = new PhingFile($sourceFileName);
- return array($f->getName());
- }
-
- /**
- * Ignored here.
- */
- function setTo($to) {}
-
- /**
- * Ignored here.
- */
- function setFrom($from) {}
-
-}
diff --git a/buildscripts/phing/classes/phing/mappers/GlobMapper.php b/buildscripts/phing/classes/phing/mappers/GlobMapper.php
deleted file mode 100755
index 79df94d6..00000000
--- a/buildscripts/phing/classes/phing/mappers/GlobMapper.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/*
- * $Id: 464f98975210eee84faed74ef4a53c83d23aa079 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/mappers/FileNameMapper.php';
-
-/**
- * description here
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id$
- * @package phing.mappers
- */
-class GlobMapper implements FileNameMapper {
-
- /**
- * Part of &quot;from&quot; pattern before the *.
- */
- private $fromPrefix = null;
-
- /**
- * Part of &quot;from&quot; pattern after the *.
- */
- private $fromPostfix = null;
-
- /**
- * Length of the prefix (&quot;from&quot; pattern).
- */
- private $prefixLength;
-
- /**
- * Length of the postfix (&quot;from&quot; pattern).
- */
- private $postfixLength;
-
- /**
- * Part of &quot;to&quot; pattern before the *.
- */
- private $toPrefix = null;
-
- /**
- * Part of &quot;to&quot; pattern after the *.
- */
- private $toPostfix = null;
-
-
- function main($_sourceFileName) {
- if (($this->fromPrefix === null)
- || !StringHelper::startsWith($this->fromPrefix, $_sourceFileName)
- || !StringHelper::endsWith($this->fromPostfix, $_sourceFileName)) {
- return null;
- }
- $varpart = $this->_extractVariablePart($_sourceFileName);
- $substitution = $this->toPrefix.$varpart.$this->toPostfix;
- return array($substitution);
- }
-
-
-
- function setFrom($from) {
- $index = strrpos($from, '*');
-
- if ($index === false) {
- $this->fromPrefix = $from;
- $this->fromPostfix = "";
- } else {
- $this->fromPrefix = substr($from, 0, $index);
- $this->fromPostfix = substr($from, $index+1);
- }
- $this->prefixLength = strlen($this->fromPrefix);
- $this->postfixLength = strlen($this->fromPostfix);
- }
-
- /**
- * Sets the &quot;to&quot; pattern. Required.
- */
- function setTo($to) {
- $index = strrpos($to, '*');
- if ($index === false) {
- $this->toPrefix = $to;
- $this->toPostfix = "";
- } else {
- $this->toPrefix = substr($to, 0, $index);
- $this->toPostfix = substr($to, $index+1);
- }
- }
-
- private function _extractVariablePart($_name) {
- // ergh, i really hate php's string functions .... all but natural
- $start = ($this->prefixLength === 0) ? 0 : $this->prefixLength;
- $end = ($this->postfixLength === 0) ? strlen($_name) : strlen($_name) - $this->postfixLength;
- $len = $end-$start;
- return substr($_name, $start, $len);
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/mappers/IdentityMapper.php b/buildscripts/phing/classes/phing/mappers/IdentityMapper.php
deleted file mode 100755
index e608a71d..00000000
--- a/buildscripts/phing/classes/phing/mappers/IdentityMapper.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/*
- * $Id: aa11e8f44255c1b191df3230336c57664daf5f4f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/mappers/FileNameMapper.php';
-
-/**
- * This mapper does nothing ;)
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.mappers
- */
-class IdentityMapper implements FileNameMapper {
-
- /**
- * The mapper implementation. Basically does nothing in this case.
- *
- * @param string $sourceFileName The data the mapper works on.
- * @return array The data after the mapper has been applied
- */
- function main($sourceFileName) {
- return array($sourceFileName);
- }
-
- /**
- * Ignored here.
- */
- function setTo($to) {}
-
- /**
- * Ignored here.
- */
- function setFrom($from) {}
-
-}
diff --git a/buildscripts/phing/classes/phing/mappers/MergeMapper.php b/buildscripts/phing/classes/phing/mappers/MergeMapper.php
deleted file mode 100755
index dc60ab34..00000000
--- a/buildscripts/phing/classes/phing/mappers/MergeMapper.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/*
- * $Id: 9f014a901932e99fd50820d3f3a78387929f06ee $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/mappers/FileNameMapper.php';
-
-/**
- * For merging files into a single file. In practice just returns whatever value
- * was set for "to".
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @version $Id$
- * @package phing.mappers
- */
-class MergeMapper implements FileNameMapper {
-
- /** the merge */
- private $mergedFile;
-
- /**
- * The mapper implementation. Basically does nothing in this case.
- *
- * @param mixed The data the mapper works on
- * @return mixed The data after the mapper has been applied
- * @access public
- * @author Andreas Aderhold, andi@binarycloud.com
- */
- function main($sourceFileName) {
- if ($this->mergedFile === null) {
- throw new BuildException("MergeMapper error, to attribute not set");
- }
- return array($this->mergedFile);
- }
-
- /**
- * Accessor. Sets the to property
- *
- * @param string To what this mapper should convert the from string
- * @return boolean True
- * @access public
- * @author Andreas Aderhold, andi@binarycloud.com
- */
- function setTo($to) {
- $this->mergedFile = $to;
- }
-
- /**
- * Ignored.
- */
- function setFrom($from) {}
-
-}
diff --git a/buildscripts/phing/classes/phing/mappers/RegexpMapper.php b/buildscripts/phing/classes/phing/mappers/RegexpMapper.php
deleted file mode 100755
index ca387241..00000000
--- a/buildscripts/phing/classes/phing/mappers/RegexpMapper.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/*
- * $Id: 96aee1ffd32ba919d42e1141129068006e709976 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/mappers/FileNameMapper.php';
-include_once 'phing/util/StringHelper.php';
-include_once 'phing/util/regexp/Regexp.php';
-
-/**
- * Uses regular expressions to perform filename transformations.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@velum.net>
- * @version $Id$
- * @package phing.mappers
- */
-class RegexpMapper implements FileNameMapper {
-
- /**
- * @var string
- */
- private $to;
-
- /**
- * The Regexp engine.
- * @var Regexp
- */
- private $reg;
-
- function __construct() {
- // instantiage regexp matcher here
- $this->reg = new Regexp();
- }
-
- /**
- * Sets the &quot;from&quot; pattern. Required.
- */
- function setFrom($from) {
- $this->reg->SetPattern($from);
- }
-
- /**
- * Sets the &quot;to&quot; pattern. Required.
- */
- function setTo($to) {
-
- // [HL] I'm changing the way this works for now to just use string
- //$this->to = StringHelper::toCharArray($to);
-
- $this->to = $to;
- }
-
- function main($sourceFileName) {
- if ($this->reg === null || $this->to === null || !$this->reg->matches((string) $sourceFileName)) {
- return null;
- }
- return array($this->replaceReferences($sourceFileName));
- }
-
- /**
- * Replace all backreferences in the to pattern with the matched groups.
- * groups of the source.
- * @param string $source The source filename.
- */
- private function replaceReferences($source) {
-
- // FIXME
- // Can't we just use engine->replace() to handle this? the Preg engine
- // will automatically convert \1 references to $1
-
- // the expression has already been processed (when ->matches() was run in Main())
- // so no need to pass $source again to the engine.
- $groups = (array) $this->reg->getGroups();
-
- // replace \1 with value of $groups[1] and return the modified "to" string
- return preg_replace('/\\\([\d]+)/e', "\$groups[$1]", $this->to);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/parser/AbstractHandler.php b/buildscripts/phing/classes/phing/parser/AbstractHandler.php
deleted file mode 100755
index 1837bbbf..00000000
--- a/buildscripts/phing/classes/phing/parser/AbstractHandler.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-/*
- * $Id: 3d81ac2784333ce8108cf32818b8dfc335993507 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/parser/ExpatParseException.php';
-
-/**
- * This is an abstract class all SAX handler classes must extend
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing.parser
- */
-abstract class AbstractHandler {
-
- public $parentHandler = null;
- public $parser = null;
-
- /**
- * Constructs a SAX handler parser.
- *
- * The constructor must be called by all derived classes.
- *
- * @param object the parser object
- * @param object the parent handler of this handler
- */
- protected function __construct($parser, $parentHandler) {
- $this->parentHandler = $parentHandler;
- $this->parser = $parser;
- $this->parser->setHandler($this);
- }
-
- /**
- * Gets invoked when a XML open tag occurs
- *
- * Must be overloaded by the child class. Throws an ExpatParseException
- * if there is no handler registered for an element.
- *
- * @param string the name of the XML element
- * @param array the attributes of the XML element
- */
- public function startElement($name, $attribs) {
- throw new ExpatParseException("Unexpected element $name");
- }
-
- /**
- * Gets invoked when element closes method.
- *
- */
- protected function finished() {}
-
- /**
- * Gets invoked when a XML element ends.
- *
- * Can be overloaded by the child class. But should not. It hands
- * over control to the parentHandler of this.
- *
- * @param string the name of the XML element
- */
- public function endElement($name) {
- $this->finished();
- $this->parser->setHandler($this->parentHandler);
- }
-
- /**
- * Invoked by occurance of #PCDATA.
- *
- * @param string the name of the XML element
- * @exception ExpatParserException if there is no CDATA but method
- * was called
- * @access public
- */
- public function characters($data) {
- $s = trim($data);
- if (strlen($s) > 0) {
- throw new ExpatParseException("Unexpected text '$s'", $this->parser->getLocation());
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/parser/AbstractSAXParser.php b/buildscripts/phing/classes/phing/parser/AbstractSAXParser.php
deleted file mode 100755
index 449386e7..00000000
--- a/buildscripts/phing/classes/phing/parser/AbstractSAXParser.php
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php
-/*
- * $Id: 948cef29e65fb684d99cbddc7c633183740a91a8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * The abstract SAX parser class.
- *
- * This class represents a SAX parser. It is a abstract calss that must be
- * implemented by the real parser that must extend this class
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing.parser
- */
-abstract class AbstractSAXParser {
-
- /** The AbstractHandler object. */
- protected $handler;
-
- /**
- * Constructs a SAX parser
- */
- function __construct() {}
-
- /**
- * Sets options for PHP interal parser. Must be implemented by the parser
- * class if it should be used.
- */
- abstract function parserSetOption($opt, $val);
-
- /**
- * Sets the current element handler object for this parser. Usually this
- * is an object using extending "AbstractHandler".
- *
- * @param AbstractHandler $obj The handler object.
- */
- function setHandler( $obj) {
- $this->handler = $obj;
- }
-
- /**
- * Method that gets invoked when the parser runs over a XML start element.
- *
- * This method is called by PHP's internal parser functions and registered
- * in the actual parser implementation.
- * It gives control to the current active handler object by calling the
- * <code>startElement()</code> method.
- *
- * @param object the php's internal parser handle
- * @param string the open tag name
- * @param array the tag's attributes if any
- * @throws Exception - Exceptions may be thrown by the Handler
- */
- function startElement($parser, $name, $attribs) {
- $this->handler->startElement($name, $attribs);
- }
-
- /**
- * Method that gets invoked when the parser runs over a XML close element.
- *
- * This method is called by PHP's internal parser funcitons and registered
- * in the actual parser implementation.
- *
- * It gives control to the current active handler object by calling the
- * <code>endElement()</code> method.
- *
- * @param object the php's internal parser handle
- * @param string the closing tag name
- * @throws Exception - Exceptions may be thrown by the Handler
- */
- function endElement($parser, $name) {
- $this->handler->endElement($name);
- }
-
- /**
- * Method that gets invoked when the parser runs over CDATA.
- *
- * This method is called by PHP's internal parser functions and registered
- * in the actual parser implementation.
- *
- * It gives control to the current active handler object by calling the
- * <code>characters()</code> method. That processes the given CDATA.
- *
- * @param resource $parser php's internal parser handle.
- * @param string $data the CDATA
- * @throws Exception - Exceptions may be thrown by the Handler
- */
- function characters($parser, $data) {
- $this->handler->characters($data);
- }
-
- /**
- * Entrypoint for parser. This method needs to be implemented by the
- * child classt that utilizes the concrete parser
- */
- abstract function parse();
-}
diff --git a/buildscripts/phing/classes/phing/parser/DataTypeHandler.php b/buildscripts/phing/classes/phing/parser/DataTypeHandler.php
deleted file mode 100755
index 7531baaf..00000000
--- a/buildscripts/phing/classes/phing/parser/DataTypeHandler.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/*
- * $Id: dbae47cfbf1ad4a3ac68909118f69175cf1d45f4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/RuntimeConfigurable.php';
-
-/**
- * Configures a Project (complete with Targets and Tasks) based on
- * a XML build file.
- * <p>
- * Design/ZE2 migration note:
- * If PHP would support nested classes. All the phing/parser/*Filter
- * classes would be nested within this class
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.parser
- */
-
-class DataTypeHandler extends AbstractHandler {
-
- private $target;
- private $element;
- private $wrapper;
-
- /**
- * Constructs a new DataTypeHandler and sets up everything.
- *
- * @param AbstractSAXParser $parser The XML parser (default: ExpatParser)
- * @param AbstractHandler $parentHandler The parent handler that invoked this handler.
- * @param ProjectConfigurator $configurator The ProjectConfigurator object
- * @param Target $target The target object this datatype is contained in (null for top-level datatypes).
- */
- function __construct(AbstractSAXParser $parser, AbstractHandler $parentHandler, ProjectConfigurator $configurator, $target = null) { // FIXME b2 typehinting
- parent::__construct($parser, $parentHandler);
- $this->target = $target;
- $this->configurator = $configurator;
- }
-
- /**
- * Executes initialization actions required to setup the data structures
- * related to the tag.
- * <p>
- * This includes:
- * <ul>
- * <li>creation of the datatype object</li>
- * <li>calling the setters for attributes</li>
- * <li>adding the type to the target object if any</li>
- * <li>adding a reference to the task (if id attribute is given)</li>
- * </ul>
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @throws ExpatParseException if attributes are incomplete or invalid
- * @access public
- */
- function init($propType, $attrs) {
- // shorthands
- $project = $this->configurator->project;
- $configurator = $this->configurator;
-
- try {//try
- $this->element = $project->createDataType($propType);
-
- if ($this->element === null) {
- throw new BuildException("Unknown data type $propType");
- }
-
- if ($this->target !== null) {
- $this->wrapper = new RuntimeConfigurable($this->element, $propType);
- $this->wrapper->setAttributes($attrs);
- $this->target->addDataType($this->wrapper);
- } else {
- $configurator->configure($this->element, $attrs, $project);
- $configurator->configureId($this->element, $attrs);
- }
-
- } catch (BuildException $exc) {
- throw new ExpatParseException($exc, $this->parser->getLocation());
- }
- }
-
- /**
- * Handles character data.
- *
- * @param string the CDATA that comes in
- * @access public
- */
- function characters($data) {
- $project = $this->configurator->project;
- try {//try
- $this->configurator->addText($project, $this->element, $data);
- } catch (BuildException $exc) {
- throw new ExpatParseException($exc->getMessage(), $this->parser->getLocation());
- }
- }
-
- /**
- * Checks for nested tags within the current one. Creates and calls
- * handlers respectively.
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @access public
- */
- function startElement($name, $attrs) {
- $nef = new NestedElementHandler($this->parser, $this, $this->configurator, $this->element, $this->wrapper, $this->target);
- $nef->init($name, $attrs);
- }
-
- /**
- * Overrides endElement for data types. Tells the type
- * handler that processing the element had been finished so
- * handlers know they can perform actions that need to be
- * based on the data contained within the element.
- *
- * @param string the name of the XML element
- * @return void
- */
- function endElement($name) {
- $this->element->parsingComplete();
- parent::endElement($name);
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/parser/ExpatParseException.php b/buildscripts/phing/classes/phing/parser/ExpatParseException.php
deleted file mode 100755
index 65461576..00000000
--- a/buildscripts/phing/classes/phing/parser/ExpatParseException.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/*
- * $Id: c384bde6ba2bb6902b1f943e35afd9f8b5d4efd8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/BuildException.php';
-
-/**
- * This class throws errors for Expat, the XML processor.
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id$
- * @package phing.parser
- */
-class ExpatParseException extends BuildException {}
diff --git a/buildscripts/phing/classes/phing/parser/ExpatParser.php b/buildscripts/phing/classes/phing/parser/ExpatParser.php
deleted file mode 100755
index ef5348e5..00000000
--- a/buildscripts/phing/classes/phing/parser/ExpatParser.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-/*
- * $Id: 0363c59b524447dc74014b03d913fa5a25ada33a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/parser/AbstractSAXParser.php';
-include_once 'phing/parser/ExpatParseException.php';
-include_once 'phing/system/io/IOException.php';
-include_once 'phing/system/io/FileReader.php';
-
-/**
- * This class is a wrapper for the PHP's internal expat parser.
- *
- * It takes an XML file represented by a abstract path name, and starts
- * parsing the file and calling the different "trap" methods inherited from
- * the AbstractParser class.
- *
- * Those methods then invoke the represenatative methods in the registered
- * handler classes.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.parser
- */
-
-class ExpatParser extends AbstractSAXParser {
-
- /** @var resource */
- private $parser;
-
- /** @var Reader */
- private $reader;
-
- private $file;
-
- private $buffer = 4096;
-
- private $error_string = "";
-
- private $line = 0;
-
- /** @var Location Current cursor pos in XML file. */
- private $location;
-
- /**
- * Constructs a new ExpatParser object.
- *
- * The constructor accepts a PhingFile object that represents the filename
- * for the file to be parsed. It sets up php's internal expat parser
- * and options.
- *
- * @param Reader $reader The Reader Object that is to be read from.
- * @param string $filename Filename to read.
- * @throws Exception if the given argument is not a PhingFile object
- */
- function __construct(Reader $reader, $filename=null) {
-
- $this->reader = $reader;
- if ($filename !== null) {
- $this->file = new PhingFile($filename);
- }
- $this->parser = xml_parser_create();
- $this->buffer = 4096;
- $this->location = new Location();
- xml_set_object($this->parser, $this);
- xml_set_element_handler($this->parser, array($this,"startElement"),array($this,"endElement"));
- xml_set_character_data_handler($this->parser, array($this, "characters"));
- }
-
- /**
- * Override PHP's parser default settings, created in the constructor.
- *
- * @param string the option to set
- * @throws mixed the value to set
- * @return boolean true if the option could be set, otherwise false
- * @access public
- */
- function parserSetOption($opt, $val) {
- return xml_parser_set_option($this->parser, $opt, $val);
- }
-
- /**
- * Returns the location object of the current parsed element. It describes
- * the location of the element within the XML file (line, char)
- *
- * @return object the location of the current parser
- * @access public
- */
- function getLocation() {
- if ($this->file !== null) {
- $path = $this->file->getAbsolutePath();
- } else {
- $path = $this->reader->getResource();
- }
- $this->location = new Location($path, xml_get_current_line_number($this->parser), xml_get_current_column_number($this->parser));
- return $this->location;
- }
-
- /**
- * Starts the parsing process.
- *
- * @param string the option to set
- * @return int 1 if the parsing succeeded
- * @throws ExpatParseException if something gone wrong during parsing
- * @throws IOException if XML file can not be accessed
- * @access public
- */
- function parse() {
-
- while ( ($data = $this->reader->read()) !== -1 ) {
- if (!xml_parse($this->parser, $data, $this->reader->eof())) {
- $error = xml_error_string(xml_get_error_code($this->parser));
- $e = new ExpatParseException($error, $this->getLocation());
- xml_parser_free($this->parser);
- throw $e;
- }
- }
- xml_parser_free($this->parser);
-
- return 1;
- }
-}
diff --git a/buildscripts/phing/classes/phing/parser/Location.php b/buildscripts/phing/classes/phing/parser/Location.php
deleted file mode 100755
index 4110bd00..00000000
--- a/buildscripts/phing/classes/phing/parser/Location.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/*
- * $Id: ffb9bc98eef0f4e535f60388d52b7495c539f682 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Stores the file name and line number of a XML file
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.parser
- */
-
-class Location {
-
- private $fileName;
- private $lineNumber;
- private $columnNumber;
-
- /**
- * Constructs the location consisting of a file name and line number
- *
- * @param string the filename
- * @param integer the line number
- * @param integer the column number
- * @access public
- */
- function Location($fileName = null, $lineNumber = null, $columnNumber = null) {
- $this->fileName = $fileName;
- $this->lineNumber = $lineNumber;
- $this->columnNumber = $columnNumber;
- }
-
- /**
- * Returns the file name, line number and a trailing space.
- *
- * An error message can be appended easily. For unknown locations,
- * returns empty string.
- *
- * @return string the string representation of this Location object
- * @access public
- */
- function toString() {
- $buf = "";
- if ($this->fileName !== null) {
- $buf.=$this->fileName;
- if ($this->lineNumber !== null) {
- $buf.= ":".$this->lineNumber;
- }
- $buf.=":".$this->columnNumber;
- }
- return (string) $buf;
- }
-
- function __toString () {
- return $this->toString();
- }
-}
diff --git a/buildscripts/phing/classes/phing/parser/NestedElementHandler.php b/buildscripts/phing/classes/phing/parser/NestedElementHandler.php
deleted file mode 100755
index 15d0e173..00000000
--- a/buildscripts/phing/classes/phing/parser/NestedElementHandler.php
+++ /dev/null
@@ -1,186 +0,0 @@
-<?php
-/*
- * $Id: 94cdf9380aea8a52cb09663489c2d2c5e28740aa $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/IntrospectionHelper.php';
-include_once 'phing/TaskContainer.php';
-
-/**
- * The nested element handler class.
- *
- * This class handles the occurance of runtime registered tags like
- * datatypes (fileset, patternset, etc) and it's possible nested tags. It
- * introspects the implementation of the class and sets up the data structures.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.parser
- */
-
-class NestedElementHandler extends AbstractHandler {
-
- /**
- * Reference to the parent object that represents the parent tag
- * of this nested element
- * @var object
- */
- private $parent;
-
- /**
- * Reference to the child object that represents the child tag
- * of this nested element
- * @var object
- */
- private $child;
-
- /**
- * Reference to the parent wrapper object
- * @var object
- */
- private $parentWrapper;
-
- /**
- * Reference to the child wrapper object
- * @var object
- */
- private $childWrapper;
-
- /**
- * Reference to the related target object
- * @var object the target instance
- */
- private $target;
-
- /**
- * Constructs a new NestedElement handler and sets up everything.
- *
- * @param object the ExpatParser object
- * @param object the parent handler that invoked this handler
- * @param object the ProjectConfigurator object
- * @param object the parent object this element is contained in
- * @param object the parent wrapper object
- * @param object the target object this task is contained in
- * @access public
- */
- function __construct($parser, $parentHandler, $configurator, $parent, $parentWrapper, $target) {
- parent::__construct($parser, $parentHandler);
- $this->configurator = $configurator;
- if ($parent instanceof TaskAdapter) {
- $this->parent = $parent->getProxy();
- } else {
- $this->parent = $parent;
- }
- $this->parentWrapper = $parentWrapper;
- $this->target = $target;
- }
-
- /**
- * Executes initialization actions required to setup the data structures
- * related to the tag.
- * <p>
- * This includes:
- * <ul>
- * <li>creation of the nested element</li>
- * <li>calling the setters for attributes</li>
- * <li>adding the element to the container object</li>
- * <li>adding a reference to the element (if id attribute is given)</li>
- * </ul>
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @throws ExpatParseException if the setup process fails
- * @access public
- */
- function init($propType, $attrs) {
- $configurator = $this->configurator;
- $project = $this->configurator->project;
-
- // introspect the parent class that is custom
- $parentClass = get_class($this->parent);
- $ih = IntrospectionHelper::getHelper($parentClass);
- try {
- if ($this->parent instanceof UnknownElement) {
- $this->child = new UnknownElement(strtolower($propType));
- $this->parent->addChild($this->child);
- } else {
- $this->child = $ih->createElement($project, $this->parent, strtolower($propType));
- }
-
- $configurator->configureId($this->child, $attrs);
-
- if ($this->parentWrapper !== null) {
- $this->childWrapper = new RuntimeConfigurable($this->child, $propType);
- $this->childWrapper->setAttributes($attrs);
- $this->parentWrapper->addChild($this->childWrapper);
- } else {
- $configurator->configure($this->child, $attrs, $project);
- $ih->storeElement($project, $this->parent, $this->child, strtolower($propType));
- }
- } catch (BuildException $exc) {
- throw new ExpatParseException("Error initializing nested element <$propType>", $exc, $this->parser->getLocation());
- }
- }
-
- /**
- * Handles character data.
- *
- * @param string the CDATA that comes in
- * @throws ExpatParseException if the CDATA could not be set-up properly
- * @access public
- */
- function characters($data) {
-
- $configurator = $this->configurator;
- $project = $this->configurator->project;
-
- if ($this->parentWrapper === null) {
- try {
- $configurator->addText($project, $this->child, $data);
- } catch (BuildException $exc) {
- throw new ExpatParseException($exc->getMessage(), $this->parser->getLocation());
- }
- } else {
- $this->childWrapper->addText($data);
- }
- }
-
- /**
- * Checks for nested tags within the current one. Creates and calls
- * handlers respectively.
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @access public
- */
- function startElement($name, $attrs) {
- //print(get_class($this) . " name = $name, attrs = " . implode(",",$attrs) . "\n");
- if ($this->child instanceof TaskContainer) {
- // taskcontainer nested element can contain other tasks - no other
- // nested elements possible
- $tc = new TaskHandler($this->parser, $this, $this->configurator, $this->child, $this->childWrapper, $this->target);
- $tc->init($name, $attrs);
- } else {
- $neh = new NestedElementHandler($this->parser, $this, $this->configurator, $this->child, $this->childWrapper, $this->target);
- $neh->init($name, $attrs);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/parser/PhingXMLContext.php b/buildscripts/phing/classes/phing/parser/PhingXMLContext.php
deleted file mode 100755
index 0e2dd0f4..00000000
--- a/buildscripts/phing/classes/phing/parser/PhingXMLContext.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/*
- * $Id: bfc85569ff437f8ee382c9dee6fc8eb55ecb9839 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Track the current state of the Xml parse operation.
- *
- * @author Bryan Davis <bpd@keynetics.com>
- * @version $Id$
- * @access public
- * @package phing.parser
- */
-class PhingXMLContext {
-
- /**
- * Constructor
- * @param $project the project to which this antxml context belongs to
- */
- public function __construct ($project) {
- $this->project = $project;
- }
-
- /** The project to configure. */
- private $project;
-
- private $configurators = array();
-
- public function startConfigure ($cfg) {
- $this->configurators[] = $cfg;
- }
-
- public function endConfigure () {
- array_pop($this->configurators);
- }
-
- public function getConfigurator () {
- $l = count($this->configurators);
- if (0 == $l) {
- return null;
- } else {
- return $this->configurators[$l - 1];
- }
- }
-
- /** Impoerted files */
- private $importStack = array();
-
- public function addImport ($file) {
- $this->importStack[] = $file;
- }
-
- public function getImportStack () {
- return $this->importStack;
- }
-
- /**
- * find out the project to which this context belongs
- * @return project
- */
- public function getProject() {
- return $this->project;
- }
-
-} //end PhingXMLContext
diff --git a/buildscripts/phing/classes/phing/parser/ProjectConfigurator.php b/buildscripts/phing/classes/phing/parser/ProjectConfigurator.php
deleted file mode 100755
index 90471336..00000000
--- a/buildscripts/phing/classes/phing/parser/ProjectConfigurator.php
+++ /dev/null
@@ -1,387 +0,0 @@
-<?php
-/*
- * $Id: ae9b63bef4c1423d88bb36ddfc5196763828123e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/BufferedReader.php';
-include_once 'phing/system/io/FileReader.php';
-include_once 'phing/BuildException.php';
-include_once 'phing/system/lang/FileNotFoundException.php';
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/parser/PhingXMLContext.php';
-include_once 'phing/IntrospectionHelper.php';
-
-/**
- * The datatype handler class.
- *
- * This class handles the occurance of registered datatype tags like
- * FileSet
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id: ae9b63bef4c1423d88bb36ddfc5196763828123e $
- * @access public
- * @package phing.parser
- */
-class ProjectConfigurator {
-
- public $project;
- public $locator;
-
- public $buildFile;
- public $buildFileParent;
-
- /** Targets in current file */
- private $currentTargets;
-
- /** Synthetic target that will be called at the end to the parse phase */
- private $parseEndTarget;
-
- /** Name of the current project */
- private $currentProjectName;
-
- private $isParsing = true;
-
- /**
- * Indicates whether the project tag attributes are to be ignored
- * when processing a particular build file.
- */
- private $ignoreProjectTag = false;
-
- /**
- * Static call to ProjectConfigurator. Use this to configure a
- * project. Do not use the new operator.
- *
- * @param object the Project instance this configurator should use
- * @param object the buildfile object the parser should use
- * @access public
- */
- public static function configureProject(Project $project, PhingFile $buildFile) {
- $pc = new ProjectConfigurator($project, $buildFile);
- $pc->parse();
- }
-
- /**
- * Constructs a new ProjectConfigurator object
- * This constructor is private. Use a static call to
- * <code>configureProject</code> to configure a project.
- *
- * @param object the Project instance this configurator should use
- * @param object the buildfile object the parser should use
- * @access private
- */
- function __construct(Project $project, PhingFile $buildFile) {
- $this->project = $project;
- $this->buildFile = new PhingFile($buildFile->getAbsolutePath());
- $this->buildFileParent = new PhingFile($this->buildFile->getParent());
- $this->currentTargets = array();
- $this->parseEndTarget = new Target();
- }
-
- /**
- * find out the build file
- * @return the build file to which the xml context belongs
- */
- public function getBuildFile() {
- return $this->buildFile;
- }
-
- /**
- * find out the parent build file of this build file
- * @return the parent build file of this build file
- */
- public function getBuildFileParent() {
- return $this->buildFileParent;
- }
-
- /**
- * find out the current project name
- * @return current project name
- */
- public function getCurrentProjectName() {
- return $this->currentProjectName;
- }
-
- /**
- * set the name of the current project
- * @param name name of the current project
- */
- public function setCurrentProjectName($name) {
- $this->currentProjectName = $name;
- }
-
- /**
- * tells whether the project tag is being ignored
- * @return whether the project tag is being ignored
- */
- public function isIgnoringProjectTag() {
- return $this->ignoreProjectTag;
- }
-
- /**
- * sets the flag to ignore the project tag
- * @param flag to ignore the project tag
- */
- public function setIgnoreProjectTag($flag) {
- $this->ignoreProjectTag = $flag;
- }
-
- public function &getCurrentTargets () {
- return $this->currentTargets;
- }
-
- public function isParsing () {
- return $this->isParsing;
- }
-
- /**
- * Creates the ExpatParser, sets root handler and kick off parsing
- * process.
- *
- * @throws BuildException if there is any kind of execption during
- * the parsing process
- * @access private
- */
- protected function parse() {
- try {
- // get parse context
- $ctx = $this->project->getReference("phing.parsing.context");
- if (null == $ctx) {
- // make a new context and register it with project
- $ctx = new PhingXMLContext($this->project);
- $this->project->addReference("phing.parsing.context", $ctx);
- }
-
- //record this parse with context
- $ctx->addImport($this->buildFile);
-
- if (count($ctx->getImportStack()) > 1) {
- // this is an imported file
- // modify project tag parse behavior
- $this->setIgnoreProjectTag(true);
- }
- // push action onto global stack
- $ctx->startConfigure($this);
-
- $reader = new BufferedReader(new FileReader($this->buildFile));
- $parser = new ExpatParser($reader);
- $parser->parserSetOption(XML_OPTION_CASE_FOLDING,0);
- $parser->setHandler(new RootHandler($parser, $this));
- $this->project->log("parsing buildfile ".$this->buildFile->getName(), Project::MSG_VERBOSE);
- $parser->parse();
- $reader->close();
-
- // mark parse phase as completed
- $this->isParsing = false;
- // execute delayed tasks
- $this->parseEndTarget->main();
- // pop this action from the global stack
- $ctx->endConfigure();
- } catch (Exception $exc) {
- throw new BuildException("Error reading project file", $exc);
- }
- }
-
- /**
- * Delay execution of a task until after the current parse phase has
- * completed.
- *
- * @param Task $task Task to execute after parse
- */
- public function delayTaskUntilParseEnd ($task) {
- $this->parseEndTarget->addTask($task);
- }
-
- /**
- * Configures an element and resolves eventually given properties.
- *
- * @param object the element to configure
- * @param array the element's attributes
- * @param object the project this element belongs to
- * @throws Exception if arguments are not valid
- * @throws BuildException if attributes can not be configured
- * @access public
- */
- public static function configure($target, $attrs, Project $project) {
-
- if ($target instanceof TaskAdapter) {
- $target = $target->getProxy();
- }
-
- // if the target is an UnknownElement, this means that the tag had not been registered
- // when the enclosing element (task, target, etc.) was configured. It is possible, however,
- // that the tag was registered (e.g. using <taskdef>) after the original configuration.
- // ... so, try to load it again:
- if ($target instanceof UnknownElement) {
- $tryTarget = $project->createTask($target->getTaskType());
- if ($tryTarget) {
- $target = $tryTarget;
- }
- }
-
- $bean = get_class($target);
- $ih = IntrospectionHelper::getHelper($bean);
-
- foreach ($attrs as $key => $value) {
- if ($key == 'id') {
- continue;
- // throw new BuildException("Id must be set Extermnally");
- }
- $value = self::replaceProperties($project, $value, $project->getProperties());
- try { // try to set the attribute
- $ih->setAttribute($project, $target, strtolower($key), $value);
- } catch (BuildException $be) {
- // id attribute must be set externally
- if ($key !== "id") {
- throw $be;
- }
- }
- }
- }
-
- /**
- * Configures the #CDATA of an element.
- *
- * @param object the project this element belongs to
- * @param object the element to configure
- * @param string the element's #CDATA
- * @access public
- */
- public static function addText($project, $target, $text = null) {
- if ($text === null || strlen(trim($text)) === 0) {
- return;
- }
- $ih = IntrospectionHelper::getHelper(get_class($target));
- $text = self::replaceProperties($project, $text, $project->getProperties());
- $ih->addText($project, $target, $text);
- }
-
- /**
- * Stores a configured child element into its parent object
- *
- * @param object the project this element belongs to
- * @param object the parent element
- * @param object the child element
- * @param string the XML tagname
- * @access public
- */
- public static function storeChild($project, $parent, $child, $tag) {
- $ih = IntrospectionHelper::getHelper(get_class($parent));
- $ih->storeElement($project, $parent, $child, $tag);
- }
-
- // The following three properties are a sort of hack
- // to enable a static function to serve as the callback
- // for preg_replace_callback(). Clearly we cannot use object
- // variables, since the replaceProperties() is called statically.
- // This is IMO better than using global variables in the callback.
-
- private static $propReplaceProject;
- private static $propReplaceProperties;
- private static $propReplaceLogLevel = Project::MSG_VERBOSE;
-
- /**
- * Replace ${} style constructions in the given value with the
- * string value of the corresponding data types. This method is
- * static.
- *
- * @param object $project the project that should be used for property look-ups
- * @param string $value the string to be scanned for property references
- * @param array $keys property keys
- * @param integer $logLevel the level of generated log messages
- * @return string the replaced string or <code>null</code> if the string
- * itself was null
- */
- public static function replaceProperties(Project $project, $value, $keys, $logLevel = Project::MSG_VERBOSE) {
-
- if ($value === null) {
- return null;
- }
-
- // These are a "hack" to support static callback for preg_replace_callback()
-
- // make sure these get initialized every time
- self::$propReplaceProperties = $keys;
- self::$propReplaceProject = $project;
- self::$propReplaceLogLevel = $logLevel;
-
- // Because we're not doing anything special (like multiple passes),
- // regex is the simplest / fastest. PropertyTask, though, uses
- // the old parsePropertyString() method, since it has more stringent
- // requirements.
-
- $sb = $value;
- $iteration = 0;
-
- // loop to recursively replace tokens
- while (strpos($sb, '${') !== false)
- {
- $sb = preg_replace_callback('/\$\{([^\$}]+)\}/', array('ProjectConfigurator', 'replacePropertyCallback'), $sb);
-
- // keep track of iterations so we can break out of otherwise infinite loops.
- $iteration++;
- if ($iteration == 5)
- {
- return $sb;
- }
- }
-
- return $sb;
- }
-
- /**
- * Private [static] function for use by preg_replace_callback to replace a single param.
- * This method makes use of a static variable to hold the
- */
- private static function replacePropertyCallback($matches)
- {
- $propertyName = $matches[1];
- if (!isset(self::$propReplaceProperties[$propertyName])) {
- self::$propReplaceProject->log('Property ${'.$propertyName.'} has not been set.', self::$propReplaceLogLevel);
- return $matches[0];
- } else {
- self::$propReplaceProject->log('Property ${'.$propertyName.'} => ' . self::$propReplaceProperties[$propertyName], self::$propReplaceLogLevel);
- }
-
- $propertyValue = self::$propReplaceProperties[$propertyName];
-
- if (is_bool($propertyValue)) {
- if ($propertyValue === true) {
- $propertyValue = "true";
- } else {
- $propertyValue = "false";
- }
- }
-
- return $propertyValue;
- }
-
- /**
- * Scan Attributes for the id attribute and maybe add a reference to
- * project.
- *
- * @param object the element's object
- * @param array the element's attributes
- */
- public function configureId($target, $attr) {
- if (isset($attr['id']) && $attr['id'] !== null) {
- $this->project->addReference($attr['id'], $target);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/parser/ProjectHandler.php b/buildscripts/phing/classes/phing/parser/ProjectHandler.php
deleted file mode 100755
index a027c1e6..00000000
--- a/buildscripts/phing/classes/phing/parser/ProjectHandler.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/*
- * $Id: 393b1f3d8758281af2fd0153ffc6151333457527 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/parser/AbstractHandler.php';
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Handler class for the <project> XML element This class handles all elements
- * under the <project> element.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright (c) 2001,2002 THYRELL. All rights reserved
- * @version $Id: 393b1f3d8758281af2fd0153ffc6151333457527 $
- * @access public
- * @package phing.parser
- */
-class ProjectHandler extends AbstractHandler {
-
- /**
- * The phing project configurator object.
- * @var ProjectConfigurator
- */
- private $configurator;
-
- /**
- * Constructs a new ProjectHandler
- *
- * @param object the ExpatParser object
- * @param object the parent handler that invoked this handler
- * @param object the ProjectConfigurator object
- * @access public
- */
- function __construct($parser, $parentHandler, $configurator) {
- $this->configurator = $configurator;
- parent::__construct($parser, $parentHandler);
- }
-
- /**
- * Executes initialization actions required to setup the project. Usually
- * this method handles the attributes of a tag.
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @param object the ProjectConfigurator object
- * @throws ExpatParseException if attributes are incomplete or invalid
- * @access public
- */
- function init($tag, $attrs) {
- $def = null;
- $name = null;
- $id = null;
- $desc = null;
- $baseDir = null;
- $ver = null;
-
- // some shorthands
- $project = $this->configurator->project;
- $buildFileParent = $this->configurator->buildFileParent;
-
- foreach ($attrs as $key => $value) {
- if ($key === "default") {
- $def = $value;
- } elseif ($key === "name") {
- $name = $value;
- } elseif ($key === "id") {
- $id = $value;
- } elseif ($key === "basedir") {
- $baseDir = $value;
- } elseif ($key === "description") {
- $desc = $value;
- } elseif ($key === "phingVersion") {
- $ver = $value;
- } else {
- throw new ExpatParseException("Unexpected attribute '$key'");
- }
- }
- // these things get done no matter what
- if (null != $name) {
- $canonicalName = self::canonicalName($name);
- $this->configurator->setCurrentProjectName($canonicalName);
- $project->setUserProperty("phing.file.{$canonicalName}",
- (string) $this->configurator->getBuildFile());
- }
-
- if (!$this->configurator->isIgnoringProjectTag()) {
- if ($def === null) {
- throw new ExpatParseException(
- "The default attribute of project is required");
- }
- $project->setDefaultTarget($def);
-
- if ($name !== null) {
- $project->setName($name);
- $project->addReference($name, $project);
-
- }
-
- if ($id !== null) {
- $project->addReference($id, $project);
- }
-
- if ($desc !== null) {
- $project->setDescription($desc);
- }
-
- if($ver !== null) {
- $project->setPhingVersion($ver);
- }
-
- if ($project->getProperty("project.basedir") !== null) {
- $project->setBasedir($project->getProperty("project.basedir"));
- } else {
- if ($baseDir === null) {
- $project->setBasedir($buildFileParent->getAbsolutePath());
- } else {
- // check whether the user has specified an absolute path
- $f = new PhingFile($baseDir);
- if ($f->isAbsolute()) {
- $project->setBasedir($baseDir);
- } else {
- $project->setBaseDir($project->resolveFile($baseDir, new PhingFile(getcwd())));
- }
- }
- }
- }
- }
-
- /**
- * Handles start elements within the <project> tag by creating and
- * calling the required handlers for the detected element.
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @throws ExpatParseException if a unxepected element occurs
- * @access public
- */
- function startElement($name, $attrs) {
-
- $project = $this->configurator->project;
- $types = $project->getDataTypeDefinitions();
-
- if ($name == "target") {
- $tf = new TargetHandler($this->parser, $this, $this->configurator);
- $tf->init($name, $attrs);
- } elseif (isset($types[$name])) {
- $tyf = new DataTypeHandler($this->parser, $this, $this->configurator);
- $tyf->init($name, $attrs);
- } else {
- $tf = new TaskHandler($this->parser, $this, $this->configurator);
- $tf->init($name, $attrs);
- }
- }
-
- static function canonicalName ($name) {
- return preg_replace('/\W/', '_', strtolower($name));
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/parser/RootHandler.php b/buildscripts/phing/classes/phing/parser/RootHandler.php
deleted file mode 100755
index 435aae40..00000000
--- a/buildscripts/phing/classes/phing/parser/RootHandler.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/*
- * $Id: 061d3ffe06257d551822050020d0e64689663334 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/parser/AbstractHandler.php';
-include_once 'phing/parser/ExpatParseException.php';
-include_once 'phing/parser/ProjectHandler.php';
-
-/**
- * Root filter class for a phing buildfile.
- *
- * The root filter is called by the parser first. This is where the phing
- * specific parsing starts. RootHandler decides what to do next.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing.parser
- */
-class RootHandler extends AbstractHandler {
-
- /**
- * The phing project configurator object
- */
- private $configurator;
-
- /**
- * Constructs a new RootHandler
- *
- * The root filter is required so the parser knows what to do. It's
- * called by the ExpatParser that is instatiated in ProjectConfigurator.
- *
- * It recieves the expat parse object ref and a reference to the
- * configurator
- *
- * @param AbstractSAXParser $parser The ExpatParser object.
- * @param ProjectConfigurator $configurator The ProjectConfigurator object.
- */
- function __construct(AbstractSAXParser $parser, ProjectConfigurator $configurator) {
- $this->configurator = $configurator;
- parent::__construct($parser, $this);
- }
-
- /**
- * Kick off a custom action for a start element tag.
- *
- * The root element of our buildfile is the &lt;project&gt; element. The
- * root filter handles this element if it occurs, creates ProjectHandler
- * to handle any nested tags & attributes of the &lt;project&gt; tag,
- * and calls init.
- *
- * @param string $tag The xml tagname
- * @param array $attrs The attributes of the tag
- * @throws ExpatParseException if the first element within our build file
- * is not the &gt;project&lt; element
- */
- function startElement($tag, $attrs) {
- if ($tag === "project") {
- $ph = new ProjectHandler($this->parser, $this, $this->configurator);
- $ph->init($tag, $attrs);
- } else {
- throw new ExpatParseException("Unexpected tag <$tag> in top-level of build file.", $this->parser->getLocation());
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/parser/TargetHandler.php b/buildscripts/phing/classes/phing/parser/TargetHandler.php
deleted file mode 100755
index a6c4d037..00000000
--- a/buildscripts/phing/classes/phing/parser/TargetHandler.php
+++ /dev/null
@@ -1,196 +0,0 @@
-<?php
-/*
- * $Id: f73d7c67a353cf16f048af3ba013d84ec726a926 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/parser/AbstractHandler.php';
-
-/**
- * The target handler class.
- *
- * This class handles the occurance of a <target> tag and it's possible
- * nested tags (datatypes and tasks).
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id: f73d7c67a353cf16f048af3ba013d84ec726a926 $
- * @package phing.parser
- */
-class TargetHandler extends AbstractHandler {
-
- /**
- * Reference to the target object that represents the currently parsed
- * target.
- * @var object the target instance
- */
- private $target;
-
- /**
- * The phing project configurator object
- * @var ProjectConfigurator
- */
- private $configurator;
-
- /**
- * Constructs a new TargetHandler
- *
- * @param object the ExpatParser object
- * @param object the parent handler that invoked this handler
- * @param object the ProjectConfigurator object
- */
- function __construct(AbstractSAXParser $parser, AbstractHandler $parentHandler, ProjectConfigurator $configurator) {
- parent::__construct($parser, $parentHandler);
- $this->configurator = $configurator;
- }
-
- /**
- * Executes initialization actions required to setup the data structures
- * related to the tag.
- * <p>
- * This includes:
- * <ul>
- * <li>creation of the target object</li>
- * <li>calling the setters for attributes</li>
- * <li>adding the target to the project</li>
- * <li>adding a reference to the target (if id attribute is given)</li>
- * </ul>
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- * @throws ExpatParseException if attributes are incomplete or invalid
- */
- function init($tag, $attrs) {
- $name = null;
- $depends = "";
- $ifCond = null;
- $unlessCond = null;
- $id = null;
- $description = null;
- $isHidden = false;
-
- foreach($attrs as $key => $value) {
- if ($key==="name") {
- $name = (string) $value;
- } else if ($key==="depends") {
- $depends = (string) $value;
- } else if ($key==="if") {
- $ifCond = (string) $value;
- } else if ($key==="unless") {
- $unlessCond = (string) $value;
- } else if ($key==="id") {
- $id = (string) $value;
- } else if ($key==="hidden") {
- $isHidden = ($value == 'true' || $value == '1') ? true : false;
- } else if ($key==="description") {
- $description = (string)$value;
- } else {
- throw new ExpatParseException("Unexpected attribute '$key'", $this->parser->getLocation());
- }
- }
-
- if ($name === null) {
- throw new ExpatParseException("target element appears without a name attribute", $this->parser->getLocation());
- }
-
- // shorthand
- $project = $this->configurator->project;
-
- // check to see if this target is a dup within the same file
- if (isset($this->configurator->getCurrentTargets[$name])) {
- throw new BuildException("Duplicate target: $targetName",
- $this->parser->getLocation());
- }
-
- $this->target = new Target();
- $this->target->setName($name);
- $this->target->setHidden($isHidden);
- $this->target->setIf($ifCond);
- $this->target->setUnless($unlessCond);
- $this->target->setDescription($description);
- // take care of dependencies
- if (strlen($depends) > 0) {
- $this->target->setDepends($depends);
- }
-
- $usedTarget = false;
- // check to see if target with same name is already defined
- $projectTargets = $project->getTargets();
- if (isset($projectTargets[$name])) {
- $project->log("Already defined in main or a previous import, " .
- "ignore {$name}", Project::MSG_VERBOSE);
- } else {
- $project->addTarget($name, $this->target);
- if ($id !== null && $id !== "") {
- $project->addReference($id, $this->target);
- }
- $usedTarget = true;
- }
-
- if ($this->configurator->isIgnoringProjectTag() &&
- $this->configurator->getCurrentProjectName() != null &&
- strlen($this->configurator->getCurrentProjectName()) != 0) {
- // In an impored file (and not completely
- // ignoring the project tag)
- $newName = $this->configurator->getCurrentProjectName() . "." . $name;
- if ($usedTarget) {
- // clone needs to make target->children a shared reference
- $newTarget = clone $this->target;
- } else {
- $newTarget = $this->target;
- }
- $newTarget->setName($newName);
- $ct = $this->configurator->getCurrentTargets();
- $ct[$newName] = $newTarget;
- $project->addTarget($newName, $newTarget);
- }
- }
-
- /**
- * Checks for nested tags within the current one. Creates and calls
- * handlers respectively.
- *
- * @param string the tag that comes in
- * @param array attributes the tag carries
- */
- function startElement($name, $attrs) {
- // shorthands
- $project = $this->configurator->project;
- $types = $project->getDataTypeDefinitions();
-
- if (isset($types[$name])) {
- $th = new DataTypeHandler($this->parser, $this, $this->configurator, $this->target);
- $th->init($name, $attrs);
- } else {
- $tmp = new TaskHandler($this->parser, $this, $this->configurator, $this->target, null, $this->target);
- $tmp->init($name, $attrs);
- }
- }
-
- /**
- * Checks if this target has dependencies and/or nested tasks.
- * If the target has neither, show a warning.
- */
- protected function finished()
- {
- if (!count($this->target->getDependencies()) && !count($this->target->getTasks())) {
- $this->configurator->project->log("Warning: target '" . $this->target->getName() .
- "' has no tasks or dependencies", Project::MSG_WARN);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/parser/TaskHandler.php b/buildscripts/phing/classes/phing/parser/TaskHandler.php
deleted file mode 100755
index 53e07a56..00000000
--- a/buildscripts/phing/classes/phing/parser/TaskHandler.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-/*
- * $Id: 3b31bb3e2c1ae122411833c67617e7cebf6967b8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/UnknownElement.php';
-
-/**
- * The task handler class.
- *
- * This class handles the occurance of a <task> tag and it's possible
- * nested tags (datatypes and tasks) that may be unknown off bat and are
- * initialized on the fly.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id: 3b31bb3e2c1ae122411833c67617e7cebf6967b8 $
- * @package phing.parser
- */
-class TaskHandler extends AbstractHandler {
-
- /**
- * Reference to the target object that contains the currently parsed
- * task
- * @var object the target instance
- */
- private $target;
-
- /**
- * Reference to the target object that represents the currently parsed
- * target. This must not necessarily be a target, hence extra variable.
- * @var object the target instance
- */
- private $container;
-
- /**
- * Reference to the task object that represents the currently parsed
- * target.
- * @var Task
- */
- private $task;
-
- /**
- * Wrapper for the parent element, if any. The wrapper for this
- * element will be added to this wrapper as a child.
- * @var RuntimeConfigurable
- */
- private $parentWrapper;
-
- /**
- * Wrapper for this element which takes care of actually configuring
- * the element, if this element is contained within a target.
- * Otherwise the configuration is performed with the configure method.
- * @see ProjectHelper::configure(Object,AttributeList,Project)
- */
- private $wrapper;
-
- /**
- * The phing project configurator object
- * @var ProjectConfigurator
- */
- private $configurator;
-
- /**
- * Constructs a new TaskHandler and sets up everything.
- *
- * @param AbstractSAXParser The ExpatParser object
- * @param object $parentHandler The parent handler that invoked this handler
- * @param ProjectConfigurator $configurator
- * @param TaskContainer $container The container object this task is contained in (null for top-level tasks).
- * @param RuntimeConfigurable $parentWrapper Wrapper for the parent element, if any.
- * @param Target $target The target object this task is contained in (null for top-level tasks).
- */
- function __construct(AbstractSAXParser $parser, $parentHandler, ProjectConfigurator $configurator, $container = null, $parentWrapper = null, $target = null) {
-
- parent::__construct($parser, $parentHandler);
-
- if (($container !== null) && !($container instanceof TaskContainer)) {
- throw new Exception("Argument expected to be a TaskContainer, got something else");
- }
- if (($parentWrapper !== null) && !($parentWrapper instanceof RuntimeConfigurable)) {
- throw new Exception("Argument expected to be a RuntimeConfigurable, got something else.");
- }
- if (($target !== null) && !($target instanceof Target)) {
- throw new Exception("Argument expected to be a Target, got something else");
- }
-
- $this->configurator = $configurator;
- $this->container = $container;
- $this->parentWrapper = $parentWrapper;
- $this->target = $target;
- }
-
- /**
- * Executes initialization actions required to setup the data structures
- * related to the tag.
- * <p>
- * This includes:
- * <ul>
- * <li>creation of the task object</li>
- * <li>calling the setters for attributes</li>
- * <li>adding the task to the container object</li>
- * <li>adding a reference to the task (if id attribute is given)</li>
- * <li>executing the task if the container is the &lt;project&gt;
- * element</li>
- * </ul>
- *
- * @param string $tag The tag that comes in
- * @param array $attrs Attributes the tag carries
- * @throws ExpatParseException if attributes are incomplete or invalid
- */
- function init($tag, $attrs) {
- // shorthands
- try {
- $configurator = $this->configurator;
- $project = $this->configurator->project;
-
- $this->task = $project->createTask($tag);
- } catch (BuildException $be) {
- // swallow here, will be thrown again in
- // UnknownElement->maybeConfigure if the problem persists.
- print("Swallowing exception: ".$be->getMessage() . "\n");
- }
-
- // the task is not known of bat, try to load it on thy fly
- if ($this->task === null) {
- $this->task = new UnknownElement($tag);
- $this->task->setProject($project);
- $this->task->setTaskType($tag);
- $this->task->setTaskName($tag);
- }
-
- // add file position information to the task (from parser)
- // should be used in task exceptions to provide details
- $this->task->setLocation($this->parser->getLocation());
- $configurator->configureId($this->task, $attrs);
-
- if ($this->container) {
- $this->container->addTask($this->task);
- }
-
- // Top level tasks don't have associated targets
- // FIXME: if we do like Ant 1.6 and create an implicitTarget in the projectconfigurator object
- // then we don't need to check for null here ... but there's a lot of stuff that will break if we
- // do that at this point.
- if ($this->target !== null) {
- $this->task->setOwningTarget($this->target);
- $this->task->init();
- $this->wrapper = $this->task->getRuntimeConfigurableWrapper();
- $this->wrapper->setAttributes($attrs);
- /*
- Commenting this out as per thread on Premature configurate of ReuntimeConfigurables
- with Matthias Pigulla: http://phing.tigris.org/servlets/ReadMsg?list=dev&msgNo=251
-
- if ($this->parentWrapper !== null) { // this may not make sense only within this if-block, but it
- // seems to address current use cases adequately
- $this->parentWrapper->addChild($this->wrapper);
- }
- */
- } else {
- $this->task->init();
- $configurator->configure($this->task, $attrs, $project);
- }
- }
-
- /**
- * Executes the task at once if it's directly beneath the <project> tag.
- */
- protected function finished() {
- if ($this->task !== null && $this->target === null && $this->container === null) {
- try {
- $this->task->perform();
- } catch (Exception $e) {
- $this->task->log($e->getMessage(), Project::MSG_ERR);
- throw $e;
- }
- }
- }
-
- /**
- * Handles character data.
- *
- * @param string $data The CDATA that comes in
- */
- function characters($data) {
- if ($this->wrapper === null) {
- $configurator = $this->configurator;
- $project = $this->configurator->project;
- try { // try
- $configurator->addText($project, $this->task, $data);
- } catch (BuildException $exc) {
- throw new ExpatParseException($exc->getMessage(), $this->parser->getLocation());
- }
- } else {
- $this->wrapper->addText($data);
- }
- }
-
- /**
- * Checks for nested tags within the current one. Creates and calls
- * handlers respectively.
- *
- * @param string $name The tag that comes in
- * @param array $attrs Attributes the tag carries
- */
- function startElement($name, $attrs) {
- $project = $this->configurator->project;
- if ($this->task instanceof TaskContainer) {
- //print("TaskHandler::startElement() (TaskContainer) name = $name, attrs = " . implode(",",$attrs) . "\n");
- $th = new TaskHandler($this->parser, $this, $this->configurator, $this->task, $this->wrapper, $this->target);
- $th->init($name, $attrs);
- } else {
- //print("TaskHandler::startElement() name = $name, attrs = " . implode(",",$attrs) . "\n");
- $tmp = new NestedElementHandler($this->parser, $this, $this->configurator, $this->task, $this->wrapper, $this->target);
- $tmp->init($name, $attrs);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/system/io/BufferedReader.php b/buildscripts/phing/classes/phing/system/io/BufferedReader.php
deleted file mode 100755
index a392f5be..00000000
--- a/buildscripts/phing/classes/phing/system/io/BufferedReader.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php
-/*
- * $Id: 98ea5952d7a41ce47ce95008e336f38758946aaa $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/system/io/Reader.php';
-
-/**
- * Convenience class for reading files.
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @version $Id$
- * @access public
- * @see FilterReader
- * @package phing.system.io
- */
-class BufferedReader extends Reader {
-
- private $bufferSize = 0;
- private $buffer = null;
- private $bufferPos = 0;
-
- /**
- * The Reader we are buffering for.
- */
- private $in;
-
- /**
- *
- * @param object $reader The reader (e.g. FileReader).
- * @param integer $buffsize The size of the buffer we should use for reading files.
- * A large buffer ensures that most files (all scripts?) are parsed in 1 buffer.
- */
- function __construct(Reader $reader, $buffsize = 65536) {
- $this->in = $reader;
- $this->bufferSize = $buffsize;
- }
-
- /**
- * Reads and returns a chunk of data.
- * @param int $len Number of bytes to read. Default is to read configured buffer size number of bytes.
- * @return mixed buffer or -1 if EOF.
- */
- function read($len = null) {
-
- // if $len is specified, we'll use that; otherwise, use the configured buffer size.
- if ($len === null) $len = $this->bufferSize;
-
- if ( ($data = $this->in->read($len)) !== -1 ) {
-
- // not all files end with a newline character, so we also need to check EOF
- if (!$this->in->eof()) {
-
- $notValidPart = strrchr($data, "\n");
- $notValidPartSize = strlen($notValidPart);
-
- if ( $notValidPartSize > 1 ) {
- // Block doesn't finish on a EOL
- // Find the last EOL and forget all following stuff
- $dataSize = strlen($data);
- $validSize = $dataSize - $notValidPartSize + 1;
-
- $data = substr($data, 0, $validSize);
-
- // Rewind to the begining of the forgotten stuff.
- $this->in->skip(-$notValidPartSize+1);
- }
-
- } // if !EOF
- }
- return $data;
- }
-
- function skip($n) {
- return $this->in->skip($n);
- }
-
- function reset() {
- return $this->in->reset();
- }
-
- function close() {
- return $this->in->close();
- }
-
- function open() {
- return $this->in->open();
- }
-
- /**
- * Read a line from input stream.
- */
- function readLine() {
- $line = null;
- while ( ($ch = $this->readChar()) !== -1 ) {
- if ( $ch === "\n" ) {
- break;
- }
- $line .= $ch;
- }
-
- // Warning : Not considering an empty line as an EOF
- if ( $line === null && $ch !== -1 )
- return "";
-
- return $line;
- }
-
- /**
- * Reads a single char from the reader.
- * @return string single char or -1 if EOF.
- */
- function readChar() {
-
- if ( $this->buffer === null ) {
- // Buffer is empty, fill it ...
- $read = $this->in->read($this->bufferSize);
- if ($read === -1) {
- $ch = -1;
- } else {
- $this->buffer = $read;
- return $this->readChar(); // recurse
- }
- } else {
- // Get next buffered char ...
- // handle case where buffer is read-in, but is empty. The next readChar() will return -1 EOF,
- // so we just return empty string (char) at this point. (Probably could also return -1 ...?)
- $ch = ($this->buffer !== "") ? $this->buffer{$this->bufferPos} : '';
- $this->bufferPos++;
- if ( $this->bufferPos >= strlen($this->buffer) ) {
- $this->buffer = null;
- $this->bufferPos = 0;
- }
- }
-
- return $ch;
- }
-
- /**
- * Returns whether eof has been reached in stream.
- * This is important, because filters may want to know if the end of the file (and not just buffer)
- * has been reached.
- * @return boolean
- */
- function eof() {
- return $this->in->eof();
- }
-
- function getResource() {
- return $this->in->getResource();
- }
-}
diff --git a/buildscripts/phing/classes/phing/system/io/BufferedWriter.php b/buildscripts/phing/classes/phing/system/io/BufferedWriter.php
deleted file mode 100755
index 88520ce9..00000000
--- a/buildscripts/phing/classes/phing/system/io/BufferedWriter.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/*
- * $Id: 8a155d3b04ca1a938bc22f59aba8509e0910ad33 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/Writer.php';
-
-/**
- * Convenience class for writing files.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.system.io
- */
-class BufferedWriter extends Writer {
-
- /**
- * The size of the buffer in kb.
- */
- private $bufferSize = 0;
-
- /**
- * @var Writer The Writer we are buffering output to.
- */
- private $out;
-
- public function __construct(Writer $writer, $buffsize = 8192) {
- $this->out = $writer;
- $this->bufferSize = $buffsize;
- }
-
- public function write($buf, $off = null, $len = null) {
- return $this->out->write($buf, $off, $len);
- }
-
- public function newLine() {
- $this->write(PHP_EOL);
- }
-
- public function getResource() {
- return $this->out->getResource();
- }
-
- public function flush() {
- $this->out->flush();
- }
-
- /**
- * Close attached stream.
- */
- public function close() {
- return $this->out->close();
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/system/io/ConsoleReader.php b/buildscripts/phing/classes/phing/system/io/ConsoleReader.php
deleted file mode 100755
index 048f1866..00000000
--- a/buildscripts/phing/classes/phing/system/io/ConsoleReader.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * $Id: 7abe7afba50cc541e695c323da811186549ba1d9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/Reader.php';
-
-/**
- * Convenience class for reading console input.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Matthew Hershberger <matthewh@lightsp.com>
- * @version $Id$
- * @package phing.system.io
- */
-class ConsoleReader extends Reader {
-
- function readLine() {
-
- $out = fgets(STDIN); // note: default maxlen is 1kb
- $out = rtrim($out);
-
- return $out;
- }
-
- /**
- *
- * @param int $len Num chars to read.
- * @return string chars read or -1 if eof.
- */
- function read($len = null) {
-
- $out = fread(STDIN, $len);
-
-
- return $out;
- // FIXME
- // read by chars doesn't work (yet?) with PHP stdin. Maybe
- // this is just a language feature, maybe there's a way to get
- // ability to read chars w/o <enter> ?
-
- }
-
- function close() {
- // STDIN is always open
- }
-
- function open() {
- // STDIN is always open
- }
-
- /**
- * Whether eof has been reached with stream.
- * @return boolean
- */
- function eof() {
- return feof(STDIN);
- }
-
- /**
- * Returns path to file we are reading.
- * @return string
- */
- function getResource() {
- return "console";
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/FileInputStream.php b/buildscripts/phing/classes/phing/system/io/FileInputStream.php
deleted file mode 100644
index 64778860..00000000
--- a/buildscripts/phing/classes/phing/system/io/FileInputStream.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * $Id: 9ddd30a90f5a934a1294f912ae881a4523b74e18 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/InputStream.php';
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Input stream subclass for file streams.
- *
- * @package phing.system.io
- */
-class FileInputStream extends InputStream {
-
- /**
- * The associated file.
- * @var PhingFile
- */
- protected $file;
-
- /**
- * Construct a new FileInputStream.
- *
- * @param PhingFile|string $file Path to the file
- * @param boolean $append Whether to append (ignored)
- * @throws Exception - if invalid argument specified.
- * @throws IOException - if unable to open file.
- */
- public function __construct($file, $append = false) {
- if ($file instanceof PhingFile) {
- $this->file = $file;
- } elseif (is_string($file)) {
- $this->file = new PhingFile($file);
- } else {
- throw new Exception("Invalid argument type for \$file.");
- }
-
- $stream = @fopen($this->file->getAbsolutePath(), "rb");
- if ($stream === false) {
- throw new IOException("Unable to open " . $this->file->__toString() . " for reading: " . $php_errormsg);
- }
-
- parent::__construct($stream);
- }
-
- /**
- * Returns a string representation of the attached file.
- * @return string
- */
- public function __toString() {
- return $this->file->getPath();
- }
-
- /**
- * Mark is supported by FileInputStream.
- * @return boolean TRUE
- */
- public function markSupported() {
- return true;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/FileOutputStream.php b/buildscripts/phing/classes/phing/system/io/FileOutputStream.php
deleted file mode 100644
index 35457d17..00000000
--- a/buildscripts/phing/classes/phing/system/io/FileOutputStream.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/*
- * $Id: 9c9b6bc291caf11baf9d5eeef38c50bf155b2099 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/OutputStream.php';
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Output stream subclass for file streams.
- *
- * @package phing.system.io
- */
-class FileOutputStream extends OutputStream {
-
- /**
- * @var PhingFile The associated file.
- */
- protected $file;
-
- /**
- * Construct a new FileOutputStream.
- * @param mixed $file
- * @param boolean $append Whether to append bytes to end of file rather than beginning.
- * @throws Exception - if invalid argument specified.
- * @throws IOException - if unable to open file.
- */
- public function __construct($file, $append = false) {
- if ($file instanceof PhingFile) {
- $this->file = $file;
- } elseif (is_string($file)) {
- $this->file = new PhingFile($file);
- } else {
- throw new Exception("Invalid argument type for \$file.");
- }
- if ($append) {
- $stream = @fopen($this->file->getAbsolutePath(), "ab");
- } else {
- $stream = @fopen($this->file->getAbsolutePath(), "wb");
- }
- if ($stream === false) {
- throw new IOException("Unable to open " . $this->file->__toString() . " for writing: " . $php_errormsg);
- }
- parent::__construct($stream);
- }
-
- /**
- * Returns a string representation of the attached file.
- * @return string
- */
- public function __toString() {
- return $this->file->getPath();
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/FileReader.php b/buildscripts/phing/classes/phing/system/io/FileReader.php
deleted file mode 100644
index 43ebda69..00000000
--- a/buildscripts/phing/classes/phing/system/io/FileReader.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/*
- * $Id: e7142ab98e9562743781ba0cc4005e08fd62ae83 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/InputStreamReader.php';
-require_once 'phing/system/io/FileInputStream.php';
-
-/**
- * Convenience class for reading files.
- * @package phing.system.io
- */
-class FileReader extends InputStreamReader {
-
- /**
- * Construct a new FileReader.
- * @param mixed $file PhingFile or string pathname.
- */
- public function __construct($file) {
- $in = new FileInputStream($file);
- parent::__construct($in);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/FileSystem.php b/buildscripts/phing/classes/phing/system/io/FileSystem.php
deleted file mode 100755
index 284be830..00000000
--- a/buildscripts/phing/classes/phing/system/io/FileSystem.php
+++ /dev/null
@@ -1,840 +0,0 @@
-<?php
-
-/*
- * $Id: 235081905c0eafcd98da2fec63404fa2ebee090a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * This is an abstract class for platform specific filesystem implementations
- * you have to implement each method in the platform specific filesystem implementation
- * classes Your local filesytem implementation must extend this class.
- * You should also use this class as a template to write your local implementation
- * Some native PHP filesystem specific methods are abstracted here as well. Anyway
- * you _must_ always use this methods via a PhingFile object (that by nature uses the
- * *FileSystem drivers to access the real filesystem via this class using natives.
- *
- * FIXME:
- * - Error handling reduced to min fallthrough runtime exceptions
- * more precise errorhandling is done by the PhingFile class
- *
- * @author Charlie Killian <charlie@tizac.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.system.io
- */
-abstract class FileSystem {
-
- /**
- * @var int
- */
- const BA_EXISTS = 0x01;
-
- /**
- * @var int
- */
- const BA_REGULAR = 0x02;
-
- /**
- * @var int
- */
- const BA_DIRECTORY = 0x04;
-
- /**
- * @var int
- */
- const BA_HIDDEN = 0x08;
-
- /**
- * Instance for getFileSystem() method.
- * @var FileSystem
- */
- private static $fs;
-
- /**
- * Static method to return the FileSystem singelton representing
- * this platform's local filesystem driver.
- *
- * @return FileSystem
- * @throws IOException
- */
- public static function getFileSystem() {
- if (self::$fs === null) {
- switch(Phing::getProperty('host.fstype')) {
- case 'UNIX':
- include_once 'phing/system/io/UnixFileSystem.php';
- self::$fs = new UnixFileSystem();
- break;
- case 'WIN32':
- include_once 'phing/system/io/Win32FileSystem.php';
- self::$fs = new Win32FileSystem();
- break;
- case 'WINNT':
- include_once 'phing/system/io/WinNTFileSystem.php';
- self::$fs = new WinNTFileSystem();
- break;
- default:
- throw new IOException("Host uses unsupported filesystem, unable to proceed");
- }
- }
- return self::$fs;
- }
-
- /* -- Normalization and construction -- */
-
- /**
- * Return the local filesystem's name-separator character.
- */
- abstract function getSeparator();
-
- /**
- * Return the local filesystem's path-separator character.
- */
- abstract function getPathSeparator();
-
- /**
- * Convert the given pathname string to normal form. If the string is
- * already in normal form then it is simply returned.
- *
- * @param string $strPath
- */
- abstract function normalize($strPath);
-
- /**
- * Compute the length of this pathname string's prefix. The pathname
- * string must be in normal form.
- *
- * @param string $pathname
- */
- abstract function prefixLength($pathname);
-
- /**
- * Resolve the child pathname string against the parent.
- * Both strings must be in normal form, and the result
- * will be a string in normal form.
- *
- * @param string $parent
- * @param string $child
- */
- abstract function resolve($parent, $child);
-
- /**
- * Resolve the given abstract pathname into absolute form. Invoked by the
- * getAbsolutePath and getCanonicalPath methods in the PhingFile class.
- *
- * @param PhingFile $f
- */
- abstract function resolveFile(PhingFile $f);
-
- /**
- * Return the parent pathname string to be used when the parent-directory
- * argument in one of the two-argument PhingFile constructors is the empty
- * pathname.
- */
- abstract function getDefaultParent();
-
- /**
- * Post-process the given URI path string if necessary. This is used on
- * win32, e.g., to transform "/c:/foo" into "c:/foo". The path string
- * still has slash separators; code in the PhingFile class will translate them
- * after this method returns.
- *
- * @param string $path
- */
- abstract function fromURIPath($path);
-
- /* -- Path operations -- */
-
- /**
- * Tell whether or not the given abstract pathname is absolute.
- *
- * @param PhingFile $f
- */
- abstract function isAbsolute(PhingFile $f);
-
- /**
- * canonicalize filename by checking on disk
- * @param string $strPath
- * @return mixed Canonical path or false if the file doesn't exist.
- */
- function canonicalize($strPath) {
- return @realpath($strPath);
- }
-
- /* -- Attribute accessors -- */
-
- /**
- * Return the simple boolean attributes for the file or directory denoted
- * by the given abstract pathname, or zero if it does not exist or some
- * other I/O error occurs.
- *
- * @param PhingFile $f
- */
- function getBooleanAttributes($f) {
- throw new IOException("getBooleanAttributes() not implemented by fs driver");
- }
-
- /**
- * Check whether the file or directory denoted by the given abstract
- * pathname may be accessed by this process. If the second argument is
- * false, then a check for read access is made; if the second
- * argument is true, then a check for write (not read-write)
- * access is made. Return false if access is denied or an I/O error
- * occurs.
- *
- * @param PhingFile $f
- * @param boolean $write
- */
- function checkAccess(PhingFile $f, $write = false) {
- // we clear stat cache, its expensive to look up from scratch,
- // but we need to be sure
- @clearstatcache();
-
-
- // Shouldn't this be $f->GetAbsolutePath() ?
- // And why doesn't GetAbsolutePath() work?
-
- $strPath = (string) $f->getPath();
-
- // FIXME
- // if file object does denote a file that yet not existst
- // path rights are checked
- if (!@file_exists($strPath) && !is_dir($strPath)) {
- $strPath = $f->getParent();
- if ($strPath === null || !is_dir($strPath)) {
- $strPath = Phing::getProperty("user.dir");
- }
- //$strPath = dirname($strPath);
- }
-
- if (!$write) {
- return (boolean) @is_readable($strPath);
- } else {
- return (boolean) @is_writable($strPath);
- }
- }
-
- /**
- * Whether file can be deleted.
- * @param PhingFile $f
- * @return boolean
- */
- function canDelete(PhingFile $f)
- {
- clearstatcache();
- $dir = dirname($f->getAbsolutePath());
- return (bool) @is_writable($dir);
- }
-
- /**
- * Return the time at which the file or directory denoted by the given
- * abstract pathname was last modified, or zero if it does not exist or
- * some other I/O error occurs.
- *
- * @param PhingFile $f
- * @return int
- * @throws IOException
- */
- function getLastModifiedTime(PhingFile $f) {
-
- if (!$f->exists()) {
- return 0;
- }
-
- @clearstatcache();
- $strPath = (string) $f->getPath();
-
- if (@is_link($strPath)) {
- $stats = @lstat($strPath);
-
- if (!isset($stats['mtime'])) {
- $mtime = false;
- } else {
- $mtime = $stats['mtime'];
- }
- } else {
- $mtime = @filemtime($strPath);
- }
-
- if (false === $mtime) {
- $msg = "FileSystem::getLastModifiedTime() FAILED. Can not get modified time of $strPath. $php_errormsg";
- throw new IOException($msg);
- }
-
- return (int) $mtime;
- }
-
- /**
- * Return the length in bytes of the file denoted by the given abstract
- * pathname, or zero if it does not exist, is a directory, or some other
- * I/O error occurs.
- *
- * @param PhingFile $f
- * @throws IOException
- * @return int
- */
- function getLength(PhingFile $f) {
- $strPath = (string) $f->getAbsolutePath();
- $fs = filesize((string) $strPath);
- if ($fs !== false) {
- return $fs;
- } else {
- $msg = "FileSystem::Read() FAILED. Cannot get filesize of $strPath. $php_errormsg";
- throw new IOException($msg);
- }
- }
-
- /* -- File operations -- */
-
- /**
- * Create a new empty file with the given pathname. Return
- * true if the file was created and false if a
- * file or directory with the given pathname already exists. Throw an
- * IOException if an I/O error occurs.
- *
- * @param string $strPathname Path of the file to be created.
- * @throws IOException
- * @return boolean
- */
- function createNewFile($strPathname) {
- if (@file_exists($strPathname))
- return false;
-
- // Create new file
- $fp = @fopen($strPathname, "w");
- if ($fp === false) {
- throw new IOException("The file \"$strPathname\" could not be created");
- }
- @fclose($fp);
- return true;
- }
-
- /**
- * Delete the file or directory denoted by the given abstract pathname,
- * returning true if and only if the operation succeeds.
- *
- * @param PhingFile $f
- * @param boolean $recursive
- * @return void
- */
- function delete(PhingFile $f, $recursive = false) {
- if ($f->isDirectory()) {
- return $this->rmdir($f->getPath(), $recursive);
- } else {
- return $this->unlink($f->getPath());
- }
- }
-
- /**
- * Arrange for the file or directory denoted by the given abstract
- * pathname to be deleted when Phing::shutdown is called, returning
- * true if and only if the operation succeeds.
- *
- * @param PhingFile $f
- * @throws IOException
- */
- function deleteOnExit($f) {
- throw new IOException("deleteOnExit() not implemented by local fs driver");
- }
-
- /**
- * List the elements of the directory denoted by the given abstract
- * pathname. Return an array of strings naming the elements of the
- * directory if successful; otherwise, return <code>null</code>.
- *
- * @param PhingFile $f
- */
- function listDir(PhingFile $f) {
- $strPath = (string) $f->getAbsolutePath();
- $d = @dir($strPath);
- if (!$d) {
- return null;
- }
- $list = array();
- while($entry = $d->read()) {
- if ($entry != "." && $entry != "..") {
- array_push($list, $entry);
- }
- }
- $d->close();
- unset($d);
- return $list;
- }
-
- /**
- * Create a new directory denoted by the given abstract pathname,
- * returning true if and only if the operation succeeds.
- *
- * NOTE: umask() is reset to 0 while executing mkdir(), and restored afterwards
- *
- * @param PhingFile $f
- * @param int $mode
- * @return boolean
- */
- function createDirectory(&$f, $mode = 0755) {
- $old_umask = umask(0);
- $return = @mkdir($f->getAbsolutePath(), $mode);
- umask($old_umask);
- return $return;
- }
-
- /**
- * Rename the file or directory denoted by the first abstract pathname to
- * the second abstract pathname, returning true if and only if
- * the operation succeeds.
- *
- * @param PhingFile $f1 abstract source file
- * @param PhingFile $f2 abstract destination file
- * @return void
- * @throws IOException if rename cannot be performed
- */
- function rename(PhingFile $f1, PhingFile $f2) {
- // get the canonical paths of the file to rename
- $src = $f1->getAbsolutePath();
- $dest = $f2->getAbsolutePath();
- if (false === @rename($src, $dest)) {
- $msg = "Rename FAILED. Cannot rename $src to $dest. $php_errormsg";
- throw new IOException($msg);
- }
- }
-
- /**
- * Set the last-modified time of the file or directory denoted by the
- * given abstract pathname returning true if and only if the
- * operation succeeds.
- *
- * @param PhingFile $f
- * @param int $time
- * @return void
- * @throws IOException
- */
- function setLastModifiedTime(PhingFile $f, $time) {
- $path = $f->getPath();
- $success = @touch($path, $time);
- if (!$success) {
- throw new IOException("Could not touch '" . $path . "' due to: $php_errormsg");
- }
- }
-
- /**
- * Mark the file or directory denoted by the given abstract pathname as
- * read-only, returning <code>true</code> if and only if the operation
- * succeeds.
- *
- * @param PhingFile $f
- * @throws IOException
- */
- function setReadOnly($f) {
- throw new IOException("setReadonly() not implemented by local fs driver");
- }
-
- /* -- Filesystem interface -- */
-
- /**
- * List the available filesystem roots, return array of PhingFile objects
- * @throws IOException
- */
- function listRoots() {
- throw new IOException("listRoots() not implemented by local fs driver");
- }
-
- /* -- Basic infrastructure -- */
-
- /**
- * Compare two abstract pathnames lexicographically.
- *
- * @param PhingFile $f1
- * @param PhingFile $f2
- */
- function compare(PhingFile $f1, PhingFile $f2) {
- throw new IOException("compare() not implemented by local fs driver");
- }
-
- /**
- * Copy a file.
- *
- * @param PhingFile $src Source path and name file to copy.
- * @param PhingFile $dest Destination path and name of new file.
- *
- * @return void
- * @throws IOException if file cannot be copied.
- */
- function copy(PhingFile $src, PhingFile $dest) {
- global $php_errormsg;
-
- // Recursively copy a directory
- if($src->isDirectory()) {
- return $this->copyr($src->getAbsolutePath(), $dest->getAbsolutePath());
- }
-
- $srcPath = $src->getAbsolutePath();
- $destPath = $dest->getAbsolutePath();
-
- if (false === @copy($srcPath, $destPath)) { // Copy FAILED. Log and return err.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::copy() FAILED. Cannot copy $srcPath to $destPath. $php_errormsg";
- throw new IOException($msg);
- }
-
- try {
- $dest->setMode($src->getMode());
- } catch(Exception $exc) {
- // [MA] does chmod returns an error on systems that do not support it ?
- // eat it up for now.
- }
- }
-
- /**
- * Copy a file, or recursively copy a folder and its contents
- *
- * @author Aidan Lister <aidan@php.net>
- * @version 1.0.1
- * @link http://aidanlister.com/repos/v/function.copyr.php
- * @param string $source Source path
- * @param string $dest Destination path
- * @return bool Returns TRUE on success, FALSE on failure
- */
- function copyr($source, $dest)
- {
- // Check for symlinks
- if (is_link($source)) {
- return symlink(readlink($source), $dest);
- }
-
- // Simple copy for a file
- if (is_file($source)) {
- return copy($source, $dest);
- }
-
- // Make destination directory
- if (!is_dir($dest)) {
- mkdir($dest);
- }
-
- // Loop through the folder
- $dir = dir($source);
- while (false !== $entry = $dir->read()) {
- // Skip pointers
- if ($entry == '.' || $entry == '..') {
- continue;
- }
-
- // Deep copy directories
- $this->copyr("$source/$entry", "$dest/$entry");
- }
-
- // Clean up
- $dir->close();
- return true;
- }
-
- /**
- * Change the ownership on a file or directory.
- *
- * @param string $pathname Path and name of file or directory.
- * @param string $user The user name or number of the file or directory. See http://us.php.net/chown
- *
- * @return void
- * @throws Exception if operation failed.
- */
- function chown($pathname, $user) {
- if (false === @chown($pathname, $user)) {// FAILED.
- $msg = "FileSystem::chown() FAILED. Cannot chown $pathname. User $user." . (isset($php_errormsg) ? ' ' . $php_errormsg : "");
- throw new IOException($msg);
- }
- }
-
- /**
- * Change the group on a file or directory.
- *
- * @param string $pathname Path and name of file or directory.
- * @param string $group The group of the file or directory. See http://us.php.net/chgrp
- *
- * @return void
- * @throws IOException if operation failed.
- */
- function chgrp($pathname, $group) {
- if (false === @chgrp($pathname, $group)) {// FAILED.
- $msg = "FileSystem::chgrp() FAILED. Cannot chown $pathname. Group $group." . (isset($php_errormsg) ? ' ' . $php_errormsg : "");
- throw new IOException($msg);
- }
- }
-
- /**
- * Change the permissions on a file or directory.
- *
- * @param string $pathname Path and name of file or directory.
- * @param int $mode The mode (permissions) of the file or
- * directory. If using octal add leading 0. eg. 0777.
- * Mode is affected by the umask system setting.
- *
- * @return void
- * @throws IOException if operation failed.
- */
- function chmod($pathname, $mode) {
- $str_mode = decoct($mode); // Show octal in messages.
- if (false === @chmod($pathname, $mode)) {// FAILED.
- $msg = "FileSystem::chmod() FAILED. Cannot chmod $pathname. Mode $str_mode." . (isset($php_errormsg) ? ' ' . $php_errormsg : "");
- throw new IOException($msg);
- }
- }
-
- /**
- * Locks a file and throws an Exception if this is not possible.
- *
- * @param PhingFile $f
- * @return void
- * @throws Exception
- */
- function lock(PhingFile $f) {
- $filename = $f->getPath();
- $fp = @fopen($filename, "w");
- $result = @flock($fp, LOCK_EX);
- @fclose($fp);
- if (!$result) {
- throw new IOException("Could not lock file '$filename'");
- }
- }
-
- /**
- * Unlocks a file and throws an IO Error if this is not possible.
- *
- * @param PhingFile $f
- * @throws IOException
- * @return void
- */
- function unlock(PhingFile $f) {
- $filename = $f->getPath();
- $fp = @fopen($filename, "w");
- $result = @flock($fp, LOCK_UN);
- fclose($fp);
- if (!$result) {
- throw new Exception("Could not unlock file '$filename'");
- }
- }
-
- /**
- * Delete a file.
- *
- * @param string $file Path and/or name of file to delete.
- *
- * @return void
- * @throws IOException - if an error is encountered.
- */
- function unlink($file) {
- global $php_errormsg;
- if (false === @unlink($file)) {
- $msg = "FileSystem::unlink() FAILED. Cannot unlink '$file'. $php_errormsg";
- throw new IOException($msg);
- }
- }
-
- /**
- * Symbolically link a file to another name.
- *
- * Currently symlink is not implemented on Windows. Don't use if the application is to be portable.
- *
- * @param string $target Path and/or name of file to link.
- * @param string $link Path and/or name of link to be created.
- * @return void
- */
- function symlink($target, $link) {
-
- // If Windows OS then symlink() will report it is not supported in
- // the build. Use this error instead of checking for Windows as the OS.
-
- if (false === @symlink($target, $link)) {
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::Symlink() FAILED. Cannot symlink '$target' to '$link'. $php_errormsg";
- throw new IOException($msg);
- }
-
- }
-
- /**
- * Set the modification and access time on a file to the present time.
- *
- * @param string $file Path and/or name of file to touch.
- * @param int $time
- * @return void
- */
- function touch($file, $time = null) {
- global $php_errormsg;
-
- if (null === $time) {
- $error = @touch($file);
- } else {
- $error = @touch($file, $time);
- }
-
- if (false === $error) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::touch() FAILED. Cannot touch '$file'. $php_errormsg";
- throw new Exception($msg);
- }
- }
-
- /**
- * Delete an empty directory OR a directory and all of its contents.
- *
- * @param dir String. Path and/or name of directory to delete.
- * @param children Boolean. False: don't delete directory contents.
- * True: delete directory contents.
- *
- * @return void
- */
- function rmdir($dir, $children = false) {
- global $php_errormsg;
-
- // If children=FALSE only delete dir if empty.
- if (false === $children) {
-
- if (false === @rmdir($dir)) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
- throw new Exception($msg);
- }
-
- } else { // delete contents and dir.
-
- $handle = @opendir($dir);
-
- if (false === $handle) { // Error.
-
- $msg = "FileSystem::rmdir() FAILED. Cannot opendir() $dir. $php_errormsg";
- throw new Exception($msg);
-
- } else { // Read from handle.
-
- // Don't error on readdir().
- while (false !== ($entry = @readdir($handle))) {
-
- if ($entry != '.' && $entry != '..') {
-
- // Only add / if it isn't already the last char.
- // This ONLY serves the purpose of making the Logger
- // output look nice:)
-
- if (strpos(strrev($dir), DIRECTORY_SEPARATOR) === 0) {// there is a /
- $next_entry = $dir . $entry;
- } else { // no /
- $next_entry = $dir . DIRECTORY_SEPARATOR . $entry;
- }
-
- // NOTE: As of php 4.1.1 is_dir doesn't return FALSE it
- // returns 0. So use == not ===.
-
- // Don't error on is_dir()
- if (false == @is_dir($next_entry)) { // Is file.
-
- try {
- self::unlink($next_entry); // Delete.
- } catch (Exception $e) {
- $msg = "FileSystem::Rmdir() FAILED. Cannot FileSystem::Unlink() $next_entry. ". $e->getMessage();
- throw new Exception($msg);
- }
-
- } else { // Is directory.
-
- try {
- self::rmdir($next_entry, true); // Delete
- } catch (Exception $e) {
- $msg = "FileSystem::rmdir() FAILED. Cannot FileSystem::rmdir() $next_entry. ". $e->getMessage();
- throw new Exception($msg);
- }
-
- } // end is_dir else
- } // end .. if
- } // end while
- } // end handle if
-
- // Don't error on closedir()
- @closedir($handle);
-
- if (false === @rmdir($dir)) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
- throw new Exception($msg);
- }
-
- }
-
- }
-
- /**
- * Set the umask for file and directory creation.
- *
- * @param mode Int. Permissions ususally in ocatal. Use leading 0 for
- * octal. Number between 0 and 0777.
- *
- * @return void
- * @throws Exception if there is an error performing operation.
- */
- function umask($mode) {
- global $php_errormsg;
-
- // CONSIDERME:
- // Throw a warning if mode is 0. PHP converts illegal octal numbers to
- // 0 so 0 might not be what the user intended.
-
- $str_mode = decoct($mode); // Show octal in messages.
-
- if (false === @umask($mode)) { // FAILED.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::Umask() FAILED. Value $mode. $php_errormsg";
- throw new Exception($msg);
- }
- }
-
- /**
- * Compare the modified time of two files.
- *
- * @param file1 String. Path and name of file1.
- * @param file2 String. Path and name of file2.
- *
- * @return Int. 1 if file1 is newer.
- * -1 if file2 is newer.
- * 0 if files have the same time.
- * Err object on failure.
- *
- * @throws Exception - if cannot get modified time of either file.
- */
- function compareMTimes($file1, $file2) {
-
- $mtime1 = filemtime($file1);
- $mtime2 = filemtime($file2);
-
- if ($mtime1 === false) { // FAILED. Log and return err.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::compareMTimes() FAILED. Cannot can not get modified time of $file1.";
- throw new Exception($msg);
- } elseif ($mtime2 === false) { // FAILED. Log and return err.
- // Add error from php to end of log message. $php_errormsg.
- $msg = "FileSystem::compareMTimes() FAILED. Cannot can not get modified time of $file2.";
- throw new Exception($msg);
- } else { // Worked. Log and return compare.
- // Compare mtimes.
- if ($mtime1 == $mtime2) {
- return 0;
- } else {
- return ($mtime1 < $mtime2) ? -1 : 1;
- } // end compare
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/system/io/FileWriter.php b/buildscripts/phing/classes/phing/system/io/FileWriter.php
deleted file mode 100644
index d58b0513..00000000
--- a/buildscripts/phing/classes/phing/system/io/FileWriter.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/*
- * $Id: 52ca0f8163c260b3f9f14cd83fa292292674a060 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/OutputStreamWriter.php';
-require_once 'phing/system/io/FileOutputStream.php';
-
-/**
- * Convenience class for performing file write operations.
- *
- * @package phing.system.io
- */
-class FileWriter extends OutputStreamWriter {
-
- /**
- * Construct a new FileWriter.
- * @param mixed $file PhingFile or string pathname.
- * @param boolean $append Append to existing file?
- */
- function __construct($file, $append = false) {
- $out = new FileOutputStream($file, $append);
- parent::__construct($out);
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/FilterReader.php b/buildscripts/phing/classes/phing/system/io/FilterReader.php
deleted file mode 100644
index 527ce17f..00000000
--- a/buildscripts/phing/classes/phing/system/io/FilterReader.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/*
- * $Id: 70652dbec76165f9ab0311daffde790df58eaf8e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/Reader.php';
-
-/**
- * Wrapper class for readers, which can be used to apply filters.
- * @package phing.system.io
- */
-class FilterReader extends Reader {
-
- /**
- * @var Reader
- */
- protected $in;
-
- function __construct(Reader $in = null) {
- $this->in = $in;
- }
-
- public function setReader(Reader $in) {
- $this->in = $in;
- }
-
- public function skip($n) {
- return $this->in->skip($n);
- }
-
- /**
- * Read data from source.
- * FIXME: Clean up this function signature, as it a) params aren't being used
- * and b) it doesn't make much sense.
- */
- public function read($len = null) {
- return $this->in->read($len);
- }
-
- public function reset() {
- return $this->in->reset();
- }
-
- public function close() {
- return $this->in->close();
- }
-
- function getResource() {
- return $this->in->getResource();
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/IOException.php b/buildscripts/phing/classes/phing/system/io/IOException.php
deleted file mode 100644
index 8aa1465f..00000000
--- a/buildscripts/phing/classes/phing/system/io/IOException.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/*
- * $Id: 8a019e4034b2236c19058ea849b12fb88d3e2f43 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Extends Exception to take advantage of methods therein.
- *
- * @package phing.system.io
- */
-class IOException extends Exception {}
diff --git a/buildscripts/phing/classes/phing/system/io/InputStream.php b/buildscripts/phing/classes/phing/system/io/InputStream.php
deleted file mode 100644
index f25fbe61..00000000
--- a/buildscripts/phing/classes/phing/system/io/InputStream.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-/*
- * $Id: 3ec0be3a0e0c81568513a11cbf4d4b453928a338 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Wrapper class for PHP stream that supports read operations.
- *
- * @package phing.system.io
- */
-class InputStream {
-
- /**
- * @var resource The attached PHP stream.
- */
- protected $stream;
-
- /**
- * @var int Position of stream cursor.
- */
- protected $currentPosition = 0;
-
- /**
- * @var int Marked position of stream cursor.
- */
- protected $mark = 0;
-
- /**
- * Construct a new InputStream.
- * @param resource $stream Configured PHP stream for writing.
- */
- public function __construct($stream) {
- if (!is_resource($stream)) {
- throw new IOException("Passed argument is not a valid stream.");
- }
- $this->stream = $stream;
- }
-
- /**
- * Skip over $n bytes.
- * @param int $n
- */
- public function skip($n) {
- $start = $this->currentPosition;
-
- $ret = @fseek($this->stream, $n, SEEK_CUR);
- if ( $ret === -1 )
- return -1;
-
- $this->currentPosition = ftell($this->stream);
-
- if ( $start > $this->currentPosition )
- $skipped = $start - $this->currentPosition;
- else
- $skipped = $this->currentPosition - $start;
-
- return $skipped;
- }
-
- /**
- * Read data from stream until $len chars or EOF.
- * @param int $len Num chars to read. If not specified this stream will read until EOF.
- * @return string chars read or -1 if eof.
- */
- public function read($len = null) {
-
- if ($this->eof()) {
- return -1;
- }
-
- if ($len === null) { // we want to keep reading until we get an eof
- $out = "";
- while(!$this->eof()) {
- $out .= fread($this->stream, 8192);
- $this->currentPosition = ftell($this->stream);
- }
- } else {
- $out = fread($this->stream, $len); // adding 1 seems to ensure that next call to read() will return EOF (-1)
- $this->currentPosition = ftell($this->stream);
- }
-
- return $out;
- }
-
- /**
- * Marks the current position in this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- public function mark() {
- if (!$this->markSupported()) {
- throw new IOException(get_class($this) . " does not support mark() and reset() methods.");
- }
- $this->mark = $this->currentPosition;
- }
-
- /**
- * Whether the input stream supports mark and reset methods.
- * @return boolean
- */
- public function markSupported() {
- return false;
- }
-
- /**
- * Repositions this stream to the position at the time the mark method was last called on this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- function reset() {
- if (!$this->markSupported()) {
- throw new IOException(get_class($this) . " does not support mark() and reset() methods.");
- }
- // goes back to last mark, by default this would be 0 (i.e. rewind file).
- fseek($this->stream, SEEK_SET, $this->mark);
- $this->mark = 0;
- }
-
- /**
- * Closes stream.
- * @throws IOException if stream cannot be closed (note that calling close() on an already-closed stream will not raise an exception)
- */
- public function close() {
- if ($this->stream === null) {
- return;
- }
- if (false === @fclose($this->stream)) {
- // FAILED.
- $msg = "Cannot fclose " . $this->file->__toString() . " $php_errormsg";
- throw new IOException($msg);
- }
- $this->stream = null;
- }
-
- /**
- * Whether eof has been reached with stream.
- * @return boolean
- */
- public function eof() {
- return feof($this->stream);
- }
-
- /**
- * Reads a entire until EOF and places contents in passed-in variable. Stream is closed after read.
- *
- * @param string &$rBuffer String variable where read contents will be put.
- * @return TRUE on success.
- * @author Charlie Killian, charlie@tizac.com
- * @throws IOException - if there is an error reading from stream.
- * @deprecated - Instead, use the read() method or a BufferedReader.
- */
- public function readInto(&$rBuffer) {
- $rBuffer = $this->read();
- $this->close();
- }
-
- /**
- * Returns string representation of attached stream.
- * @return string
- */
- public function __toString() {
- return (string) $this->stream;
- }
-}
diff --git a/buildscripts/phing/classes/phing/system/io/InputStreamReader.php b/buildscripts/phing/classes/phing/system/io/InputStreamReader.php
deleted file mode 100644
index a21f9f05..00000000
--- a/buildscripts/phing/classes/phing/system/io/InputStreamReader.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/*
- * $Id: 823f584f1834166724cd370f91fa1bd2c66b0e94 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/system/io/Reader.php';
-
-/**
- * Writer class for OutputStream objects.
- *
- * Unlike the Java counterpart, this class does not (yet) handle
- * character set transformations. This will be an important function
- * of this class with move to supporting PHP6.
- *
- * @package phing.system.io
- */
-class InputStreamReader extends Reader {
-
- /**
- * @var InputStream
- */
- protected $inStream;
-
- /**
- * Construct a new InputStreamReader.
- * @param InputStream $$inStream InputStream to read from
- */
- public function __construct(InputStream $inStream) {
- $this->inStream = $inStream;
- }
-
- /**
- * Close the stream.
- */
- public function close() {
- return $this->inStream->close();
- }
-
- /**
- * Skip over $n bytes.
- * @param int $n
- */
- public function skip($n) {
- return $this->inStream->skip($n);
- }
-
- /**
- * Read data from file.
- * @param int $len Num chars to read.
- * @return string chars read or -1 if eof.
- */
- public function read($len = null) {
- return $this->inStream->read($len);
- }
-
- /**
- * Marks the current position in this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- public function mark() {
- $this->inStream->mark();
- }
-
- /**
- * Whether the attached stream supports mark/reset.
- * @return boolean
- */
- public function markSupported() {
- return $this->inStream->markSupported();
- }
-
- /**
- * Repositions this stream to the position at the time the mark method was last called on this input stream.
- * @throws IOException - if the underlying stream doesn't support this method.
- */
- public function reset() {
- $this->inStream->reset();
- }
-
- /**
- * Whether eof has been reached with stream.
- * @return boolean
- */
- public function eof() {
- return $this->inStream->eof();
- }
-
- /**
- * Reads a entire file and stores the data in the variable
- * passed by reference.
- *
- * @param string $file String. Path and/or name of file to read.
- * @param object &$rBuffer Reference. Variable of where to put contents.
- *
- * @return TRUE on success. Err object on failure.
- * @author Charlie Killian, charlie@tizac.com
- * @deprecated Use read() or BufferedReader instead.
- */
- public function readInto(&$rBuffer) {
- return $this->inStream->readInto($rBuffer);
- }
-
- /**
- * Returns string representation of attached stream.
- * @return string
- */
- public function getResource() {
- return $this->inStream->__toString();
- }
-}
diff --git a/buildscripts/phing/classes/phing/system/io/OutputStream.php b/buildscripts/phing/classes/phing/system/io/OutputStream.php
deleted file mode 100644
index 09e15c0e..00000000
--- a/buildscripts/phing/classes/phing/system/io/OutputStream.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/*
- * $Id: 3ef1bb9c45c0e679debf227c5e4699f88f692943 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Wrapper class for PHP stream that supports write operations.
- *
- * @package phing.system.io
- */
-class OutputStream {
-
- /**
- * @var resource The configured PHP stream.
- */
- protected $stream;
-
- /**
- * Construct a new OutputStream.
- * @param resource $stream Configured PHP stream for writing.
- */
- public function __construct($stream) {
- if (!is_resource($stream)) {
- throw new IOException("Passed argument is not a valid stream.");
- }
- $this->stream = $stream;
- }
-
- /**
- * Closes attached stream, flushing output first.
- * @throws IOException if cannot close stream (note that attempting to close an already closed stream will not raise an IOException)
- * @return void
- */
- public function close() {
- if ($this->stream === null) {
- return;
- }
- $this->flush();
- if (false === @fclose($this->stream)) {
- $msg = "Cannot close " . $this->getResource() . ": $php_errormsg";
- throw new IOException($msg);
- }
- $this->stream = null;
- }
-
- /**
- * Flushes stream.
- *
- * @throws IOException if unable to flush data (e.g. stream is not open).
- */
- public function flush() {
- if (false === @fflush($this->stream)) {
- throw new IOException("Could not flush stream: " . $php_errormsg);
- }
- }
-
- /**
- * Writes data to stream.
- *
- * @param string $buf Binary/character data to write.
- * @param int $off (Optional) offset.
- * @param int $len (Optional) number of bytes/chars to write.
- * @return void
- * @throws IOException - if there is an error writing to stream
- */
- public function write($buf, $off = null, $len = null) {
- if ( $off === null && $len === null ) {
- $to_write = $buf;
- } elseif ($off !== null && $len === null) {
- $to_write = substr($buf, $off);
- } elseif ($off === null && $len !== null) {
- $to_write = substr($buf, 0, $len);
- } else {
- $to_write = substr($buf, $off, $len);
- }
-
- $result = @fwrite($this->stream, $to_write);
-
- if ( $result === false ) {
- throw new IOException("Error writing to stream.");
- }
- }
-
- /**
- * Returns a string representation of the attached PHP stream.
- * @return string
- */
- public function __toString() {
- return (string) $this->stream;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/OutputStreamWriter.php b/buildscripts/phing/classes/phing/system/io/OutputStreamWriter.php
deleted file mode 100644
index 0b821e67..00000000
--- a/buildscripts/phing/classes/phing/system/io/OutputStreamWriter.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * $Id: c1446fc1a19aef45f74766420ec89c2c37b32e01 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/Writer.php';
-
-/**
- * Writer class for OutputStream objects.
- *
- * Unlike the Java counterpart, this class does not (yet) handle
- * character set transformations. This will be an important function
- * of this class with move to supporting PHP6.
- *
- * @package phing.system.io
- */
-class OutputStreamWriter extends Writer {
-
- /**
- * @var OutputStream
- */
- protected $outStream;
-
- /**
- * Construct a new OutputStreamWriter.
- * @param OutputStream $outStream OutputStream to write to
- */
- public function __construct(OutputStream $outStream) {
- $this->outStream = $outStream;
- }
-
- /**
- * Close the stream.
- */
- public function close() {
- return $this->outStream->close();
- }
-
- /**
- * Write char data to stream.
- *
- * @param unknown_type $buf
- * @param unknown_type $off
- * @param unknown_type $len
- * @return unknown
- */
- public function write($buf, $off = null, $len = null) {
- return $this->outStream->write($buf, $off, $len);
- }
-
- /**
- * Flush output to the stream.
- */
- public function flush() {
- $this->outStream->flush();
- }
-
- /**
- * Gets a string representation of attached stream resource.
- *
- * @return string String representation of output stream
- */
- public function getResource() {
- return $this->outStream->__toString();
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/PhingFile.php b/buildscripts/phing/classes/phing/system/io/PhingFile.php
deleted file mode 100755
index 871afedd..00000000
--- a/buildscripts/phing/classes/phing/system/io/PhingFile.php
+++ /dev/null
@@ -1,996 +0,0 @@
-<?php
-/*
- * $Id: d2cfaf834a2cc605a3aedf37285f547010b8b4f4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/FileSystem.php';
-include_once 'phing/system/lang/NullPointerException.php';
-
-/**
- * An abstract representation of file and directory pathnames.
- *
- * @version $Id$
- * @package phing.system.io
- */
-class PhingFile {
-
- /** separator string, static, obtained from FileSystem */
- public static $separator;
-
- /** path separator string, static, obtained from FileSystem (; or :)*/
- public static $pathSeparator;
-
- /**
- * This abstract pathname's normalized pathname string. A normalized
- * pathname string uses the default name-separator character and does not
- * contain any duplicate or redundant separators.
- */
- private $path = null;
-
- /**
- * The length of this abstract pathname's prefix, or zero if it has no prefix.
- * @var int
- */
- private $prefixLength = 0;
-
- /** constructor */
- function __construct($arg1 = null, $arg2 = null) {
-
- if (self::$separator === null || self::$pathSeparator === null) {
- $fs = FileSystem::getFileSystem();
- self::$separator = $fs->getSeparator();
- self::$pathSeparator = $fs->getPathSeparator();
- }
-
- /* simulate signature identified constructors */
- if ($arg1 instanceof PhingFile && is_string($arg2)) {
- $this->_constructFileParentStringChild($arg1, $arg2);
- } elseif (is_string($arg1) && ($arg2 === null)) {
- $this->_constructPathname($arg1);
- } elseif(is_string($arg1) && is_string($arg2)) {
- $this->_constructStringParentStringChild($arg1, $arg2);
- } else {
- if ($arg1 === null) {
- throw new NullPointerException("Argument1 to function must not be null");
- }
- $this->path = (string) $arg1;
- $this->prefixLength = (int) $arg2;
- }
- }
-
- /**
- * Returns the length of this abstract pathname's prefix.
- *
- * @return int
- */
- function getPrefixLength() {
- return (int) $this->prefixLength;
- }
-
- /* -- constructors not called by signature match, so we need some helpers --*/
-
- /**
- *
- * Enter description here ...
- * @param unknown_type $pathname
- */
- protected function _constructPathname($pathname) {
- // obtain ref to the filesystem layer
- $fs = FileSystem::getFileSystem();
-
- if ($pathname === null) {
- throw new NullPointerException("Argument to function must not be null");
- }
-
- $this->path = (string) $fs->normalize($pathname);
- $this->prefixLength = (int) $fs->prefixLength($this->path);
- }
-
- /**
- *
- * Enter description here ...
- * @param unknown_type $parent
- * @param unknown_type $child
- */
- protected function _constructStringParentStringChild($parent, $child = null) {
- // obtain ref to the filesystem layer
- $fs = FileSystem::getFileSystem();
-
- if ($child === null) {
- throw new NullPointerException("Argument to function must not be null");
- }
- if ($parent !== null) {
- if ($parent === "") {
- $this->path = $fs->resolve($fs->getDefaultParent(), $fs->normalize($child));
- } else {
- $this->path = $fs->resolve($fs->normalize($parent), $fs->normalize($child));
- }
- } else {
- $this->path = (string) $fs->normalize($child);
- }
- $this->prefixLength = (int) $fs->prefixLength($this->path);
- }
-
- /**
- *
- * Enter description here ...
- * @param unknown_type $parent
- * @param unknown_type $child
- */
- protected function _constructFileParentStringChild($parent, $child = null) {
- // obtain ref to the filesystem layer
- $fs = FileSystem::getFileSystem();
-
- if ($child === null) {
- throw new NullPointerException("Argument to function must not be null");
- }
-
- if ($parent !== null) {
- if ($parent->path === "") {
- $this->path = $fs->resolve($fs->getDefaultParent(), $fs->normalize($child));
- } else {
- $this->path = $fs->resolve($parent->path, $fs->normalize($child));
- }
- } else {
- $this->path = $fs->normalize($child);
- }
- $this->prefixLength = $fs->prefixLength($this->path);
- }
-
- /* -- Path-component accessors -- */
-
- /**
- * Returns the name of the file or directory denoted by this abstract
- * pathname. This is just the last name in the pathname's name
- * sequence. If the pathname's name sequence is empty, then the empty
- * string is returned.
- *
- * @return The name of the file or directory denoted by this abstract
- * pathname, or the empty string if this pathname's name sequence
- * is empty
- */
- function getName() {
- // that's a lastIndexOf
- $index = ((($res = strrpos($this->path, self::$separator)) === false) ? -1 : $res);
- if ($index < $this->prefixLength) {
- return substr($this->path, $this->prefixLength);
- }
- return substr($this->path, $index + 1);
- }
-
- /**
- * Returns the pathname string of this abstract pathname's parent, or
- * null if this pathname does not name a parent directory.
- *
- * The parent of an abstract pathname consists of the pathname's prefix,
- * if any, and each name in the pathname's name sequence except for the last.
- * If the name sequence is empty then the pathname does not name a parent
- * directory.
- *
- * @return The pathname string of the parent directory named by this
- * abstract pathname, or null if this pathname does not name a parent
- */
- function getParent() {
- // that's a lastIndexOf
- $index = ((($res = strrpos($this->path, self::$separator)) === false) ? -1 : $res);
- if ($index < $this->prefixLength) {
- if (($this->prefixLength > 0) && (strlen($this->path) > $this->prefixLength)) {
- return substr($this->path, 0, $this->prefixLength);
- }
- return null;
- }
- return substr($this->path, 0, $index);
- }
-
- /**
- * Returns the abstract pathname of this abstract pathname's parent,
- * or null if this pathname does not name a parent directory.
- *
- * The parent of an abstract pathname consists of the pathname's prefix,
- * if any, and each name in the pathname's name sequence except for the
- * last. If the name sequence is empty then the pathname does not name
- * a parent directory.
- *
- * @return The abstract pathname of the parent directory named by this
- * abstract pathname, or null if this pathname
- * does not name a parent
- */
- function getParentFile() {
- $p = $this->getParent();
- if ($p === null) {
- return null;
- }
- return new PhingFile((string) $p, (int) $this->prefixLength);
- }
-
- /**
- * Converts this abstract pathname into a pathname string. The resulting
- * string uses the default name-separator character to separate the names
- * in the name sequence.
- *
- * @return string The string form of this abstract pathname
- */
- function getPath() {
- return (string) $this->path;
- }
-
- /**
- * Returns path without leading basedir.
- *
- * @param string $basedir Base directory to strip
- *
- * @return string Path without basedir
- *
- * @uses getPath()
- */
- function getPathWithoutBase($basedir)
- {
- if (!StringHelper::endsWith(self::$separator, $basedir)) {
- $basedir .= self::$separator;
- }
- $path = $this->getPath();
- if (!substr($path, 0, strlen($basedir)) == $basedir) {
- //path does not begin with basedir, we don't modify it
- return $path;
- }
- return substr($path, strlen($basedir));
- }
-
- /**
- * Tests whether this abstract pathname is absolute. The definition of
- * absolute pathname is system dependent. On UNIX systems, a pathname is
- * absolute if its prefix is "/". On Win32 systems, a pathname is absolute
- * if its prefix is a drive specifier followed by "\\", or if its prefix
- * is "\\".
- *
- * @return boolean true if this abstract pathname is absolute, false otherwise
- */
- function isAbsolute() {
- return ($this->prefixLength !== 0);
- }
-
-
- /**
- * Returns the absolute pathname string of this abstract pathname.
- *
- * If this abstract pathname is already absolute, then the pathname
- * string is simply returned as if by the getPath method.
- * If this abstract pathname is the empty abstract pathname then
- * the pathname string of the current user directory, which is named by the
- * system property user.dir, is returned. Otherwise this
- * pathname is resolved in a system-dependent way. On UNIX systems, a
- * relative pathname is made absolute by resolving it against the current
- * user directory. On Win32 systems, a relative pathname is made absolute
- * by resolving it against the current directory of the drive named by the
- * pathname, if any; if not, it is resolved against the current user
- * directory.
- *
- * @return string The absolute pathname string denoting the same file or
- * directory as this abstract pathname
- * @see #isAbsolute()
- */
- function getAbsolutePath() {
- $fs = FileSystem::getFileSystem();
- return $fs->resolveFile($this);
- }
-
- /**
- * Returns the absolute form of this abstract pathname. Equivalent to
- * getAbsolutePath.
- *
- * @return string The absolute abstract pathname denoting the same file or
- * directory as this abstract pathname
- */
- function getAbsoluteFile() {
- return new PhingFile((string) $this->getAbsolutePath());
- }
-
-
- /**
- * Returns the canonical pathname string of this abstract pathname.
- *
- * A canonical pathname is both absolute and unique. The precise
- * definition of canonical form is system-dependent. This method first
- * converts this pathname to absolute form if necessary, as if by invoking the
- * getAbsolutePath() method, and then maps it to its unique form in a
- * system-dependent way. This typically involves removing redundant names
- * such as "." and .. from the pathname, resolving symbolic links
- * (on UNIX platforms), and converting drive letters to a standard case
- * (on Win32 platforms).
- *
- * Every pathname that denotes an existing file or directory has a
- * unique canonical form. Every pathname that denotes a nonexistent file
- * or directory also has a unique canonical form. The canonical form of
- * the pathname of a nonexistent file or directory may be different from
- * the canonical form of the same pathname after the file or directory is
- * created. Similarly, the canonical form of the pathname of an existing
- * file or directory may be different from the canonical form of the same
- * pathname after the file or directory is deleted.
- *
- * @return string The canonical pathname string denoting the same file or
- * directory as this abstract pathname
- */
- function getCanonicalPath() {
- $fs = FileSystem::getFileSystem();
- return $fs->canonicalize($this->path);
- }
-
-
- /**
- * Returns the canonical form of this abstract pathname. Equivalent to
- * getCanonicalPath(.
- *
- * @return PhingFile The canonical pathname string denoting the same file or
- * directory as this abstract pathname
- */
- function getCanonicalFile() {
- return new PhingFile($this->getCanonicalPath());
- }
-
- /**
- * Converts this abstract pathname into a file: URL. The
- * exact form of the URL is system-dependent. If it can be determined that
- * the file denoted by this abstract pathname is a directory, then the
- * resulting URL will end with a slash.
- *
- * Usage note: This method does not automatically escape
- * characters that are illegal in URLs. It is recommended that new code
- * convert an abstract pathname into a URL by first converting it into a
- * URI, via the toURI() method, and then converting the URI
- * into a URL via the URI::toURL()
- *
- * @return void A URL object representing the equivalent file URL
- * @todo Not implemented yet
- *
- */
- function toURL() {
- /*
- // URL class not implemented yet
- return new URL("file", "", $this->_slashify($this->getAbsolutePath(), $this->isDirectory()));
- */
- }
-
- /**
- * Constructs a file: URI that represents this abstract pathname.
- * @todo Not implemented yet
- * @return void
- */
- function toURI() {
- /*
- $f = $this->getAbsoluteFile();
- $sp = (string) $this->slashify($f->getPath(), $f->isDirectory());
- if (StringHelper::startsWith('//', $sp))
- $sp = '//' + sp;
- return new URI('file', null, $sp, null);
- */
- }
-
- /**
- *
- * Enter description here ...
- * @param PhingFile|string $path
- * @param boolean $isDirectory
- * @return string
- */
- function _slashify($path, $isDirectory) {
- $p = (string) $path;
-
- if (self::$separator !== '/') {
- $p = str_replace(self::$separator, '/', $p);
- }
-
- if (!StringHelper::startsWith('/', $p)) {
- $p = '/'.$p;
- }
-
- if (!StringHelper::endsWith('/', $p) && $isDirectory) {
- $p = $p.'/';
- }
-
- return $p;
- }
-
- /* -- Attribute accessors -- */
-
- /**
- * Tests whether the application can read the file denoted by this
- * abstract pathname.
- *
- * @return boolean true if and only if the file specified by this
- * abstract pathname exists and can be read by the
- * application; false otherwise
- */
- function canRead() {
- $fs = FileSystem::getFileSystem();
-
- if ($fs->checkAccess($this)) {
- return (boolean) @is_link($this->getAbsolutePath()) || @is_readable($this->getAbsolutePath());
- }
- return false;
- }
-
- /**
- * Tests whether the application can modify to the file denoted by this
- * abstract pathname.
- *
- * @return boolean true if and only if the file system actually
- * contains a file denoted by this abstract pathname and
- * the application is allowed to write to the file;
- * false otherwise.
- */
- function canWrite() {
- $fs = FileSystem::getFileSystem();
- return $fs->checkAccess($this, true);
- }
-
- /**
- * Tests whether the file denoted by this abstract pathname exists.
- *
- * @return boolean true if and only if the file denoted by this
- * abstract pathname exists; false otherwise
- */
- function exists() {
- clearstatcache();
-
- if (is_link($this->path)) {
- return true;
- } else if ($this->isFile()) {
- return @file_exists($this->path) || is_link($this->path);
- } else {
- return @is_dir($this->path);
- }
- }
-
- /**
- * Tests whether the file denoted by this abstract pathname is a
- * directory.
- *
- * @return boolean true if and only if the file denoted by this
- * abstract pathname exists and is a directory;
- * false otherwise
- */
- function isDirectory() {
- clearstatcache();
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->path);
- }
- return @is_dir($this->path) && !@is_link($this->path);
- }
-
- /**
- * Tests whether the file denoted by this abstract pathname is a normal
- * file. A file is normal if it is not a directory and, in
- * addition, satisfies other system-dependent criteria. Any non-directory
- * file created by a Java application is guaranteed to be a normal file.
- *
- * @return boolean true if and only if the file denoted by this
- * abstract pathname exists and is a normal file;
- * false otherwise
- */
- function isFile() {
- clearstatcache();
- //$fs = FileSystem::getFileSystem();
- return @is_file($this->path);
- }
-
- /**
- * Tests whether the file named by this abstract pathname is a hidden
- * file. The exact definition of hidden is system-dependent. On
- * UNIX systems, a file is considered to be hidden if its name begins with
- * a period character ('.'). On Win32 systems, a file is considered to be
- * hidden if it has been marked as such in the filesystem. Currently there
- * seems to be no way to dermine isHidden on Win file systems via PHP
- *
- * @return boolean true if and only if the file denoted by this
- * abstract pathname is hidden according to the conventions of the
- * underlying platform
- */
- function isHidden() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->path);
- }
- return (($fs->getBooleanAttributes($this) & $fs->BA_HIDDEN) !== 0);
- }
-
- /**
- * Tests whether the file denoted by this abstract pathname is a symbolic link.
- *
- * @return boolean true if and only if the file denoted by this
- * abstract pathname exists and is a symbolic link;
- * false otherwise
- */
- public function isLink()
- {
- clearstatcache();
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->path);
- }
- return @is_link($this->path);
- }
-
- /**
- * Returns the target of the symbolic link denoted by this abstract pathname
- *
- * @return string the target of the symbolic link denoted by this abstract pathname
- */
- public function getLinkTarget()
- {
- return @readlink($this->path);
- }
-
- /**
- * Returns the time that the file denoted by this abstract pathname was
- * last modified.
- *
- * @return int An integer value representing the time the file was
- * last modified, measured in milliseconds since the epoch
- * (00:00:00 GMT, January 1, 1970), or 0 if the
- * file does not exist or if an I/O error occurs
- */
- function lastModified() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to " . $this->path);
- }
- return $fs->getLastModifiedTime($this);
- }
-
- /**
- * Returns the length of the file denoted by this abstract pathname.
- * The return value is unspecified if this pathname denotes a directory.
- *
- * @return int The length, in bytes, of the file denoted by this abstract
- * pathname, or 0 if the file does not exist
- */
- function length() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->path."\n");
- }
- return $fs->getLength($this);
- }
-
- /**
- * Convenience method for returning the contents of this file as a string.
- * This method uses file_get_contents() to read file in an optimized way.
- * @return string
- * @throws Exception - if file cannot be read
- */
- function contents() {
- if (!$this->canRead() || !$this->isFile()) {
- throw new IOException("Cannot read file contents!");
- }
- return file_get_contents($this->getAbsolutePath());
- }
-
- /* -- File operations -- */
-
- /**
- * Atomically creates a new, empty file named by this abstract pathname if
- * and only if a file with this name does not yet exist. The check for the
- * existence of the file and the creation of the file if it does not exist
- * are a single operation that is atomic with respect to all other
- * filesystem activities that might affect the file.
- *
- * @return boolean true if the named file does not exist and was
- * successfully created; <code>false</code> if the named file
- * already exists
- * @throws IOException if file can't be created
- */
- function createNewFile($parents=true, $mode=0777) {
- $file = FileSystem::getFileSystem()->createNewFile($this->path);
- return $file;
- }
-
- /**
- * Deletes the file or directory denoted by this abstract pathname. If
- * this pathname denotes a directory, then the directory must be empty in
- * order to be deleted.
- *
- * @return boolean true if and only if the file or directory is
- * successfully deleted; false otherwise
- */
- function delete($recursive = false) {
- $fs = FileSystem::getFileSystem();
- if ($fs->canDelete($this) !== true) {
- throw new IOException("Cannot delete " . $this->path . "\n");
- }
- return $fs->delete($this, $recursive);
- }
-
- /**
- * Requests that the file or directory denoted by this abstract pathname
- * be deleted when php terminates. Deletion will be attempted only for
- * normal termination of php and if and if only Phing::shutdown() is
- * called.
- *
- * Once deletion has been requested, it is not possible to cancel the
- * request. This method should therefore be used with care.
- *
- */
- function deleteOnExit() {
- $fs = FileSystem::getFileSystem();
- $fs->deleteOnExit($this);
- }
-
- /**
- * Returns an array of strings naming the files and directories in the
- * directory denoted by this abstract pathname.
- *
- * If this abstract pathname does not denote a directory, then this
- * method returns null Otherwise an array of strings is
- * returned, one for each file or directory in the directory. Names
- * denoting the directory itself and the directory's parent directory are
- * not included in the result. Each string is a file name rather than a
- * complete path.
- *
- * There is no guarantee that the name strings in the resulting array
- * will appear in any specific order; they are not, in particular,
- * guaranteed to appear in alphabetical order.
- *
- * @param $filter string
- * @return array An array of strings naming the files and directories in the
- * directory denoted by this abstract pathname. The array will be
- * empty if the directory is empty. Returns null if
- * this abstract pathname does not denote a directory, or if an
- * I/O error occurs.
- */
- function listDir($filter = null) {
- $fs = FileSystem::getFileSystem();
- return $fs->lister($this, $filter);
- }
-
- /**
- *
- * Enter description here ...
- * @param PhingFile[] $filter
- */
- function listFiles($filter = null) {
- $ss = $this->listDir($filter);
- if ($ss === null) {
- return null;
- }
- $n = count($ss);
- $fs = array();
- for ($i = 0; $i < $n; $i++) {
- $fs[$i] = new PhingFile((string)$this->path, (string)$ss[$i]);
- }
- return $fs;
- }
-
- /**
- * Creates the directory named by this abstract pathname, including any
- * necessary but nonexistent parent directories. Note that if this
- * operation fails it may have succeeded in creating some of the necessary
- * parent directories.
- *
- * @return boolean true if and only if the directory was created,
- * along with all necessary parent directories; false
- * otherwise
- * @throws IOException
- */
- function mkdirs($mode = 0755) {
- if ($this->exists()) {
- return false;
- }
- try {
- if ($this->mkdir($mode)) {
- return true;
- }
- } catch (IOException $ioe) {
- // IOException from mkdir() means that directory propbably didn't exist.
- }
- $parentFile = $this->getParentFile();
- return (($parentFile !== null) && ($parentFile->mkdirs($mode) && $this->mkdir($mode)));
- }
-
- /**
- * Creates the directory named by this abstract pathname.
- *
- * @return boolean true if and only if the directory was created; false otherwise
- * @throws IOException
- */
- function mkdir($mode = 0755) {
- $fs = FileSystem::getFileSystem();
-
- if ($fs->checkAccess(new PhingFile($this->path), true) !== true) {
- throw new IOException("No write access to " . $this->getPath());
- }
- return $fs->createDirectory($this, $mode);
- }
-
- /**
- * Renames the file denoted by this abstract pathname.
- *
- * @param PhingFile $destFile The new abstract pathname for the named file
- * @return boolean true if and only if the renaming succeeded; false otherwise
- */
- function renameTo(PhingFile $destFile) {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No write access to ".$this->getPath());
- }
- return $fs->rename($this, $destFile);
- }
-
- /**
- * Simple-copies file denoted by this abstract pathname into another
- * PhingFile
- *
- * @param PhingFile $destFile The new abstract pathname for the named file
- * @return boolean true if and only if the renaming succeeded; false otherwise
- */
- function copyTo(PhingFile $destFile) {
- $fs = FileSystem::getFileSystem();
-
- if ($fs->checkAccess($this) !== true) {
- throw new IOException("No read access to ".$this->getPath()."\n");
- }
-
- if ($fs->checkAccess($destFile, true) !== true) {
- throw new IOException("File::copyTo() No write access to ".$destFile->getPath());
- }
- return $fs->copy($this, $destFile);
- }
-
- /**
- * Sets the last-modified time of the file or directory named by this
- * abstract pathname.
- *
- * All platforms support file-modification times to the nearest second,
- * but some provide more precision. The argument will be truncated to fit
- * the supported precision. If the operation succeeds and no intervening
- * operations on the file take place, then the next invocation of the
- * lastModified method will return the (possibly truncated) time argument
- * that was passed to this method.
- *
- * @param int $time The new last-modified time, measured in milliseconds since
- * the epoch (00:00:00 GMT, January 1, 1970)
- * @return boolean true if and only if the operation succeeded; false otherwise
- */
- function setLastModified($time) {
- $time = (int) $time;
- if ($time < 0) {
- throw new Exception("IllegalArgumentException, Negative $time\n");
- }
-
- $fs = FileSystem::getFileSystem();
- return $fs->setLastModifiedTime($this, $time);
- }
-
- /**
- * Marks the file or directory named by this abstract pathname so that
- * only read operations are allowed. After invoking this method the file
- * or directory is guaranteed not to change until it is either deleted or
- * marked to allow write access. Whether or not a read-only file or
- * directory may be deleted depends upon the underlying system.
- *
- * @return boolean true if and only if the operation succeeded; false otherwise
- */
- function setReadOnly() {
- $fs = FileSystem::getFileSystem();
- if ($fs->checkAccess($this, true) !== true) {
- // Error, no write access
- throw new IOException("No write access to " . $this->getPath());
- }
- return $fs->setReadOnly($this);
- }
-
- /**
- * Sets the owner of the file.
- * @param mixed $user User name or number.
- */
- public function setUser($user) {
- $fs = FileSystem::getFileSystem();
- return $fs->chown($this->getPath(), $user);
- }
-
- /**
- * Retrieve the owner of this file.
- * @return int User ID of the owner of this file.
- */
- function getUser() {
- return @fileowner($this->getPath());
- }
-
- /**
- * Sets the group of the file.
- * @param mixed $user User name or number.
- */
- public function setGroup($group) {
- $fs = FileSystem::getFileSystem();
- return $fs->chgrp($this->getPath(), $group);
- }
-
- /**
- * Retrieve the group of this file.
- * @return int User ID of the owner of this file.
- */
- function getGroup() {
- return @filegroup($this->getPath());
- }
-
- /**
- * Sets the mode of the file
- * @param int $mode Ocatal mode.
- */
- function setMode($mode) {
- $fs = FileSystem::getFileSystem();
- return $fs->chmod($this->getPath(), $mode);
- }
-
- /**
- * Retrieve the mode of this file.
- * @return int
- */
- function getMode() {
- return @fileperms($this->getPath());
- }
-
- /* -- Filesystem interface -- */
-
- /**
- * List the available filesystem roots.
- *
- * A particular platform may support zero or more hierarchically-organized
- * file systems. Each file system has a root directory from which all
- * other files in that file system can be reached.
- * Windows platforms, for example, have a root directory for each active
- * drive; UNIX platforms have a single root directory, namely "/".
- * The set of available filesystem roots is affected by various system-level
- * operations such the insertion or ejection of removable media and the
- * disconnecting or unmounting of physical or virtual disk drives.
- *
- * This method returns an array of PhingFile objects that
- * denote the root directories of the available filesystem roots. It is
- * guaranteed that the canonical pathname of any file physically present on
- * the local machine will begin with one of the roots returned by this
- * method.
- *
- * The canonical pathname of a file that resides on some other machine
- * and is accessed via a remote-filesystem protocol such as SMB or NFS may
- * or may not begin with one of the roots returned by this method. If the
- * pathname of a remote file is syntactically indistinguishable from the
- * pathname of a local file then it will begin with one of the roots
- * returned by this method. Thus, for example, PhingFile objects
- * denoting the root directories of the mapped network drives of a Windows
- * platform will be returned by this method, while PhingFile
- * objects containing UNC pathnames will not be returned by this method.
- *
- * @return array An array of PhingFile objects denoting the available
- * filesystem roots, or null if the set of roots
- * could not be determined. The array will be empty if there are
- * no filesystem roots.
- */
- function listRoots() {
- $fs = FileSystem::getFileSystem();
- return (array) $fs->listRoots();
- }
-
- /* -- Tempfile management -- */
-
- /**
- * Returns the path to the temp directory.
- * @return string
- */
- public static function getTempDir() {
- return Phing::getProperty('php.tmpdir');
- }
-
- /**
- * Static method that creates a unique filename whose name begins with
- * $prefix and ends with $suffix in the directory $directory. $directory
- * is a reference to a PhingFile Object.
- * Then, the file is locked for exclusive reading/writing.
- *
- * @author manuel holtgrewe, grin@gmx.net
- * @throws IOException
- * @return PhingFile
- */
- public static function createTempFile($prefix, $suffix, PhingFile $directory) {
-
- // quick but efficient hack to create a unique filename ;-)
- $result = null;
- do {
- $result = new PhingFile($directory, $prefix . substr(md5(time()), 0, 8) . $suffix);
- } while (file_exists($result->getPath()));
-
- $fs = FileSystem::getFileSystem();
- $fs->createNewFile($result->getPath());
- $fs->lock($result);
-
- return $result;
- }
-
- /**
- * If necessary, $File the lock on $File is removed and then the file is
- * deleted
- *
- * @access public
- */
- function removeTempFile() {
- $fs = FileSystem::getFileSystem();
- // catch IO Exception
- $fs->unlock($this);
- $this->delete();
- }
-
-
- /* -- Basic infrastructure -- */
-
- /**
- * Compares two abstract pathnames lexicographically. The ordering
- * defined by this method depends upon the underlying system. On UNIX
- * systems, alphabetic case is significant in comparing pathnames; on Win32
- * systems it is not.
- *
- * @param PhingFile $file Th file whose pathname sould be compared to the pathname of this file.
- *
- * @return int Zero if the argument is equal to this abstract pathname, a
- * value less than zero if this abstract pathname is
- * lexicographically less than the argument, or a value greater
- * than zero if this abstract pathname is lexicographically
- * greater than the argument
- */
- function compareTo(PhingFile $file) {
- $fs = FileSystem::getFileSystem();
- return $fs->compare($this, $file);
- }
-
- /**
- * Tests this abstract pathname for equality with the given object.
- * Returns <code>true</code> if and only if the argument is not
- * <code>null</code> and is an abstract pathname that denotes the same file
- * or directory as this abstract pathname. Whether or not two abstract
- * pathnames are equal depends upon the underlying system. On UNIX
- * systems, alphabetic case is significant in comparing pathnames; on Win32
- * systems it is not.
- * @return boolean
- */
- function equals($obj) {
- if (($obj !== null) && ($obj instanceof PhingFile)) {
- return ($this->compareTo($obj) === 0);
- }
- return false;
- }
-
- /**
- * Backwards compatibility - @see __toString()
- *
- * @return string
- */
- public function toString()
- {
- return $this->__toString();
- }
-
- /**
- * Return string representation of the object
- *
- * @return string
- */
- public function __toString()
- {
- return $this->getPath();
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/Reader.php b/buildscripts/phing/classes/phing/system/io/Reader.php
deleted file mode 100755
index 92159469..00000000
--- a/buildscripts/phing/classes/phing/system/io/Reader.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/*
- * $Id: c6154b0ec9b7789f9e3f8b961e16e1b1ada091ed $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-/**
- * Abstract class for reading character streams.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @version $Id$
- * @package phing.system.io
- */
-abstract class Reader {
-
- /**
- * Read data from source.
- *
- * If length is specified, then only that number of chars is read,
- * otherwise stream is read until EOF.
- *
- * @param int $len
- */
- abstract public function read($len = null);
-
- /**
- * Close stream.
- * @throws IOException if there is an error closing stream
- */
- abstract public function close();
-
- /**
- * Returns the filename, url, etc. that is being read from.
- * This is critical for, e.g., ExpatParser's ability to know
- * the filename that is throwing an ExpatParserException, etc.
- * @return string
- */
- abstract function getResource();
-
- /**
- * Move stream position relative to current pos.
- * @param int $n
- */
- public function skip($n) {}
-
- /**
- * Reset the current position in stream to beginning or last mark (if supported).
- */
- public function reset() {}
-
- /**
- * If supported, places a "marker" (like a bookmark) at current stream position.
- * A subsequent call to reset() will move stream position back
- * to last marker (if supported).
- */
- public function mark() {}
-
- /**
- * Whether marking is supported.
- * @return boolean
- */
- public function markSupported() {
- return false;
- }
-
- /**
- * Is stream ready for reading.
- * @return boolean
- */
- public function ready() {
- return true;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/StringReader.php b/buildscripts/phing/classes/phing/system/io/StringReader.php
deleted file mode 100644
index e8b493e9..00000000
--- a/buildscripts/phing/classes/phing/system/io/StringReader.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * $Id: 2fba6ccfe1849d1f94b1dd91daf51e64e05cace2 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Dummy class for reading from string of characters.
- * @package phing.system.io
- */
-class StringReader extends Reader {
-
- /**
- * @var string
- */
- private $_string;
-
- /**
- * @var int
- */
- private $mark = 0;
-
- /**
- * @var int
- */
- private $currPos = 0;
-
- function __construct($string) {
- $this->_string = $string;
- }
-
- function skip($n) {}
-
- function read($len = null) {
- if ($len === null) {
- return $this->_string;
- } else {
- if ($this->currPos >= strlen($this->_string)) {
- return -1;
- }
- $out = substr($this->_string, $this->currPos, $len);
- $this->currPos += $len;
- return $out;
- }
- }
-
- function mark() {
- $this->mark = $this->currPos;
- }
-
- function reset() {
- $this->currPos = $this->mark;
- }
-
- function close() {}
-
- function open() {}
-
- function ready() {}
-
- function markSupported() {
- return true;
- }
-
- function getResource() {
- return '(string) "'.$this->_string . '"';
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/UnixFileSystem.php b/buildscripts/phing/classes/phing/system/io/UnixFileSystem.php
deleted file mode 100755
index 739ff6f6..00000000
--- a/buildscripts/phing/classes/phing/system/io/UnixFileSystem.php
+++ /dev/null
@@ -1,302 +0,0 @@
-<?php
-/*
- * $Id: ccfae0e7f76e6a02bfb20fc4b6f30eddf86d169f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/FileSystem.php';
-
-/**
- * UnixFileSystem class. This class encapsulates the basic file system functions
- * for platforms using the unix (posix)-stylish filesystem. It wraps php native
- * functions suppressing normal PHP error reporting and instead uses Exception
- * to report and error.
- *
- * This class is part of a oop based filesystem abstraction and targeted to run
- * on all supported php platforms.
- *
- * Note: For debugging turn track_errors on in the php.ini. The error messages
- * and log messages from this class will then be clearer because $php_errormsg
- * is passed as part of the message.
- *
- * FIXME:
- * - Comments
- * - Error handling reduced to min, error are handled by PhingFile mainly
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id$
- * @package phing.system.io
- */
-class UnixFileSystem extends FileSystem {
-
- /**
- * returns OS dependant path separator char
- */
- function getSeparator() {
- return '/';
- }
-
- /**
- * returns OS dependant directory separator char
- */
- function getPathSeparator() {
- return ':';
- }
-
- /**
- * A normal Unix pathname contains no duplicate slashes and does not end
- * with a slash. It may be the empty string.
- *
- * Check that the given pathname is normal. If not, invoke the real
- * normalizer on the part of the pathname that requires normalization.
- * This way we iterate through the whole pathname string only once.
- */
- function normalize($strPathname) {
-
- if (!strlen($strPathname)) {
- return;
- }
-
- // Resolve home directories. We assume /home is where all home
- // directories reside, b/c there is no other way to do this with
- // PHP AFAIK.
- if ($strPathname{0} === "~") {
- if ($strPathname{1} === "/") { // like ~/foo => /home/user/foo
- $strPathname = "/home/" . get_current_user() . substr($strPathname, 1);
- } else { // like ~foo => /home/foo
- $pos = strpos($strPathname, "/");
- $name = substr($strPathname, 1, $pos - 2);
- $strPathname = "/home/" . $name . substr($strPathname, $pos);
- }
- }
-
- $n = strlen($strPathname);
- $prevChar = 0;
- for ($i=0; $i < $n; $i++) {
- $c = $strPathname{$i};
- if (($prevChar === '/') && ($c === '/')) {
- return self::normalizer($strPathname, $n, $i - 1);
- }
- $prevChar = $c;
- }
- if ($prevChar === '/') {
- return self::normalizer($strPathname, $n, $n - 1);
- }
- return $strPathname;
- }
-
- /**
- * Normalize the given pathname, whose length is $len, starting at the given
- * $offset; everything before this offset is already normal.
- */
- protected function normalizer($pathname, $len, $offset) {
- if ($len === 0) {
- return $pathname;
- }
- $n = (int) $len;
- while (($n > 0) && ($pathname{$n-1} === '/')) {
- $n--;
- }
- if ($n === 0) {
- return '/';
- }
- $sb = "";
-
- if ($offset > 0) {
- $sb .= substr($pathname, 0, $offset);
- }
- $prevChar = 0;
- for ($i = $offset; $i < $n; $i++) {
- $c = $pathname{$i};
- if (($prevChar === '/') && ($c === '/')) {
- continue;
- }
- $sb .= $c;
- $prevChar = $c;
- }
- return $sb;
- }
-
- /**
- * Compute the length of the pathname string's prefix. The pathname
- * string must be in normal form.
- */
- function prefixLength($pathname) {
- if (strlen($pathname === 0)) {
- return 0;
- }
- return (($pathname{0} === '/') ? 1 : 0);
- }
-
- /**
- * Resolve the child pathname string against the parent.
- * Both strings must be in normal form, and the result
- * will be in normal form.
- */
- function resolve($parent, $child) {
-
- if ($child === "") {
- return $parent;
- }
-
- if ($child{0} === '/') {
- if ($parent === '/') {
- return $child;
- }
- return $parent.$child;
- }
-
- if ($parent === '/') {
- return $parent.$child;
- }
-
- return $parent.'/'.$child;
- }
-
- function getDefaultParent() {
- return '/';
- }
-
- function isAbsolute(PhingFile $f) {
- return ($f->getPrefixLength() !== 0);
- }
-
- /**
- * the file resolver
- */
- function resolveFile(PhingFile $f) {
- // resolve if parent is a file oject only
- if ($this->isAbsolute($f)) {
- return $f->getPath();
- } else {
- return $this->resolve(Phing::getProperty("user.dir"), $f->getPath());
- }
- }
-
- /* -- most of the following is mapped to the php natives wrapped by FileSystem */
-
- /* -- Attribute accessors -- */
- function getBooleanAttributes($f) {
- //$rv = getBooleanAttributes0($f);
- $name = $f->getName();
- $hidden = (strlen($name) > 0) && ($name{0} == '.');
- return ($hidden ? $this->BA_HIDDEN : 0);
- }
-
- /**
- * set file readonly on unix
- */
- function setReadOnly($f) {
- if ($f instanceof File) {
- $strPath = (string) $f->getPath();
- $perms = (int) (@fileperms($strPath) & 0444);
- return FileSystem::Chmod($strPath, $perms);
- } else {
- throw new Exception("IllegalArgumentType: Argument is not File");
- }
- }
-
- /**
- * compares file paths lexicographically
- */
- function compare(PhingFile $f1, PhingFile $f2) {
- $f1Path = $f1->getPath();
- $f2Path = $f2->getPath();
- return strcmp((string) $f1Path, (string) $f2Path);
- }
-
- /**
- * Copy a file, takes care of symbolic links
- *
- * @param PhingFile $src Source path and name file to copy.
- * @param PhingFile $dest Destination path and name of new file.
- *
- * @return void
- * @throws Exception if file cannot be copied.
- */
- function copy(PhingFile $src, PhingFile $dest) {
- global $php_errormsg;
-
- if (!$src->isLink())
- {
- return parent::copy($src, $dest);
- }
-
- $srcPath = $src->getAbsolutePath();
- $destPath = $dest->getAbsolutePath();
-
- $linkTarget = $src->getLinkTarget();
- if (false === @symlink($linkTarget, $destPath))
- {
- $msg = "FileSystem::copy() FAILED. Cannot create symlink from $destPath to $linkTarget.";
- throw new Exception($msg);
- }
- }
-
- /* -- fs interface --*/
-
- function listRoots() {
- if (!$this->checkAccess('/', false)) {
- die ("Can not access root");
- }
- return array(new PhingFile("/"));
- }
-
- /**
- * returns the contents of a directory in an array
- */
- function lister($f) {
- $dir = @opendir($f->getAbsolutePath());
- if (!$dir) {
- throw new Exception("Can't open directory " . $f->__toString());
- }
- $vv = array();
- while (($file = @readdir($dir)) !== false) {
- if ($file == "." || $file == "..") {
- continue;
- }
- $vv[] = (string) $file;
- }
- @closedir($dir);
- return $vv;
- }
-
- function fromURIPath($p) {
- if (StringHelper::endsWith("/", $p) && (strlen($p) > 1)) {
-
- // "/foo/" --> "/foo", but "/" --> "/"
- $p = substr($p, 0, strlen($p) - 1);
-
- }
-
- return $p;
- }
-
- /**
- * Whether file can be deleted.
- * @param PhingFile $f
- * @return boolean
- */
- function canDelete(PhingFile $f)
- {
- @clearstatcache();
- $dir = dirname($f->getAbsolutePath());
- return (bool) @is_writable($dir);
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/system/io/Win32FileSystem.php b/buildscripts/phing/classes/phing/system/io/Win32FileSystem.php
deleted file mode 100644
index 58331cde..00000000
--- a/buildscripts/phing/classes/phing/system/io/Win32FileSystem.php
+++ /dev/null
@@ -1,477 +0,0 @@
-<?php
-/*
- * $Id: 0cb3f51d8745f08b64f6f394fc0abb84705f512e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/FileSystem.php';
-
-/**
- * @package phing.system.io
- */
-class Win32FileSystem extends FileSystem {
-
- protected $slash;
- protected $altSlash;
- protected $semicolon;
-
- private static $driveDirCache = array();
-
- function __construct() {
- $this->slash = self::getSeparator();
- $this->semicolon = self::getPathSeparator();
- $this->altSlash = ($this->slash === '\\') ? '/' : '\\';
- }
-
- function isSlash($c) {
- return ($c == '\\') || ($c == '/');
- }
-
- function isLetter($c) {
- return ((ord($c) >= ord('a')) && (ord($c) <= ord('z')))
- || ((ord($c) >= ord('A')) && (ord($c) <= ord('Z')));
- }
-
- function slashify($p) {
- if ((strlen($p) > 0) && ($p{0} != $this->slash)) {
- return $this->slash.$p;
- }
- else {
- return $p;
- }
- }
-
- /* -- Normalization and construction -- */
-
- function getSeparator() {
- // the ascii value of is the \
- return chr(92);
- }
-
- function getPathSeparator() {
- return ';';
- }
-
- /**
- * A normal Win32 pathname contains no duplicate slashes, except possibly
- * for a UNC prefix, and does not end with a slash. It may be the empty
- * string. Normalized Win32 pathnames have the convenient property that
- * the length of the prefix almost uniquely identifies the type of the path
- * and whether it is absolute or relative:
- *
- * 0 relative to both drive and directory
- * 1 drive-relative (begins with '\\')
- * 2 absolute UNC (if first char is '\\'), else directory-relative (has form "z:foo")
- * 3 absolute local pathname (begins with "z:\\")
- */
- function normalizePrefix($strPath, $len, &$sb) {
- $src = 0;
- while (($src < $len) && $this->isSlash($strPath{$src})) {
- $src++;
- }
- $c = "";
- if (($len - $src >= 2)
- && $this->isLetter($c = $strPath{$src})
- && $strPath{$src + 1} === ':') {
- /* Remove leading slashes if followed by drive specifier.
- * This hack is necessary to support file URLs containing drive
- * specifiers (e.g., "file://c:/path"). As a side effect,
- * "/c:/path" can be used as an alternative to "c:/path". */
- $sb .= $c;
- $sb .= ':';
- $src += 2;
- }
- else {
- $src = 0;
- if (($len >= 2)
- && $this->isSlash($strPath{0})
- && $this->isSlash($strPath{1})) {
- /* UNC pathname: Retain first slash; leave src pointed at
- * second slash so that further slashes will be collapsed
- * into the second slash. The result will be a pathname
- * beginning with "\\\\" followed (most likely) by a host
- * name. */
- $src = 1;
- $sb.=$this->slash;
- }
- }
- return $src;
- }
-
- /** Normalize the given pathname, whose length is len, starting at the given
- offset; everything before this offset is already normal. */
- protected function normalizer($strPath, $len, $offset) {
- if ($len == 0) {
- return $strPath;
- }
- if ($offset < 3) {
- $offset = 0; //Avoid fencepost cases with UNC pathnames
- }
- $src = 0;
- $slash = $this->slash;
- $sb = "";
-
- if ($offset == 0) {
- // Complete normalization, including prefix
- $src = $this->normalizePrefix($strPath, $len, $sb);
- } else {
- // Partial normalization
- $src = $offset;
- $sb .= substr($strPath, 0, $offset);
- }
-
- // Remove redundant slashes from the remainder of the path, forcing all
- // slashes into the preferred slash
- while ($src < $len) {
- $c = $strPath{$src++};
- if ($this->isSlash($c)) {
- while (($src < $len) && $this->isSlash($strPath{$src})) {
- $src++;
- }
- if ($src === $len) {
- /* Check for trailing separator */
- $sn = (int) strlen($sb);
- if (($sn == 2) && ($sb{1} === ':')) {
- // "z:\\"
- $sb .= $slash;
- break;
- }
- if ($sn === 0) {
- // "\\"
- $sb .= $slash;
- break;
- }
- if (($sn === 1) && ($this->isSlash($sb{0}))) {
- /* "\\\\" is not collapsed to "\\" because "\\\\" marks
- the beginning of a UNC pathname. Even though it is
- not, by itself, a valid UNC pathname, we leave it as
- is in order to be consistent with the win32 APIs,
- which treat this case as an invalid UNC pathname
- rather than as an alias for the root directory of
- the current drive. */
- $sb .= $slash;
- break;
- }
- // Path does not denote a root directory, so do not append
- // trailing slash
- break;
- } else {
- $sb .= $slash;
- }
- } else {
- $sb.=$c;
- }
- }
- $rv = (string) $sb;
- return $rv;
- }
-
- /**
- * Check that the given pathname is normal. If not, invoke the real
- * normalizer on the part of the pathname that requires normalization.
- * This way we iterate through the whole pathname string only once.
- * @param string $strPath
- * @return string
- */
- function normalize($strPath) {
- $n = strlen($strPath);
- $slash = $this->slash;
- $altSlash = $this->altSlash;
- $prev = 0;
- for ($i = 0; $i < $n; $i++) {
- $c = $strPath{$i};
- if ($c === $altSlash) {
- return $this->normalizer($strPath, $n, ($prev === $slash) ? $i - 1 : $i);
- }
- if (($c === $slash) && ($prev === $slash) && ($i > 1)) {
- return $this->normalizer($strPath, $n, $i - 1);
- }
- if (($c === ':') && ($i > 1)) {
- return $this->normalizer($strPath, $n, 0);
- }
- $prev = $c;
- }
- if ($prev === $slash) {
- return $this->normalizer($strPath, $n, $n - 1);
- }
- return $strPath;
- }
-
- function prefixLength($strPath) {
- $path = (string) $strPath;
- $slash = (string) $this->slash;
- $n = (int) strlen($path);
- if ($n === 0) {
- return 0;
- }
- $c0 = $path{0};
- $c1 = ($n > 1) ? $path{1} :
- 0;
- if ($c0 === $slash) {
- if ($c1 === $slash) {
- return 2; // absolute UNC pathname "\\\\foo"
- }
- return 1; // drive-relative "\\foo"
- }
-
- if ($this->isLetter($c0) && ($c1 === ':')) {
- if (($n > 2) && ($path{2}) === $slash) {
- return 3; // Absolute local pathname "z:\\foo" */
- }
- return 2; // Directory-relative "z:foo"
- }
- return 0; // Completely relative
- }
-
- function resolve($parent, $child) {
- $parent = (string) $parent;
- $child = (string) $child;
- $slash = (string) $this->slash;
-
- $pn = (int) strlen($parent);
- if ($pn === 0) {
- return $child;
- }
- $cn = (int) strlen($child);
- if ($cn === 0) {
- return $parent;
- }
-
- $c = $child;
- if (($cn > 1) && ($c{0} === $slash)) {
- if ($c{1} === $slash) {
- // drop prefix when child is a UNC pathname
- $c = substr($c, 2);
- }
- else {
- //Drop prefix when child is drive-relative */
- $c = substr($c, 1);
- }
- }
-
- $p = $parent;
- if ($p{$pn - 1} === $slash) {
- $p = substr($p, 0, $pn - 1);
- }
- return $p.$this->slashify($c);
- }
-
- function getDefaultParent() {
- return (string) ("".$this->slash);
- }
-
- function fromURIPath($strPath) {
- $p = (string) $strPath;
- if ((strlen($p) > 2) && ($p{2} === ':')) {
-
- // "/c:/foo" --> "c:/foo"
- $p = substr($p,1);
-
- // "c:/foo/" --> "c:/foo", but "c:/" --> "c:/"
- if ((strlen($p) > 3) && StringHelper::endsWith('/', $p)) {
- $p = substr($p, 0, strlen($p) - 1);
- }
- } elseif ((strlen($p) > 1) && StringHelper::endsWith('/', $p)) {
- // "/foo/" --> "/foo"
- $p = substr($p, 0, strlen($p) - 1);
- }
- return (string) $p;
- }
-
-
- /* -- Path operations -- */
-
- function isAbsolute(PhingFile $f) {
- $pl = (int) $f->getPrefixLength();
- $p = (string) $f->getPath();
- return ((($pl === 2) && ($p{0} === $this->slash)) || ($pl === 3) || ($pl === 1 && $p{0} === $this->slash));
- }
-
- /** private */
- function _driveIndex($d) {
- $d = (string) $d{0};
- if ((ord($d) >= ord('a')) && (ord($d) <= ord('z'))) {
- return ord($d) - ord('a');
- }
- if ((ord($d) >= ord('A')) && (ord($d) <= ord('Z'))) {
- return ord($d) - ord('A');
- }
- return -1;
- }
-
- /** private */
- function _getDriveDirectory($drive) {
- $drive = (string) $drive{0};
- $i = (int) $this->_driveIndex($drive);
- if ($i < 0) {
- return null;
- }
-
- $s = (isset(self::$driveDirCache[$i]) ? self::$driveDirCache[$i] : null);
-
- if ($s !== null) {
- return $s;
- }
-
- $s = $this->_getDriveDirectory($i + 1);
- self::$driveDirCache[$i] = $s;
- return $s;
- }
-
- function _getUserPath() {
- //For both compatibility and security, we must look this up every time
- return (string) $this->normalize(Phing::getProperty("user.dir"));
- }
-
- function _getDrive($path) {
- $path = (string) $path;
- $pl = $this->prefixLength($path);
- return ($pl === 3) ? substr($path, 0, 2) : null;
- }
-
- function resolveFile(PhingFile $f) {
- $path = $f->getPath();
- $pl = (int) $f->getPrefixLength();
-
- if (($pl === 2) && ($path{0} === $this->slash)) {
- return $path; // UNC
- }
-
- if ($pl === 3) {
- return $path; // Absolute local
- }
-
- if ($pl === 0) {
- return (string) ($this->_getUserPath().$this->slashify($path)); //Completely relative
- }
-
- if ($pl === 1) { // Drive-relative
- $up = (string) $this->_getUserPath();
- $ud = (string) $this->_getDrive($up);
- if ($ud !== null) {
- return (string) $ud.$path;
- }
- return (string) $up.$path; //User dir is a UNC path
- }
-
- if ($pl === 2) { // Directory-relative
- $up = (string) $this->_getUserPath();
- $ud = (string) $this->_getDrive($up);
- if (($ud !== null) && StringHelper::startsWith($ud, $path)) {
- return (string) ($up . $this->slashify(substr($path,2)));
- }
- $drive = (string) $path{0};
- $dir = (string) $this->_getDriveDirectory($drive);
-
- $np = (string) "";
- if ($dir !== null) {
- /* When resolving a directory-relative path that refers to a
- drive other than the current drive, insist that the caller
- have read permission on the result */
- $p = (string) $drive . (':'.$dir.$this->slashify(substr($path,2)));
-
- if (!$this->checkAccess($p, false)) {
- // FIXME
- // throw security error
- die("Can't resolve path $p");
- }
- return $p;
- }
- return (string) $drive.':'.$this->slashify(substr($path,2)); //fake it
- }
-
- throw new Exception("Unresolvable path: " . $path);
- }
-
- /* -- most of the following is mapped to the functions mapped th php natives in FileSystem */
-
- /* -- Attribute accessors -- */
-
- function setReadOnly($f) {
- // dunno how to do this on win
- throw new Exception("WIN32FileSystem doesn't support read-only yet.");
- }
-
- /* -- Filesystem interface -- */
-
- protected function _access($path) {
- if (!$this->checkAccess($path, false)) {
- throw new Exception("Can't resolve path $p");
- }
- return true;
- }
-
- function _nativeListRoots() {
- // FIXME
- }
-
- function listRoots() {
- $ds = _nativeListRoots();
- $n = 0;
- for ($i = 0; $i < 26; $i++) {
- if ((($ds >> $i) & 1) !== 0) {
- if (!$this->access((string)( chr(ord('A') + $i) . ':' . $this->slash))) {
- $ds &= ~(1 << $i);
- } else {
- $n++;
- }
- }
- }
- $fs = array();
- $j = (int) 0;
- $slash = (string) $this->slash;
- for ($i = 0; $i < 26; $i++) {
- if ((($ds >> $i) & 1) !== 0) {
- $fs[$j++] = new PhingFile(chr(ord('A') + $i) . ':' . $this->slash);
- }
- }
- return $fs;
- }
-
- /* -- Basic infrastructure -- */
-
- /** compares file paths lexicographically */
- function compare(PhingFile $f1, PhingFile $f2) {
- $f1Path = $f1->getPath();
- $f2Path = $f2->getPath();
- return (boolean) strcasecmp((string) $f1Path, (string) $f2Path);
- }
-
-
- /**
- * returns the contents of a directory in an array
- */
- function lister($f) {
- $dir = @opendir($f->getAbsolutePath());
- if (!$dir) {
- throw new Exception("Can't open directory " . $f->__toString());
- }
- $vv = array();
- while (($file = @readdir($dir)) !== false) {
- if ($file == "." || $file == "..") {
- continue;
- }
- $vv[] = (string) $file;
- }
- @closedir($dir);
- return $vv;
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/system/io/WinNTFileSystem.php b/buildscripts/phing/classes/phing/system/io/WinNTFileSystem.php
deleted file mode 100644
index 1eae49c4..00000000
--- a/buildscripts/phing/classes/phing/system/io/WinNTFileSystem.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*
- * $Id: de8f1d144dc3d34fa978937632a98625c3e5c15d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/Win32FileSystem.php';
-
-/**
- * FileSystem for Windows NT/2000.
- * @package phing.system.io
- */
-class WinNTFileSystem extends Win32FileSystem {
-
- /* -- class only for convenience and future use everything is inherinted --*/
-
-
-}
-
diff --git a/buildscripts/phing/classes/phing/system/io/Writer.php b/buildscripts/phing/classes/phing/system/io/Writer.php
deleted file mode 100644
index 86fa67e9..00000000
--- a/buildscripts/phing/classes/phing/system/io/Writer.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/*
- * $Id: 1dbdd04d4483e88c8e409811babeaa83c47f8418 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Abstract class for writing character streams.
- *
- * @package phing.system.io
- */
-abstract class Writer {
-
- /**
- * Writes data to output stream.
- * @param string $buf
- * @param int $off
- * @param int $len
- */
- abstract public function write($buf, $off = null, $len = null);
-
- /**
- * Close the stream.
- * @throws IOException - if there is an error closing stream.
- */
- abstract public function close();
-
- /**
- * Flush the stream, if supported by the stream.
- */
- public function flush() {}
-
- /**
- * Returns a string representation of resource filename, url, etc. that is being written to.
- * @return string
- */
- abstract public function getResource();
-}
diff --git a/buildscripts/phing/classes/phing/system/lang/Character.php b/buildscripts/phing/classes/phing/system/lang/Character.php
deleted file mode 100644
index 60285df6..00000000
--- a/buildscripts/phing/classes/phing/system/lang/Character.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/*
- * $Id: afe71e9fbaaa9c49e543c338b5fdca1bc7c9d198 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * @package phing.system.lang
- */
-class Character {
-
- // this class might be extended with plenty of ordinal char constants
- // and the like to support the multibyte aware datatype (char) in php
- // in form of an object.
- // anyway just a thought
-
- public static function isLetter($char) {
-
- if (strlen($char) !== 1)
- $char = 0;
-
- $char = (int) ord($char);
-
- if ($char >= ord('A') && $char <= ord('Z'))
- return true;
-
- if ($char >= ord('a') && $char <= ord('z'))
- return true;
-
- return false;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/system/lang/EventObject.php b/buildscripts/phing/classes/phing/system/lang/EventObject.php
deleted file mode 100644
index 489a82a8..00000000
--- a/buildscripts/phing/classes/phing/system/lang/EventObject.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/*
- * $Id: b844b1250c5bf730b5eeaccc01bdb24ebbb336e4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * @package phing.system.lang
- */
-class EventObject {
-
- /** The object on which the Event initially occurred. */
- protected $source;
-
- /** Constructs a prototypical Event. */
- function __construct($source) {
- if ($source === null) {
- throw new Exception("Null source");
- }
- $this->source = $source;
- }
-
- /** The object on which the Event initially occurred. */
- function getSource() {
- return $this->source;
- }
-
- /** Returns a String representation of this EventObject.*/
- function toString() {
- if (method_exists($this->source, "toString")) {
- return get_class($this)."[source=".$this->source->toString()."]";
- } else {
- return get_class($this)."[source=".get_class($this->source)."]";
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/system/lang/FileNotFoundException.php b/buildscripts/phing/classes/phing/system/lang/FileNotFoundException.php
deleted file mode 100644
index 5da28838..00000000
--- a/buildscripts/phing/classes/phing/system/lang/FileNotFoundException.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * $Id: b5edc38a7438b81c032898ccf3c2be0e83d55203 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * @package phing.system.lang
- */
-class FileNotFoundException extends Exception {}
-
diff --git a/buildscripts/phing/classes/phing/system/lang/NullPointerException.php b/buildscripts/phing/classes/phing/system/lang/NullPointerException.php
deleted file mode 100644
index ccf080f5..00000000
--- a/buildscripts/phing/classes/phing/system/lang/NullPointerException.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * $Id: b1e0bb7b6ed5dd7391d7c251e736bba1d14ce4b5 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * @package phing.system.lang
- */
-class NullPointerException extends Exception {}
-
diff --git a/buildscripts/phing/classes/phing/system/lang/SecurityException.php b/buildscripts/phing/classes/phing/system/lang/SecurityException.php
deleted file mode 100644
index 74013bc0..00000000
--- a/buildscripts/phing/classes/phing/system/lang/SecurityException.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- * $Id: 2df99e97af67f5f2cbe2ec930e8daddc8a10b406 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * @package phing.system.lang
- */
-class SecurityException extends Exception {}
-
diff --git a/buildscripts/phing/classes/phing/system/util/Properties.php b/buildscripts/phing/classes/phing/system/util/Properties.php
deleted file mode 100755
index 4ffd04fc..00000000
--- a/buildscripts/phing/classes/phing/system/util/Properties.php
+++ /dev/null
@@ -1,314 +0,0 @@
-<?php
-
-/*
- * $Id: 577374dcb65bb9a2614bc80f605ce49600d64778 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/system/io/FileWriter.php';
-
-/**
- * Convenience class for reading and writing property files.
- *
- * FIXME
- * - Add support for arrays (separated by ',')
- *
- * @package phing.system.util
- * @version $Id: 577374dcb65bb9a2614bc80f605ce49600d64778 $
- */
-class Properties {
-
- private $properties = array();
-
- /**
- * @var PhingFile
- */
- private $file = null;
-
- /**
- * Constructor
- *
- * @param array $properties
- */
- function __construct($properties = NULL)
- {
- if (is_array($properties)) {
- foreach ($properties as $key => $value) {
- $this->setProperty($key, $value);
- }
- }
- }
-
- /**
- * Load properties from a file.
- *
- * @param PhingFile $file
- * @return void
- * @throws IOException - if unable to read file.
- */
- function load(PhingFile $file) {
- if ($file->canRead()) {
- $this->parse($file->getPath(), false);
-
- $this->file = $file;
- } else {
- throw new IOException("Can not read file ".$file->getPath());
- }
-
- }
-
- /**
- * Replaces parse_ini_file() or better_parse_ini_file().
- * Saves a step since we don't have to parse and then check return value
- * before throwing an error or setting class properties.
- *
- * @param string $filePath
- * @param boolean $processSections Whether to honor [SectionName] sections in INI file.
- * @return array Properties loaded from file (no prop replacements done yet).
- */
- protected function parse($filePath) {
-
- // load() already made sure that file is readable
- // but we'll double check that when reading the file into
- // an array
-
- if (($lines = @file($filePath)) === false) {
- throw new IOException("Unable to parse contents of $filePath");
- }
-
- $this->properties = array();
- $sec_name = "";
-
- foreach($lines as $line) {
- // strip comments and leading/trailing spaces
- $line = trim(preg_replace("/\s+[;#]\s.+$/", "", $line));
-
- if (empty($line) || $line[0] == ';' || $line[0] == '#') {
- continue;
- }
-
- $pos = strpos($line, '=');
- $property = trim(substr($line, 0, $pos));
- $value = trim(substr($line, $pos + 1));
- $this->properties[$property] = $this->inVal($value);
-
- } // for each line
- }
-
- /**
- * Process values when being read in from properties file.
- * does things like convert "true" => true
- * @param string $val Trimmed value.
- * @return mixed The new property value (may be boolean, etc.)
- */
- protected function inVal($val) {
- if ($val === "true") {
- $val = true;
- } elseif ($val === "false") {
- $val = false;
- }
- return $val;
- }
-
- /**
- * Process values when being written out to properties file.
- * does things like convert true => "true"
- * @param mixed $val The property value (may be boolean, etc.)
- * @return string
- */
- protected function outVal($val) {
- if ($val === true) {
- $val = "true";
- } elseif ($val === false) {
- $val = "false";
- }
- return $val;
- }
-
- /**
- * Create string representation that can be written to file and would be loadable using load() method.
- *
- * Essentially this function creates a string representation of properties that is ready to
- * write back out to a properties file. This is used by store() method.
- *
- * @return string
- */
- public function toString() {
- $buf = "";
- foreach($this->properties as $key => $item) {
- $buf .= $key . "=" . $this->outVal($item) . PHP_EOL;
- }
- return $buf;
- }
-
- /**
- * Stores current properties to specified file.
- *
- * @param PhingFile $file File to create/overwrite with properties.
- * @param string $header Header text that will be placed (within comments) at the top of properties file.
- * @return void
- * @throws IOException - on error writing properties file.
- */
- function store(PhingFile $file = null, $header = null) {
- if ($file == null) {
- $file = $this->file;
- }
-
- if ($file == null) {
- throw new IOException("Unable to write to empty filename");
- }
-
- // stores the properties in this object in the file denoted
- // if file is not given and the properties were loaded from a
- // file prior, this method stores them in the file used by load()
- try {
- $fw = new FileWriter($file);
- if ($header !== null) {
- $fw->write( "# " . $header . PHP_EOL );
- }
- $fw->write($this->toString());
- $fw->close();
- } catch (IOException $e) {
- throw new IOException("Error writing property file: " . $e->getMessage());
- }
- }
-
- /**
- * Returns copy of internal properties hash.
- * Mostly for performance reasons, property hashes are often
- * preferable to passing around objects.
- *
- * @return array
- */
- function getProperties() {
- return $this->properties;
- }
-
- /**
- * Get value for specified property.
- * This is the same as get() method.
- *
- * @param string $prop The property name (key).
- * @return mixed
- * @see get()
- */
- function getProperty($prop) {
- if (!isset($this->properties[$prop])) {
- return null;
- }
- return $this->properties[$prop];
- }
-
- /**
- * Get value for specified property.
- * This function exists to provide a hashtable-like interface for
- * properties.
- *
- * @param string $prop The property name (key).
- * @return mixed
- * @see getProperty()
- */
- function get($prop) {
- if (!isset($this->properties[$prop])) {
- return null;
- }
- return $this->properties[$prop];
- }
-
- /**
- * Set the value for a property.
- *
- * @param string $key
- * @param mixed $value
- * @return mixed Old property value or NULL if none was set.
- */
- function setProperty($key, $value) {
- $oldValue = null;
- if (isset($this->properties[$key])) {
- $oldValue = $this->properties[$key];
- }
- $this->properties[$key] = $value;
- return $oldValue;
- }
-
- /**
- * Set the value for a property.
- * This function exists to provide hashtable-lie
- * interface for properties.
- *
- * @param string $key
- * @param mixed $value
- */
- function put($key, $value) {
- return $this->setProperty($key, $value);
- }
-
- /**
- * Appends a value to a property if it already exists with a delimiter
- *
- * If the property does not, it just adds it.
- *
- * @param string $key
- * @param mixed $value
- * @param string $delimiter
- */
- function append($key, $value, $delimiter = ',') {
- $newValue = $value;
- if (isset($this->properties[$key]) && !empty($this->properties[$key]) ) {
- $newValue = $this->properties[$key] . $delimiter . $value;
- }
- $this->properties[$key] = $newValue;
- }
-
- /**
- * Same as keys() function, returns an array of property names.
- * @return array
- */
- function propertyNames() {
- return $this->keys();
- }
-
- /**
- * Whether loaded properties array contains specified property name.
- * @return boolean
- */
- function containsKey($key) {
- return isset($this->properties[$key]);
- }
-
- /**
- * Returns properties keys.
- * Use this for foreach() {} iterations, as this is
- * faster than looping through property values.
- * @return array
- */
- function keys() {
- return array_keys($this->properties);
- }
-
- /**
- * Whether properties list is empty.
- * @return boolean
- */
- function isEmpty() {
- return empty($this->properties);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/system/util/Register.php b/buildscripts/phing/classes/phing/system/util/Register.php
deleted file mode 100755
index 56ab0e45..00000000
--- a/buildscripts/phing/classes/phing/system/util/Register.php
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-
-/**
- * Static class to handle a slot-listening system.
- *
- * Unlike the slots/signals Qt model, this class manages something that is
- * more like a simple hashtable, where each slot has only one value. For that
- * reason "Registers" makes more sense, the reference being to CPU registers.
- *
- * This could be used for anything, but it's been built for a pretty specific phing
- * need, and that is to allow access to dynamic values that are set by logic
- * that is not represented in a build file. For exampe, we need a system for getting
- * the current resource (file) that is being processed by a filterchain in a fileset.
- *
- * Each slot corresponds to only one read-only, dynamic-value RegisterSlot object. In
- * a build.xml register slots are expressed using a syntax similar to variables:
- *
- * <replaceregexp>
- * <regexp pattern="\n" replace="%{task.current_file}"/>
- * </replaceregexp>
- *
- * The task/type must provide a supporting setter for the attribute:
- *
- * <code>
- * function setListeningReplace(RegisterSlot $slot) {
- * $this->replace = $slot;
- * }
- *
- * // in main()
- * if ($this->replace instanceof RegisterSlot) {
- * $this->regexp->setReplace($this->replace->getValue());
- * } else {
- * $this->regexp->setReplace($this->replace);
- * }
- * </code>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.system.util
- */
-class Register {
-
- /** Slots that have been registered */
- private static $slots = array();
-
- /**
- * Returns RegisterSlot for specified key.
- *
- * If not slot exists a new one is created for key.
- *
- * @param string $key
- * @return RegisterSlot
- */
- public static function getSlot($key) {
- if (!isset(self::$slots[$key])) {
- self::$slots[$key] = new RegisterSlot($key);
- }
- return self::$slots[$key];
- }
-}
-
-
-/**
- * Represents a slot in the register.
- *
- * @package phing.system.util
- */
-class RegisterSlot {
-
- /** The name of this slot. */
- private $key;
-
- /** The value for this slot. */
- private $value;
-
- /**
- * Constructs a new RegisterSlot, setting the key to passed param.
- * @param string $key
- */
- public function __construct($key) {
- $this->key = (string) $key;
- }
-
- /**
- * Sets the key / name for this slot.
- * @param string $k
- */
- public function setKey($k) {
- $this->key = (string) $k;
- }
-
- /**
- * Gets the key / name for this slot.
- * @return string
- */
- public function getKey() {
- return $this->key;
- }
-
- /**
- * Sets the value for this slot.
- * @param mixed
- */
- public function setValue($v) {
- $this->value = $v;
- }
-
- /**
- * Returns the value at this slot.
- * @return mixed
- */
- public function getValue() {
- return $this->value;
- }
-
- /**
- * Recursively implodes an array to a comma-separated string
- * @param array $arr
- * @return string
- */
- private function implodeArray(array $arr) {
- $values = array();
-
- foreach ($arr as $value) {
- if (is_array($value)) {
- $values[] = $this->implodeArray($value);
- } else {
- $values[] = $value;
- }
- }
-
- return "{" . implode(",", $values) . "}";
- }
-
- /**
- * Returns the value at this slot as a string value.
- * @return string
- */
- public function __toString()
- {
- if (is_array($this->value)) {
- return $this->implodeArray($this->value);
- } else {
- return (string) $this->value;
- }
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/system/util/Timer.php b/buildscripts/phing/classes/phing/system/util/Timer.php
deleted file mode 100755
index 2d2bcc01..00000000
--- a/buildscripts/phing/classes/phing/system/util/Timer.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-/*
- * $Id: 085b1a92f765375e97d2c09c7569ca5747a44634 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-/**
- * This class can be used to obtain the execution time of all of the scripts
- * that are executed in the process of building a page.
- *
- * Example:
- * To be done before any scripts execute:
- *
- * $Timer = new Timer;
- * $Timer->Start_Timer();
- *
- * To be done after all scripts have executed:
- *
- * $timer->Stop_Timer();
- * $timer->Get_Elapsed_Time(int number_of_places);
- *
- * @author Charles Killian
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.system.util
- * @version $Id$
- */
-class Timer {
-
- /** start time */
- protected $stime;
-
- /** end time */
- protected $etime;
-
- /**
- * This function sets the class variable $stime to the current time in
- * microseconds.
- * @return void
- */
- public function start() {
- $this->stime = $this->getMicrotime();
- }
-
- /**
- * This function sets the class variable $etime to the current time in
- * microseconds.
- * @return void
- */
- function stop() {
- $this->etime = $this->getMicrotime();
- }
-
- /**
- * This function returns the elapsed time in seconds.
- *
- * Call start_time() at the beginning of script execution and end_time() at
- * the end of script execution. Then, call elapsed_time() to obtain the
- * difference between start_time() and end_time().
- *
- * @param $places decimal place precision of elapsed time (default is 5)
- * @return string Properly formatted time.
- */
- function getElapsedTime($places=5) {
- $etime = $this->etime - $this->stime;
- $format = "%0.".$places."f";
- return (sprintf ($format, $etime));
- }
-
- /**
- * This function returns the current time in microseconds.
- *
- * @author Everett Michaud, Zend.com
- * @return current time in microseconds
- * @access private
- */
- function getMicrotime() {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/defaults.properties b/buildscripts/phing/classes/phing/tasks/defaults.properties
deleted file mode 100755
index 32a03295..00000000
--- a/buildscripts/phing/classes/phing/tasks/defaults.properties
+++ /dev/null
@@ -1,145 +0,0 @@
-; -------------------------------------
-; These taskdefs are loaded at startup.
-; -------------------------------------
-
-; Internal system tasks
-;
-adhoc=phing.tasks.system.AdhocTask
-adhoc-task=phing.tasks.system.AdhocTaskdefTask
-adhoc-type=phing.tasks.system.AdhocTypedefTask
-append=phing.tasks.system.AppendTask
-available=phing.tasks.system.AvailableTask
-chmod=phing.tasks.system.ChmodTask
-chown=phing.tasks.system.ChownTask
-concat=phing.tasks.system.AppendTask
-condition=phing.tasks.system.ConditionTask
-copy=phing.tasks.system.CopyTask
-cvs=phing.tasks.system.CvsTask
-cvspass=phing.tasks.system.CvsPassTask
-delete=phing.tasks.system.DeleteTask
-echo=phing.tasks.system.EchoTask
-exec=phing.tasks.system.ExecTask
-fail=phing.tasks.system.FailTask
-foreach=phing.tasks.system.ForeachTask
-includepath=phing.tasks.system.IncludePathTask
-input=phing.tasks.system.InputTask
-mkdir=phing.tasks.system.MkdirTask
-move=phing.tasks.system.MoveTask
-phing=phing.tasks.system.PhingTask
-phingcall=phing.tasks.system.PhingCallTask
-php=phing.tasks.system.PhpEvalTask
-property=phing.tasks.system.PropertyTask
-propertyprompt=phing.tasks.system.PropertyPromptTask
-reflexive=phing.tasks.system.ReflexiveTask
-resolvepath=phing.tasks.system.ResolvePathTask
-taskdef=phing.tasks.system.TaskdefTask
-touch=phing.tasks.system.TouchTask
-tstamp=phing.tasks.system.TstampTask
-typedef=phing.tasks.system.TypedefTask
-uptodate=phing.tasks.system.UpToDateTask
-xslt=phing.tasks.system.XsltTask
-if=phing.tasks.system.IfTask
-warn=phing.tasks.system.WarnTask
-import=phing.tasks.system.ImportTask
-loadfile=phing.tasks.system.LoadFileTask
-
-; "Core" contributed tasks
-; -- i.e. no taskdef needed.
-
-creole=phing.tasks.ext.creole.CreoleSQLExecTask
-pdo=phing.tasks.ext.pdo.PDOSQLExecTask
-pdosqlexec=phing.tasks.ext.pdo.PDOSQLExecTask
-package-as-path=phing.tasks.ext.PackageAsPathTask
-smarty=phing.tasks.ext.SmartyTask
-capsule=phing.tasks.ext.CapsuleTask
-tar=phing.tasks.ext.TarTask
-untar=phing.tasks.ext.UntarTask
-pearpkg=phing.tasks.ext.PearPackageTask
-pearpkg2=phing.tasks.ext.PearPackage2Task
-mail=phing.tasks.ext.MailTask
-zip=phing.tasks.ext.ZipTask
-unzip=phing.tasks.ext.UnzipTask
-waitfor=phing.tasks.system.WaitForTask
-trycatch=phing.tasks.system.TryCatchTask
-
-; "ext" tasks
-phpdoc=phing.tasks.ext.phpdoc.PhpDocumentorTask
-phpdocext=phing.tasks.ext.phpdoc.PhpDocumentorExternalTask
-svnlastrevision=phing.tasks.ext.svn.SvnLastRevisionTask
-svncheckout=phing.tasks.ext.svn.SvnCheckoutTask
-svnexport=phing.tasks.ext.svn.SvnExportTask
-svnupdate=phing.tasks.ext.svn.SvnUpdateTask
-svnswitch=phing.tasks.ext.svn.SvnSwitchTask
-svncopy=phing.tasks.ext.svn.SvnCopyTask
-svncommit=phing.tasks.ext.svn.SvnCommitTask
-svnlist=phing.tasks.ext.svn.SvnListTask
-svnlog=phing.tasks.ext.svn.SvnLogTask
-svninfo=phing.tasks.ext.svn.SvnInfoTask
-gitinit=phing.tasks.ext.git.GitInitTask
-gitclone=phing.tasks.ext.git.GitCloneTask
-gitgc=phing.tasks.ext.git.GitGcTask
-gitbranch=phing.tasks.ext.git.GitBranchTask
-gitfetch=phing.tasks.ext.git.GitFetchTask
-gitmerge=phing.tasks.ext.git.GitMergeTask
-gitcheckout=phing.tasks.ext.git.GitCheckoutTask
-gitpull=phing.tasks.ext.git.GitPullTask
-gitpush=phing.tasks.ext.git.GitPushTask
-gitlog=phing.tasks.ext.git.GitLogTask
-gittag=phing.tasks.ext.git.GitTagTask
-phpunit3=phing.tasks.ext.phpunit.PHPUnitTask
-phpunit3report=phing.tasks.ext.phpunit.PHPUnitReportTask
-phpunit=phing.tasks.ext.phpunit.PHPUnitTask
-phpunitreport=phing.tasks.ext.phpunit.PHPUnitReportTask
-coverage-setup=phing.tasks.ext.coverage.CoverageSetupTask
-coverage-merger=phing.tasks.ext.coverage.CoverageMergerTask
-coverage-report=phing.tasks.ext.coverage.CoverageReportTask
-coverage-threshold=phing.tasks.ext.coverage.CoverageThresholdTask
-ioncubeencoder=phing.tasks.ext.ioncube.IoncubeEncoderTask
-ioncubelicense=phing.tasks.ext.ioncube.IoncubeLicenseTask
-simpletest=phing.tasks.ext.simpletest.SimpleTestTask
-phplint=phing.tasks.ext.PhpLintTask
-xmllint=phing.tasks.ext.XmlLintTask
-analyze=phing.tasks.ext.ZendCodeAnalyzerTask
-zendcodeanalyzer=phing.tasks.ext.ZendCodeAnalyzerTask
-jsllint=phing.tasks.ext.JslLintTask
-manifest=phing.tasks.ext.ManifestTask
-phpcodesniffer=phing.tasks.ext.PhpCodeSnifferTask
-phpcpd=phing.tasks.ext.phpcpd.PHPCPDTask
-phpmd=phing.tasks.ext.phpmd.PHPMDTask
-phpdepend=phing.tasks.ext.pdepend.PhpDependTask
-ftpdeploy=phing.tasks.ext.FtpDeployTask
-phkpackage=phing.tasks.ext.phk.PhkPackageTask
-pharpackage=phing.tasks.ext.phar.PharPackageTask
-scp=phing.tasks.ext.ScpTask
-; deprecate ScpSendTask
-scpsend=phing.tasks.ext.ScpTask
-ssh=phing.tasks.ext.SshTask
-replaceregexp=phing.tasks.ext.ReplaceRegexpTask
-jsmin=phing.tasks.ext.jsmin.JsMinTask
-version=phing.tasks.ext.VersionTask
-filehash=phing.tasks.ext.FileHashTask
-filesize=phing.tasks.ext.FileSizeTask
-xmlproperty=phing.tasks.ext.XmlPropertyTask
-exportproperties=phing.tasks.ext.ExportPropertiesTask
-http-request=phing.tasks.ext.HttpRequestTask
-httpget=phing.tasks.ext.HttpGetTask
-patch=phing.tasks.ext.PatchTask
-dbdeploy=phing.tasks.ext.dbdeploy.DbDeployTask
-symlink=phing.tasks.ext.SymlinkTask
-s3get=phing.tasks.ext.Service.Amazon.S3.S3GetTask
-s3put=phing.tasks.ext.Service.Amazon.S3.S3PutTask
-zendguardencode=phing.tasks.ext.zendguard.ZendGuardEncodeTask
-zendguardlicense=phing.tasks.ext.zendguard.ZendGuardLicenseTask
-docblox=phing.tasks.ext.docblox.DocBloxTask
-phpdoc2=phing.tasks.ext.phpdoc.PhpDocumentor2Task
-rST=phing.tasks.ext.rSTTask
-apigen=phing.tasks.ext.apigen.ApiGenTask
-parallel=phing.tasks.ext.ParallelTask
-symfonyconsole=phing.tasks.ext.SymfonyConsole.SymfonyConsoleTask
-; liquibase
-liquibase-changelog=phing.tasks.ext.liquibase.LiquibaseChangeLogTask
-liquibase-dbdoc=phing.tasks.ext.liquibase.LiquibaseDbDocTask
-liquibase-diff=phing.tasks.ext.liquibase.LiquibaseDiffTask
-liquibase-rollback=phing.tasks.ext.liquibase.LiquibaseRollbackTask
-liquibase-tag=phing.tasks.ext.liquibase.LiquibaseTagTask
-liquibase-update=phing.tasks.ext.liquibase.LiquibaseUpdateTask
diff --git a/buildscripts/phing/classes/phing/tasks/ext/CapsuleTask.php b/buildscripts/phing/classes/phing/tasks/ext/CapsuleTask.php
deleted file mode 100644
index 13ccd73d..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/CapsuleTask.php
+++ /dev/null
@@ -1,480 +0,0 @@
-<?php
-
-/*
- * $Id: 205bc55fd1f7f36783d105ff2d0e27357282bbed $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/Task.php';
-include_once 'phing/BuildException.php';
-include_once 'phing/lib/Capsule.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * A phing task for generating output by using Capsule.
- *
- * This is based on the interface to TexenTask from Apache's Velocity engine.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: 205bc55fd1f7f36783d105ff2d0e27357282bbed $
- * @package phing.tasks.ext
- */
-class CapsuleTask extends Task {
-
- /**
- * Capsule "template" engine.
- * @var Capsule
- */
- protected $context;
-
- /**
- * Any vars assigned via the build file.
- * @var array AssignedVar[]
- */
- protected $assignedVars = array();
-
- /**
- * This is the control template that governs the output.
- * It may or may not invoke the services of worker
- * templates.
- * @var string
- */
- protected $controlTemplate;
-
- /**
- * This is where Velocity will look for templates
- * using the file template loader.
- * @var string
- */
- protected $templatePath;
-
- /**
- * This is where texen will place all the output
- * that is a product of the generation process.
- * @var string
- */
- protected $outputDirectory;
-
- /**
- * This is the file where the generated text
- * will be placed.
- * @var string
- */
- protected $outputFile;
-
- /**
- * <p>
- * These are properties that are fed into the
- * initial context from a properties file. This
- * is simply a convenient way to set some values
- * that you wish to make available in the context.
- * </p>
- * <p>
- * These values are not critical, like the template path
- * or output path, but allow a convenient way to
- * set a value that may be specific to a particular
- * generation task.
- * </p>
- * <p>
- * For example, if you are generating scripts to allow
- * user to automatically create a database, then
- * you might want the <code>$databaseName</code>
- * to be placed
- * in the initial context so that it is available
- * in a script that might look something like the
- * following:
- * <code><pre>
- * #!bin/sh
- *
- * echo y | mysqladmin create $databaseName
- * </pre></code>
- * The value of <code>$databaseName</code> isn't critical to
- * output, and you obviously don't want to change
- * the ant task to simply take a database name.
- * So initial context values can be set with
- * properties file.
- *
- * @var array
- */
- protected $contextProperties;
-
- // -----------------------------------------------------------------------
- // The following getters & setters are used by phing to set properties
- // specified in the XML for the capsule task.
- // -----------------------------------------------------------------------
-
- /**
- * [REQUIRED] Set the control template for the
- * generating process.
- * @param string $controlTemplate
- * @return void
- */
- public function setControlTemplate ($controlTemplate) {
- $this->controlTemplate = $controlTemplate;
- }
-
- /**
- * Get the control template for the
- * generating process.
- * @return string
- */
- public function getControlTemplate() {
- return $this->controlTemplate;
- }
-
- /**
- * [REQUIRED] Set the path where Velocity will look
- * for templates using the file template
- * loader.
- * @return void
- * @throws Exception
- */
- public function setTemplatePath($templatePath) {
- $resolvedPath = "";
- $tok = strtok($templatePath, ",");
- while ( $tok ) {
- // resolve relative path from basedir and leave
- // absolute path untouched.
- $fullPath = $this->project->resolveFile($tok);
- $cpath = $fullPath->getCanonicalPath();
- if ($cpath === false) {
- $this->log("Template directory does not exist: " . $fullPath->getAbsolutePath());
- } else {
- $resolvedPath .= $cpath;
- }
- $tok = strtok(",");
- if ( $tok ) {
- $resolvedPath .= ",";
- }
- }
- $this->templatePath = $resolvedPath;
- }
-
- /**
- * Get the path where Velocity will look
- * for templates using the file template
- * loader.
- * @return string
- */
- public function getTemplatePath() {
- return $this->templatePath;
- }
-
- /**
- * [REQUIRED] Set the output directory. It will be
- * created if it doesn't exist.
- * @param PhingFile $outputDirectory
- * @return void
- * @throws Exception
- */
- public function setOutputDirectory(PhingFile $outputDirectory) {
- try {
- if (!$outputDirectory->exists()) {
- $this->log("Output directory does not exist, creating: " . $outputDirectory->getPath(),Project::MSG_VERBOSE);
- if (!$outputDirectory->mkdirs()) {
- throw new IOException("Unable to create Ouptut directory: " . $outputDirectory->getAbsolutePath());
- }
- }
- $this->outputDirectory = $outputDirectory->getCanonicalPath();
- } catch (IOException $ioe) {
- throw new BuildException($ioe);
- }
- }
-
- /**
- * Get the output directory.
- * @return string
- */
- public function getOutputDirectory() {
- return $this->outputDirectory;
- }
-
- /**
- * [REQUIRED] Set the output file for the
- * generation process.
- * @param string $outputFile (TODO: change this to File)
- * @return void
- */
- public function setOutputFile($outputFile) {
- $this->outputFile = $outputFile;
- }
-
- /**
- * Get the output file for the
- * generation process.
- * @return string
- */
- public function getOutputFile() {
- return $this->outputFile;
- }
-
- /**
- * Set the context properties that will be
- * fed into the initial context be the
- * generating process starts.
- * @param string $file
- * @return void
- */
- public function setContextProperties($file) {
- $sources = explode(",", $file);
- $this->contextProperties = new Properties();
-
- // Always try to get the context properties resource
- // from a file first. Templates may be taken from a JAR
- // file but the context properties resource may be a
- // resource in the filesystem. If this fails than attempt
- // to get the context properties resource from the
- // classpath.
- for ($i=0, $sourcesLength=count($sources); $i < $sourcesLength; $i++) {
- $source = new Properties();
-
- try {
-
- // resolve relative path from basedir and leave
- // absolute path untouched.
- $fullPath = $this->project->resolveFile($sources[$i]);
- $this->log("Using contextProperties file: " . $fullPath->toString());
- $source->load($fullPath);
-
- } catch (Exception $e) {
-
- throw new BuildException("Context properties file " . $sources[$i] .
- " could not be found in the file system!");
-
- }
-
- $keys = $source->keys();
-
- foreach ($keys as $key) {
- $name = $key;
- $value = $this->project->replaceProperties($source->getProperty($name));
- $this->contextProperties->setProperty($name, $value);
- }
- }
- }
-
- /**
- * Get the context properties that will be
- * fed into the initial context be the
- * generating process starts.
- * @return Properties
- */
- public function getContextProperties() {
- return $this->contextProperties;
- }
-
- /**
- * Creates an "AssignedVar" class.
- */
- public function createAssign() {
- $a = new AssignedVar();
- $this->assignedVars[] = $a;
- return $a;
- }
-
- // ---------------------------------------------------------------
- // End of XML setters & getters
- // ---------------------------------------------------------------
-
- /**
- * Creates a Smarty object.
- *
- * @return Smarty initialized (cleared) Smarty context.
- * @throws Exception the execute method will catch
- * and rethrow as a <code>BuildException</code>
- */
- public function initControlContext() {
- $this->context->clear();
- foreach($this->assignedVars as $var) {
- $this->context->put($var->getName(), $var->getValue());
- }
- return $this->context;
- }
-
- /**
- * Execute the input script with Velocity
- *
- * @throws BuildException
- * BuildExceptions are thrown when required attributes are missing.
- * Exceptions thrown by Velocity are rethrown as BuildExceptions.
- */
- public function main() {
-
- // Make sure the template path is set.
- if (empty($this->templatePath)) {
- throw new BuildException("The template path needs to be defined!");
- }
-
- // Make sure the control template is set.
- if ($this->controlTemplate === null) {
- throw new BuildException("The control template needs to be defined!");
- }
-
- // Make sure the output directory is set.
- if ($this->outputDirectory === null) {
- throw new BuildException("The output directory needs to be defined!");
- }
-
- // Make sure there is an output file.
- if ($this->outputFile === null) {
- throw new BuildException("The output file needs to be defined!");
- }
-
- // Setup Smarty runtime.
-
- // Smarty uses one object to store properties and to store
- // the context for the template (unlike Velocity). We setup this object, calling it
- // $this->context, and then initControlContext simply zeros out
- // any assigned variables.
- $this->context = new Capsule();
-
- if ($this->templatePath !== null) {
- $this->log("Using templatePath: " . $this->templatePath);
- $this->context->setTemplatePath($this->templatePath);
- }
-
- // Make sure the output directory exists, if it doesn't
- // then create it.
- $outputDir = new PhingFile($this->outputDirectory);
- if (!$outputDir->exists()) {
- $this->log("Output directory does not exist, creating: " . $outputDir->getAbsolutePath());
- $outputDir->mkdirs();
- }
-
- $this->context->setOutputDirectory($outputDir->getAbsolutePath());
-
- $path = $this->outputDirectory . DIRECTORY_SEPARATOR . $this->outputFile;
- $this->log("Generating to file " . $path);
-
- //$writer = new FileWriter($path);
-
- // The generator and the output path should
- // be placed in the init context here and
- // not in the generator class itself.
- $c = $this->initControlContext();
-
- // Set any variables that need to always
- // be loaded
- $this->populateInitialContext($c);
-
- // Feed all the options into the initial
- // control context so they are available
- // in the control/worker templates.
- if ($this->contextProperties !== null) {
-
- foreach($this->contextProperties->keys() as $property) {
-
- $value = $this->contextProperties->getProperty($property);
-
- // Special exception (from Texen)
- // for properties ending in file.contents:
- // in that case we dump the contents of the file
- // as the "value" for the Property.
- if (preg_match('/file\.contents$/', $property)) {
- // pull in contents of file specified
-
- $property = substr($property, 0, strpos($property, "file.contents") - 1);
-
- // reset value, and then
- // read in teh contents of the file into that var
- $value = "";
- $f = new PhingFile($this->project->resolveFile($value)->getCanonicalPath());
- if ($f->exists()) {
- $fr = new FileReader($f);
- $fr->readInto($value);
- }
-
- } // if ends with file.contents
-
- if (StringHelper::isBoolean($value)) {
- $value = StringHelper::booleanValue($value);
- }
-
- $c->put($property, $value);
-
- } // foreach property
-
- } // if contextProperties !== null
-
- try {
- $this->log("Parsing control template: " . $this->controlTemplate);
- $c->parse($this->controlTemplate, $path);
- } catch (Exception $ioe) {
- throw new BuildException("Cannot write parsed template: ". $ioe->getMessage());
- }
-
- $this->cleanup();
- }
-
- /**
- * Place useful objects into the initial context.
- *
- *
- * @param Capsule $context The context to populate, as retrieved from
- * {@link #initControlContext()}.
- * @return void
- * @throws Exception Error while populating context. The {@link
- * #main()} method will catch and rethrow as a
- * <code>BuildException</code>.
- */
- protected function populateInitialContext(Capsule $context) {
- $this->context->put("now", strftime("%c", time()));
- $this->context->put("task", $this);
- }
-
- /**
- * A hook method called at the end of {@link #execute()} which can
- * be overridden to perform any necessary cleanup activities (such
- * as the release of database connections, etc.). By default,
- * does nothing.
- * @return void
- * @throws Exception Problem cleaning up.
- */
- protected function cleanup() {
- }
-}
-
-
-/**
- * An "inner" class for holding assigned var values.
- * May be need to expand beyond name/value in the future.
- *
- * @package phing.tasks.ext
- */
-class AssignedVar {
-
- private $name;
- private $value;
-
- public function setName($v) {
- $this->name = $v;
- }
-
- public function setValue($v) {
- $this->value = $v;
- }
-
- public function getName() {
- return $this->name;
- }
-
- public function getValue() {
- return $this->value;
- }
-
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ExportPropertiesTask.php b/buildscripts/phing/classes/phing/tasks/ext/ExportPropertiesTask.php
deleted file mode 100644
index 8bc64bbb..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ExportPropertiesTask.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/*
- * $Id: 7d96a453b74edc40fdea85ba8befe6459334016d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once "phing/Task.php";
-
-/**
- * Saves currently defined properties into a specified file
- *
- * @author Andrei Serdeliuc
- * @extends Task
- * @version $Id: 7d96a453b74edc40fdea85ba8befe6459334016d $
- * @package phing.tasks.ext
- */
-class ExportPropertiesTask extends Task
-{
- /**
- * Array of project properties
- *
- * (default value: null)
- *
- * @var array
- * @access private
- */
- private $_properties = null;
-
- /**
- * Target file for saved properties
- *
- * (default value: null)
- *
- * @var string
- * @access private
- */
- private $_targetFile = null;
-
- /**
- * Exclude properties starting with these prefixes
- *
- * @var array
- * @access private
- */
- private $_disallowedPropertyPrefixes = array(
- 'host.',
- 'phing.',
- 'os.',
- 'php.',
- 'line.',
- 'env.',
- 'user.'
- );
-
- /**
- * setter for _targetFile
- *
- * @access public
- * @param string $file
- * @return bool
- */
- public function setTargetFile($file)
- {
- if(!is_dir(dirname($file))) {
- throw new BuildException("Parent directory of target file doesn't exist");
- }
-
- if(!is_writable(dirname($file)) && (file_exists($file) && !is_writable($file))) {
- throw new BuildException("Target file isn't writable");
- }
-
- $this->_targetFile = $file;
- return true;
- }
-
- /**
- * setter for _disallowedPropertyPrefixes
- *
- * @access public
- * @param string $file
- * @return bool
- */
- public function setDisallowedPropertyPrefixes($prefixes)
- {
- $this->_disallowedPropertyPrefixes = explode(",", $prefixes);
- return true;
- }
-
- public function main()
- {
- // Sets the currently declared properties
- $this->_properties = $this->getProject()->getProperties();
-
- if(is_array($this->_properties) && !empty($this->_properties) && null !== $this->_targetFile) {
- $propertiesString = '';
- foreach($this->_properties as $propertyName => $propertyValue) {
- if(!$this->isDisallowedPropery($propertyName)) {
- $propertiesString .= $propertyName . "=" . $propertyValue . PHP_EOL;
- }
- }
-
- if(!file_put_contents($this->_targetFile, $propertiesString)) {
- throw new BuildException('Failed writing to ' . $this->_targetFile);
- }
- }
- }
-
- /**
- * Checks if a property name is disallowed
- *
- * @access protected
- * @param string $propertyName
- * @return bool
- */
- protected function isDisallowedPropery($propertyName)
- {
- foreach($this->_disallowedPropertyPrefixes as $property) {
- if(substr($propertyName, 0, strlen($property)) == $property) {
- return true;
- }
- }
-
- return false;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ExtractBaseTask.php b/buildscripts/phing/classes/phing/tasks/ext/ExtractBaseTask.php
deleted file mode 100644
index e47acc24..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ExtractBaseTask.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-/*
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/MatchingTask.php';
-
-/**
- * Base class for extracting tasks such as Unzip and Untar.
- *
- * @author Joakim Bodin <joakim.bodin+phing@gmail.com>
- * @version $Id: 8aa7996b72792da30f1ec94174f09b9c612bcc1a $
- * @package phing.tasks.ext
- * @since 2.2.0
- */
-abstract class ExtractBaseTask extends MatchingTask {
- /**
- * @var PhingFile $file
- */
- protected $file;
- /**
- * @var PhingFile $todir
- */
- protected $todir;
- protected $removepath;
- protected $filesets = array(); // all fileset objects assigned to this task
-
- /**
- * Set to true to always extract (and possibly overwrite)
- * all files from the archive
- * @var boolean
- */
- protected $forceExtract = false;
-
- /**
- * Add a new fileset.
- * @return FileSet
- */
- public function createFileSet() {
- $this->fileset = new FileSet();
- $this->filesets[] = $this->fileset;
- return $this->fileset;
- }
-
- /**
- * Set the name of the zip file to extract.
- * @param PhingFile $file zip file to extract
- */
- public function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * This is the base directory to look in for things to zip.
- * @param PhingFile $baseDir
- */
- public function setToDir(PhingFile $todir) {
- $this->todir = $todir;
- }
-
- public function setRemovePath($removepath)
- {
- $this->removepath = $removepath;
- }
-
- /**
- * Sets the forceExtract attribute
- * @param boolean $forceExtract
- */
- public function setForceExtract($forceExtract)
- {
- $this->forceExtract = (bool) $forceExtract;
- }
-
- /**
- * do the work
- * @throws BuildException
- */
- public function main() {
-
- $this->validateAttributes();
-
- $filesToExtract = array();
- if ($this->file !== null) {
- if(!$this->isDestinationUpToDate($this->file)) {
- $filesToExtract[] = $this->file;
- } else {
- $this->log('Nothing to do: ' . $this->todir->getAbsolutePath() . ' is up to date for ' . $this->file->getCanonicalPath(), Project::MSG_INFO);
- }
- }
-
- foreach($this->filesets as $compressedArchiveFileset) {
- $compressedArchiveDirScanner = $compressedArchiveFileset->getDirectoryScanner($this->project);
- $compressedArchiveFiles = $compressedArchiveDirScanner->getIncludedFiles();
- $compressedArchiveDir = $compressedArchiveFileset->getDir($this->project);
-
- foreach ($compressedArchiveFiles as $compressedArchiveFilePath) {
- $compressedArchiveFile = new PhingFile($compressedArchiveDir, $compressedArchiveFilePath);
- if($compressedArchiveFile->isDirectory())
- {
- throw new BuildException($compressedArchiveFile->getAbsolutePath() . ' compressed archive cannot be a directory.');
- }
-
- if ($this->forceExtract || !$this->isDestinationUpToDate($compressedArchiveFile)) {
- $filesToExtract[] = $compressedArchiveFile;
- } else {
- $this->log('Nothing to do: ' . $this->todir->getAbsolutePath() . ' is up to date for ' . $compressedArchiveFile->getCanonicalPath(), Project::MSG_INFO);
- }
- }
- }
-
- foreach ($filesToExtract as $compressedArchiveFile) {
- $this->extractArchive($compressedArchiveFile);
- }
- }
-
- abstract protected function extractArchive(PhingFile $compressedArchiveFile);
-
- /**
- * @param array $files array of filenames
- * @param PhingFile $dir
- * @return boolean
- */
- protected function isDestinationUpToDate(PhingFile $compressedArchiveFile) {
- if (!$compressedArchiveFile->exists()) {
- throw new BuildException("Could not find file " . $compressedArchiveFile->__toString() . " to extract.");
- }
-
- $compressedArchiveContent = $this->listArchiveContent($compressedArchiveFile);
- if(is_array($compressedArchiveContent)) {
-
- $fileSystem = FileSystem::getFileSystem();
- foreach ($compressedArchiveContent as $compressArchivePathInfo) {
- $compressArchiveFilename = $compressArchivePathInfo['filename'];
- if(!empty($this->removepath) && strlen($compressArchiveFilename) >= strlen($this->removepath))
- {
- $compressArchiveFilename = preg_replace('/^' . $this->removepath . '/','', $compressArchiveFilename);
- }
- $compressArchivePath = new PhingFile($this->todir, $compressArchiveFilename);
-
- if(!$compressArchivePath->exists() ||
- $fileSystem->compareMTimes($compressedArchiveFile->getCanonicalPath(), $compressArchivePath->getCanonicalPath()) == 1) {
- return false;
- }
- }
-
- }
-
- return true;
- }
-
- abstract protected function listArchiveContent(PhingFile $compressedArchiveFile);
-
- /**
- * Validates attributes coming in from XML
- *
- * @access private
- * @return void
- * @throws BuildException
- */
- protected function validateAttributes() {
-
- if ($this->file === null && count($this->filesets) === 0) {
- throw new BuildException("Specify at least one source compressed archive - a file or a fileset.");
- }
-
- if ($this->todir === null) {
- throw new BuildException("todir must be set.");
- }
-
- if ($this->todir !== null && $this->todir->exists() && !$this->todir->isDirectory()) {
- throw new BuildException("todir must be a directory.");
- }
-
- if ($this->file !== null && $this->file->exists() && $this->file->isDirectory()) {
- throw new BuildException("Compressed archive file cannot be a directory.");
- }
-
- if ($this->file !== null && !$this->file->exists()) {
- throw new BuildException("Could not find compressed archive file " . $this->file->__toString() . " to extract.");
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/FileHashTask.php b/buildscripts/phing/classes/phing/tasks/ext/FileHashTask.php
deleted file mode 100644
index 5660e793..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/FileHashTask.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/*
- * $Id: c59aff266a03f0e2cf22dc33143f2decf2d5e05c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-require_once 'phing/Task.php';
-
-/**
- * fileHash
- *
- * Calculate either MD5 or SHA hash value of a specified file and retun the
- * value in a property
- *
- * @author Johan Persson <johan162@gmail.com>
- * @version $Id: c59aff266a03f0e2cf22dc33143f2decf2d5e05c $
- * @package phing.tasks.ext
- */
-class FileHashTask extends Task
-{
- /**
- * Property for File
- * @var PhingFile file
- */
- private $file;
-
- /**
- * Property to be set
- * @var string $property
- */
- private $propertyName = "filehashvalue";
-
- /**
- * Specify which hash algorithm to use.
- * 0 = MD5
- * 1 = SHA1
- *
- * @var integer $hashtype
- */
- private $hashtype=0;
-
-
- /**
- * Specify if MD5 or SHA1 hash should be used
- * @param integer $type 0=MD5, 1=SHA1
- */
- public function setHashtype($type)
- {
- $this->hashtype = $type;
- }
-
- /**
- * Which file to calculate the hash value of
- * @param PhingFile $file
- */
- public function setFile($file)
- {
- $this->file = $file;
- }
-
- /**
- * Set the name of the property to store the hash value in
- * @param $property
- * @return void
- */
- public function setPropertyName($property)
- {
- $this->propertyName = $property;
- }
-
- /**
- * Main-Method for the Task
- *
- * @return void
- * @throws BuildException
- */
- public function main()
- {
- $this->checkFile();
- $this->checkPropertyName();
-
- // read file
- if( (int)$this->hashtype === 0 ) {
- $this->log("Calculating MD5 hash from: ".$this->file);
- $hashValue = md5_file($this->file,false);
- }
- elseif( (int)$this->hashtype === 1 ) {
- $this->log("Calculating SHA1 hash from: ".$this->file);
- $hashValue = sha1_file($this->file,false);
- }
- else {
- throw new BuildException(
- sprintf('[FileHash] Unknown hashtype specified %d. Must be either 0 (=MD5) or 1 (=SHA1).',$this->hashtype));
-
- }
-
- // publish hash value
- $this->project->setProperty($this->propertyName, $hashValue);
-
- }
-
- /**
- * checks file attribute
- * @return void
- * @throws BuildException
- */
- private function checkFile()
- {
- // check File
- if ($this->file === null ||
- strlen($this->file) == 0) {
- throw new BuildException('[FileHash] You must specify an input file.', $this->file);
- }
-
- if( ! is_readable($this->file) ) {
- throw new BuildException(sprintf('[FileHash] Input file does not exist or is not readable: %s',$this->file));
- }
-
- }
-
- /**
- * checks property attribute
- * @return void
- * @throws BuildException
- */
- private function checkPropertyName()
- {
- if (is_null($this->propertyName) ||
- strlen($this->propertyName) === 0) {
- throw new BuildException('Property name for publishing hashvalue is not set');
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/FileSizeTask.php b/buildscripts/phing/classes/phing/tasks/ext/FileSizeTask.php
deleted file mode 100644
index 120197dd..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/FileSizeTask.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/*
- * $Id: 2a59c1a9b46f3fd71df0fd3b50908eff268fd630 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-require_once 'phing/Task.php';
-
-/**
- * fileHash
- *
- * Calculate either MD5 or SHA hash value of a specified file and retun the
- * value in a property
- *
- * @author Johan Persson <johan162@gmail.com>
- * @version $Id: 2a59c1a9b46f3fd71df0fd3b50908eff268fd630 $
- * @package phing.tasks.ext
- */
-class FileSizeTask extends Task
-{
- /**
- * Property for File
- * @var PhingFile file
- */
- private $file;
-
- /**
- * Property where the file size will be stored
- * @var string $property
- */
- private $propertyName = "filesize";
-
- /**
- * Which file to calculate the file size of
- * @param PhingFile $file
- */
- public function setFile($file)
- {
- $this->file = $file;
- }
-
- /**
- * Set the name of the property to store the file size
- * @param $property
- * @return void
- */
- public function setPropertyName($property)
- {
- $this->propertyName = $property;
- }
-
- /**
- * Main-Method for the Task
- *
- * @return void
- * @throws BuildException
- */
- public function main()
- {
- $this->checkFile();
- $this->checkPropertyName();
-
- $size = filesize($this->file);
-
- if( $size === false ) {
- throw new BuildException(sprintf('[FileSize] Cannot determine size of file: %s',$this->file));
-
- }
-
- // publish hash value
- $this->project->setProperty($this->propertyName, $size);
-
- }
-
- /**
- * checks file attribute
- * @return void
- * @throws BuildException
- */
- private function checkFile()
- {
- // check File
- if ($this->file === null ||
- strlen($this->file) == 0) {
- throw new BuildException('[FileSize] You must specify an input file.', $this->file);
- }
-
- if( ! is_readable($this->file) ) {
- throw new BuildException(sprintf('[FileSize] Input file does not exist or is not readable: %s',$this->file));
- }
-
- }
-
- /**
- * checks property attribute
- * @return void
- * @throws BuildException
- */
- private function checkPropertyName()
- {
- if (is_null($this->propertyName) ||
- strlen($this->propertyName) === 0) {
- throw new BuildException('[FileSize] Property name for publishing file size is not set');
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/FtpDeployTask.php b/buildscripts/phing/classes/phing/tasks/ext/FtpDeployTask.php
deleted file mode 100644
index 136c0ac7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/FtpDeployTask.php
+++ /dev/null
@@ -1,233 +0,0 @@
-<?php
-/**
- * $Id: 87063ecf88b18eae74c2bca3918a1b4ac9f52807 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * FtpDeployTask
- *
- * Deploys a set of files to a remote FTP server.
- *
- *
- * Example usage:
- * <ftpdeploy host="host" port="21" username="user" password="password" dir="public_html" mode="ascii" clearfirst="true">
- * <fileset dir=".">
- * <include name="**"/>
- * <exclude name="phing"/>
- * <exclude name="build.xml"/>
- * <exclude name="images/**.png"/>
- * <exclude name="images/**.gif"/>
- * <exclude name="images/**.jpg"/>
- * </fileset>
- * </ftpdeploy>
- *
- * @author Jorrit Schippers <jorrit at ncode dot nl>
- * @version $Id: 87063ecf88b18eae74c2bca3918a1b4ac9f52807 $
- * @since 2.3.1
- * @package phing.tasks.ext
- */
-class FtpDeployTask extends Task
-{
- private $host = null;
- private $port = 21;
- private $username = null;
- private $password = null;
- private $dir = null;
- private $filesets;
- private $completeDirMap;
- private $mode = FTP_BINARY;
- private $clearFirst = false;
- private $passive = false;
-
- protected $logLevel = Project::MSG_VERBOSE;
-
- public function __construct() {
- $this->filesets = array();
- $this->completeDirMap = array();
- }
-
- public function setHost($host) {
- $this->host = $host;
- }
-
- public function setPort($port) {
- $this->port = (int) $port;
- }
-
- public function setUsername($username) {
- $this->username = $username;
- }
-
- public function setPassword($password) {
- $this->password = $password;
- }
-
- public function setDir($dir) {
- $this->dir = $dir;
- }
-
- public function setMode($mode) {
- switch(strtolower($mode)) {
- case 'ascii':
- $this->mode = FTP_ASCII;
- break;
- case 'binary':
- case 'bin':
- $this->mode = FTP_BINARY;
- break;
- }
- }
-
- public function setPassive($passive)
- {
- $this->passive = (bool) $passive;
- }
-
- public function setClearFirst($clearFirst) {
- $this->clearFirst = (bool) $clearFirst;
- }
-
- public function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Set level of log messages generated (default = info)
- * @param string $level
- */
- public function setLevel($level)
- {
- switch ($level)
- {
- case "error": $this->logLevel = Project::MSG_ERR; break;
- case "warning": $this->logLevel = Project::MSG_WARN; break;
- case "info": $this->logLevel = Project::MSG_INFO; break;
- case "verbose": $this->logLevel = Project::MSG_VERBOSE; break;
- case "debug": $this->logLevel = Project::MSG_DEBUG; break;
- }
- }
-
- /**
- * The init method: check if Net_FTP is available
- */
- public function init() {
- require_once 'PEAR.php';
-
- $paths = explode(PATH_SEPARATOR, get_include_path());
- foreach($paths as $path) {
- if(file_exists($path.DIRECTORY_SEPARATOR.'Net'.DIRECTORY_SEPARATOR.'FTP.php')) {
- return true;
- }
- }
- throw new BuildException('The FTP Deploy task requires the Net_FTP PEAR package.');
- }
-
- /**
- * The main entry point method.
- */
- public function main() {
- $project = $this->getProject();
-
- require_once 'Net/FTP.php';
- $ftp = new Net_FTP($this->host, $this->port);
- $ret = $ftp->connect();
- if(@PEAR::isError($ret)) {
- throw new BuildException('Could not connect to FTP server '.$this->host.' on port '.$this->port.': '.$ret->getMessage());
- } else {
- $this->log('Connected to FTP server ' . $this->host . ' on port ' . $this->port, $this->logLevel);
- }
-
- $ret = $ftp->login($this->username, $this->password);
- if(@PEAR::isError($ret)) {
- throw new BuildException('Could not login to FTP server '.$this->host.' on port '.$this->port.' with username '.$this->username.': '.$ret->getMessage());
- } else {
- $this->log('Logged in to FTP server with username ' . $this->username, $this->logLevel);
- }
-
- if ($this->passive) {
- $this->log('Setting passive mode', $this->logLevel);
- $ret = $ftp->setPassive();
- if(@PEAR::isError($ret)) {
- $ftp->disconnect();
- throw new BuildException('Could not set PASSIVE mode: '.$ret->getMessage());
- }
- }
-
- // append '/' to the end if necessary
- $dir = substr($this->dir, -1) == '/' ? $this->dir : $this->dir.'/';
-
- if($this->clearFirst) {
- // TODO change to a loop through all files and directories within current directory
- $this->log('Clearing directory '.$dir, $this->logLevel);
- $ftp->rm($dir, true);
- }
-
- // Create directory just in case
- $ret = $ftp->mkdir($dir, true);
- if(@PEAR::isError($ret)) {
- $ftp->disconnect();
- throw new BuildException('Could not create directory '.$dir.': '.$ret->getMessage());
- }
-
- $ret = $ftp->cd($dir);
- if(@PEAR::isError($ret)) {
- $ftp->disconnect();
- throw new BuildException('Could not change to directory '.$dir.': '.$ret->getMessage());
- } else {
- $this->log('Changed directory ' . $dir, $this->logLevel);
- }
-
- $fs = FileSystem::getFileSystem();
- $convert = $fs->getSeparator() == '\\';
-
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $fromDir = $fs->getDir($project);
- $srcFiles = $ds->getIncludedFiles();
- $srcDirs = $ds->getIncludedDirectories();
- foreach($srcDirs as $dirname) {
- if($convert)
- $dirname = str_replace('\\', '/', $dirname);
- $this->log('Will create directory '.$dirname, $this->logLevel);
- $ret = $ftp->mkdir($dirname, true);
- if(@PEAR::isError($ret)) {
- $ftp->disconnect();
- throw new BuildException('Could not create directory '.$dirname.': '.$ret->getMessage());
- }
- }
- foreach($srcFiles as $filename) {
- $file = new PhingFile($fromDir->getAbsolutePath(), $filename);
- if($convert)
- $filename = str_replace('\\', '/', $filename);
- $this->log('Will copy '.$file->getCanonicalPath().' to '.$filename, $this->logLevel);
- $ret = $ftp->put($file->getCanonicalPath(), $filename, true, $this->mode);
- if(@PEAR::isError($ret)) {
- $ftp->disconnect();
- throw new BuildException('Could not deploy file '.$filename.': '.$ret->getMessage());
- }
- }
- }
-
- $ftp->disconnect();
- $this->log('Disconnected from FTP server', $this->logLevel);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/HttpGetTask.php b/buildscripts/phing/classes/phing/tasks/ext/HttpGetTask.php
deleted file mode 100755
index 114b80a1..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/HttpGetTask.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-/*
- * $Id: f3fa317b72e2f70f1e483fa49dbf089094e2a476 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * A HTTP request task.
- * Making an HTTP request and try to match the response against an provided
- * regular expression.
- *
- * @package phing.tasks.ext
- * @author Ole Markus With <o.with@sportradar.com>
- * @version $Id: f3fa317b72e2f70f1e483fa49dbf089094e2a476 $
- */
-class HttpGetTask extends Task
-{
- /**
- * Holds the request URL
- *
- * @var string
- */
- protected $url = null;
-
- /**
- * Holds the filename to store the output in
- *
- * @var string
- */
- protected $filename = null;
-
- /**
- * Holds the save location
- *
- * @var string
- */
- protected $dir = null;
-
- /**
- * Holds the proxy
- *
- * @var string
- */
- protected $_proxy = null;
-
- /**
- * Load the necessary environment for running this task.
- *
- * @throws BuildException
- */
- public function init()
- {
- @include_once 'HTTP/Request2.php';
-
- if (! class_exists('HTTP_Request2')) {
- throw new BuildException(
- 'HttpRequestTask depends on HTTP_Request2 being installed '
- . 'and on include_path.',
- $this->getLocation()
- );
- }
- }
-
-
- /**
- * Make the GET request
- *
- * @throws BuildException
- */
- public function main()
- {
- if (!isset($this->url)) {
- throw new BuildException("Missing attribute 'url'");
- }
-
- if (!isset($this->dir)) {
- throw new BuildException("Missing attribute 'dir'");
- }
-
- $config = array();
- if (isset($this->_proxy) && $url = parse_url($this->_proxy)) {
- $config['proxy_user'] = $url['user'];
- $config['proxy_password'] = $url['pass'];
- $config['proxy_host'] = $url['host'];
- $config['proxy_port'] = $url['port'];
- }
-
- $this->log("Fetching " . $this->url);
-
- $request = new HTTP_Request2($this->url, '', $config);
- $response = $request->send();
- if ($response->getStatus() != 200) {
- throw new BuildException("Request unsuccessful. Response from server: " . $response->getStatus() . " " . $response->getReasonPhrase());
- }
-
- $content = $response->getBody();
- $disposition = $response->getHeader('content-disposition');
-
- if ($this->filename) {
- $filename = $this->filename;
- } elseif ($disposition && 0 == strpos($disposition, 'attachment')
- && preg_match('/filename="([^"]+)"/', $disposition, $m)) {
- $filename = basename($m[1]);
- } else {
- $filename = basename(parse_url($this->url, PHP_URL_PATH));
- }
-
- if (!is_writable($this->dir)) {
- throw new BuildException("Cannot write to directory: " . $this->dir);
- }
-
- $filename = $this->dir . "/" . $filename;
- file_put_contents($filename, $content);
-
- $this->log("Contents from " . $this->url . " saved to $filename");
- }
-
- /**
- * Sets the request URL
- *
- * @param string $url
- */
- public function setUrl($url) {
- $this->url = $url;
- }
-
- /**
- * Sets the filename to store the output in
- *
- * @param string $filename
- */
- public function setFilename($filename) {
- $this->filename = $filename;
- }
-
- /**
- * Sets the save location
- *
- * @param string $dir
- */
- public function setDir($dir) {
- $this->dir = $dir;
- }
-
- /**
- * Sets the proxy
- *
- * @param string $proxy
- */
- public function setProxy($proxy) {
- $this->_proxy = $proxy;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/HttpRequestTask.php b/buildscripts/phing/classes/phing/tasks/ext/HttpRequestTask.php
deleted file mode 100644
index e6f15075..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/HttpRequestTask.php
+++ /dev/null
@@ -1,286 +0,0 @@
-<?php
-/*
- * $Id: 495c02bc3a90d24694d8a4bf2d43ac077e0f9ec6 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * A HTTP request task.
- * Making an HTTP request and try to match the response against an provided
- * regular expression.
- *
- * @package phing.tasks.ext
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 495c02bc3a90d24694d8a4bf2d43ac077e0f9ec6 $
- * @since 2.4.1
- */
-class HttpRequestTask extends Task
-{
- /**
- * Holds the request URL
- *
- * @var string
- */
- protected $_url = null;
-
- /**
- * Holds the regular expression that should match the response
- *
- * @var string
- */
- protected $_responseRegex = '';
-
- /**
- * Whether to enable detailed logging
- *
- * @var boolean
- */
- protected $_verbose = false;
-
- /**
- * Holds additional header data
- *
- * @var array<Parameter>
- */
- protected $_headers = array();
-
- /**
- * Holds additional config data for HTTP_Request2
- *
- * @var array<Parameter>
- */
- protected $_configData = array();
-
- /**
- * Holds the authentication user name
- *
- * @var string
- */
- protected $_authUser = null;
-
- /**
- * Holds the authentication password
- *
- * @var string
- */
- protected $_authPassword = '';
-
- /**
- * Holds the authentication scheme
- *
- * @var string
- */
- protected $_authScheme;
-
- /**
- * Holds the events that will be logged
- *
- * @var array<string>
- */
- protected $_observerEvents = array(
- 'connect',
- 'sentHeaders',
- 'sentBodyPart',
- 'receivedHeaders',
- 'receivedBody',
- 'disconnect',
- );
-
- /**
- * Sets the request URL
- *
- * @param string $url
- */
- public function setUrl($url)
- {
- $this->_url = $url;
- }
-
- /**
- * Sets the response regex
- *
- * @param string $regex
- */
- public function setResponseRegex($regex)
- {
- $this->_responseRegex = $regex;
- }
-
- /**
- * Sets the authentication user name
- *
- * @param string $user
- */
- public function setAuthUser($user)
- {
- $this->_authUser = $user;
- }
-
- /**
- * Sets the authentication password
- *
- * @param string $password
- */
- public function setAuthPassword($password)
- {
- $this->_authPassword = $password;
- }
-
- /**
- * Sets the authentication scheme
- *
- * @param string $scheme
- */
- public function setAuthScheme($scheme)
- {
- $this->_authScheme = $scheme;
- }
-
- /**
- * Sets whether to enable detailed logging
- *
- * @param boolean $verbose
- */
- public function setVerbose($verbose)
- {
- $this->_verbose = StringHelper::booleanValue($verbose);
- }
-
- /**
- * Sets a list of observer events that will be logged
- * if verbose output is enabled.
- *
- * @param string $observerEvents List of observer events
- *
- * @return void
- */
- public function setObserverEvents($observerEvents)
- {
- $this->_observerEvents = array();
-
- $token = ' ,;';
- $ext = strtok($observerEvents, $token);
-
- while ($ext !== false) {
- $this->_observerEvents[] = $ext;
- $ext = strtok($token);
- }
- }
-
- /**
- * Creates an additional header for this task
- *
- * @return Parameter The created header
- */
- public function createHeader()
- {
- $num = array_push($this->_headers, new Parameter());
- return $this->_headers[$num-1];
- }
-
- /**
- * Creates a config parameter for this task
- *
- * @return Parameter The created parameter
- */
- public function createConfig()
- {
- $num = array_push($this->_configData, new Parameter());
- return $this->_configData[$num-1];
- }
-
- /**
- * Load the necessary environment for running this task.
- *
- * @throws BuildException
- */
- public function init()
- {
- @include_once 'HTTP/Request2.php';
-
- if (! class_exists('HTTP_Request2')) {
- throw new BuildException(
- 'HttpRequestTask depends on HTTP_Request2 being installed '
- . 'and on include_path.',
- $this->getLocation()
- );
- }
-
- $this->_authScheme = HTTP_Request2::AUTH_BASIC;
-
- // Other dependencies that should only be loaded
- // when class is actually used
- require_once 'HTTP/Request2/Observer/Log.php';
- }
-
- /**
- * Make the http request
- */
- public function main()
- {
- if (!isset($this->_url)) {
- throw new BuildException("Missing attribute 'url' set");
- }
-
- $request = new HTTP_Request2($this->_url);
-
- // set the authentication data
- if (!empty($this->_authUser)) {
- $request->setAuth(
- $this->_authUser,
- $this->_authPassword,
- $this->_authScheme
- );
- }
-
- foreach ($this->_configData as $config) {
- $request->setConfig($config->getName(), $config->getValue());
- }
-
- foreach ($this->_headers as $header) {
- $request->setHeader($header->getName(), $header->getValue());
- }
-
- if ($this->_verbose) {
- $observer = new HTTP_Request2_Observer_Log();
-
- // set the events we want to log
- $observer->events = $this->_observerEvents;
-
- $request->attach($observer);
- }
-
- $response = $request->send();
-
- if ($this->_responseRegex !== '') {
- $matches = array();
- preg_match($this->_responseRegex, $response->getBody(), $matches);
-
- if (count($matches) === 0) {
- throw new BuildException(
- 'The received response body did not match the '
- . 'given regular expression'
- );
- } else {
- $this->log('The response body matched the provided regex.');
- }
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/JslLintTask.php b/buildscripts/phing/classes/phing/tasks/ext/JslLintTask.php
deleted file mode 100644
index 77a4aad5..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/JslLintTask.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-/*
- * $Id: 551de2e94aa21f44e19dd0806051f1eabf8b20f9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/util/DataStore.php';
-
-/**
- * A Javascript lint task. Checks syntax of Javascript files.
- * Javascript lint (http://www.javascriptlint.com) must be in the system path.
- * This class is based on Knut Urdalen's PhpLintTask.
- *
- * @author Stefan Priebsch <stefan.priebsch@e-novative.de>
- * @version $Id: 551de2e94aa21f44e19dd0806051f1eabf8b20f9 $
- * @package phing.tasks.ext
- */
-class JslLintTask extends Task
-{
- protected $file; // the source file (from xml attribute)
- protected $filesets = array(); // all fileset objects assigned to this task
-
- protected $showWarnings = true;
- protected $haltOnFailure = false;
- protected $hasErrors = false;
- private $badFiles = array();
-
- private $cache = null;
- private $conf = null;
-
- private $executable = "jsl";
-
- /**
- * @var PhingFile
- */
- protected $tofile = null;
-
- /**
- * Sets the flag if warnings should be shown
- * @param boolean $show
- */
- public function setShowWarnings($show) {
- $this->showWarnings = StringHelper::booleanValue($show);
- }
-
- /**
- * The haltonfailure property
- * @param boolean $aValue
- */
- public function setHaltOnFailure($aValue) {
- $this->haltOnFailure = $aValue;
- }
-
- /**
- * File to be performed syntax check on
- * @param PhingFile $file
- */
- public function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * Whether to store last-modified times in cache
- *
- * @param PhingFile $file
- */
- public function setCacheFile(PhingFile $file)
- {
- $this->cache = new DataStore($file);
- }
-
- /**
- * jsl config file
- *
- * @param PhingFile $file
- */
- public function setConfFile(PhingFile $file)
- {
- $this->conf = $file;
- }
-
- public function setExecutable($path){
- $this->executable = $path;
-
- if (!@file_exists($path)) {
- throw new BuildException("JavaScript Lint executable '{$path}' not found");
- }
- }
-
- public function getExecutable(){
- return $this->executable;
- }
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * File to save error messages to
- *
- * @param PhingFile $file
- */
- public function setToFile(PhingFile $tofile)
- {
- $this->tofile = $tofile;
- }
-
- /**
- * Execute lint check against PhingFile or a FileSet
- */
- public function main() {
- if(!isset($this->file) and count($this->filesets) == 0) {
- throw new BuildException("Missing either a nested fileset or attribute 'file' set");
- }
-
- if (empty($this->executable)) {
- throw new BuildException("Missing the 'executable' attribute");
- }
-
- if($this->file instanceof PhingFile) {
- $this->lint($this->file->getPath());
- } else { // process filesets
- $project = $this->getProject();
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $files = $ds->getIncludedFiles();
- $dir = $fs->getDir($this->project)->getPath();
- foreach($files as $file) {
- $this->lint($dir.DIRECTORY_SEPARATOR.$file);
- }
- }
- }
-
- // write list of 'bad files' to file (if specified)
- if ($this->tofile) {
- $writer = new FileWriter($this->tofile);
-
- foreach ($this->badFiles as $file => $messages) {
- foreach ($messages as $msg) {
- $writer->write($file . "=" . $msg . PHP_EOL);
- }
- }
-
- $writer->close();
- }
-
- if ($this->haltOnFailure && $this->hasErrors) throw new BuildException('Syntax error(s) in JS files:' .implode(', ', array_keys($this->badFiles)));
- }
-
- /**
- * Performs the actual syntax check
- *
- * @param string $file
- * @return void
- */
- protected function lint($file)
- {
- $command = $this->executable . ' -output-format ' . escapeshellarg('file:__FILE__;line:__LINE__;message:__ERROR__') . ' ';
-
- if (isset($this->conf)) {
- $command .= '-conf ' . escapeshellarg($this->conf->getPath()) . ' ';
- }
-
- $command .= '-process ';
-
- if(file_exists($file))
- {
- if(is_readable($file))
- {
- if ($this->cache)
- {
- $lastmtime = $this->cache->get($file);
-
- if ($lastmtime >= filemtime($file))
- {
- $this->log("Not linting '" . $file . "' due to cache", Project::MSG_DEBUG);
- return false;
- }
- }
-
- $messages = array();
- exec($command.'"'.$file.'"', $messages, $return);
-
- if ($return > 100) {
- throw new BuildException("Could not execute Javascript Lint executable '{$this->executable}'");
- }
-
- $summary = $messages[sizeof($messages) - 1];
-
- preg_match('/(\d+)\serror/', $summary, $matches);
- $errorCount = (count($matches) > 1 ? $matches[1] : 0);
-
- preg_match('/(\d+)\swarning/', $summary, $matches);
- $warningCount = (count($matches) > 1 ? $matches[1] : 0);
-
- $errors = array();
- $warnings = array();
- if ($errorCount > 0 || $warningCount > 0) {
- $last = false;
- foreach ($messages as $message) {
- $matches = array();
- if (preg_match('/^(\.*)\^$/', $message)) {
- $column = strlen($message);
- if ($last == 'error') {
- $errors[count($errors) - 1]['column'] = $column;
- } else if ($last == 'warning') {
- $warnings[count($warnings) - 1]['column'] = $column;
- }
- $last = false;
- }
- if (!preg_match('/^file:(.+);line:(\d+);message:(.+)$/', $message, $matches)) continue;
- $msg = $matches[3];
- $data = array('filename' => $matches[1], 'line' => $matches[2], 'message' => $msg);
- if (preg_match('/^.*error:.+$/i', $msg)) {
- $errors[] = $data;
- $last = 'error';
- } else if (preg_match('/^.*warning:.+$/i', $msg)) {
- $warnings[] = $data;
- $last = 'warning';
- }
- }
- }
-
- if($this->showWarnings && $warningCount > 0)
- {
- $this->log($file . ': ' . $warningCount . ' warnings detected', Project::MSG_WARN);
- foreach ($warnings as $warning) {
- $this->log('- line ' . $warning['line'] . (isset($warning['column']) ? ' column ' . $warning['column'] : '') . ': ' . $warning['message'], Project::MSG_WARN);
- }
- }
-
- if($errorCount > 0)
- {
- $this->log($file . ': ' . $errorCount . ' errors detected', Project::MSG_ERR);
- if (!isset($this->badFiles[$file])) {
- $this->badFiles[$file] = array();
- }
-
- foreach ($errors as $error) {
- $message = 'line ' . $error['line'] . (isset($error['column']) ? ' column ' . $error['column'] : '') . ': ' . $error['message'];
- $this->log('- ' . $message, Project::MSG_ERR);
- array_push($this->badFiles[$file], $message);
- }
- $this->hasErrors = true;
- } else if (!$this->showWarnings || $warningCount == 0) {
- $this->log($file . ': No syntax errors detected', Project::MSG_VERBOSE);
-
- if ($this->cache)
- {
- $this->cache->put($file, filemtime($file));
- }
- }
- } else {
- throw new BuildException('Permission denied: '.$file);
- }
- } else {
- throw new BuildException('File not found: '.$file);
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/MailTask.php b/buildscripts/phing/classes/phing/tasks/ext/MailTask.php
deleted file mode 100755
index 0fff88cc..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/MailTask.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-/*
- * $Id: 901fb0efa435ae78d249a50ed0e0f6e5d31e0d32 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/Task.php';
-
-/**
- * Send an e-mail message
- *
- * <mail tolist="user@example.org" subject="build complete">The build process is a success...</mail>
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Francois Harvey at SecuriWeb (http://www.securiweb.net)
- * @version $Id: 901fb0efa435ae78d249a50ed0e0f6e5d31e0d32 $
- * @package phing.tasks.ext
- */
-class MailTask extends Task
-{
- protected $tolist = null;
- protected $subject = null;
- protected $msg = null;
- protected $from = null;
-
- protected $filesets = array();
-
- public function main()
- {
- if (empty($this->from)) {
- throw new BuildException('Missing "from" attribute');
- }
-
- $this->log('Sending mail to ' . $this->tolist);
-
- if (!empty($this->filesets)) {
- @require_once 'Mail.php';
- @require_once 'Mail/mime.php';
-
- if (!class_exists('Mail_mime')) {
- throw new BuildException('Need the PEAR Mail_mime package to send attachments');
- }
-
- $mime = new Mail_mime();
- $hdrs = array(
- 'From' => $this->from,
- 'Subject' => $this->subject
- );
- $mime->setTXTBody($this->msg);
-
- foreach ($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($this->project);
- $fromDir = $fs->getDir($this->project);
- $srcFiles = $ds->getIncludedFiles();
-
- foreach ($srcFiles as $file) {
- $mime->addAttachment($fromDir . DIRECTORY_SEPARATOR . $file, 'application/octet-stream');
- }
- }
-
- $body = $mime->get();
- $hdrs = $mime->headers($hdrs);
-
- $mail = Mail::factory('mail');
- $mail->send($this->tolist, $hdrs, $body);
- } else {
- mail($this->tolist, $this->subject, $this->msg, "From: {$this->from}\n");
- }
- }
-
- /**
- * Setter for message
- */
- public function setMsg($msg)
- {
- $this->setMessage($msg);
- }
-
- /**
- * Alias setter
- */
- public function setMessage($msg)
- {
- $this->msg = (string) $msg;
- }
-
- /**
- * Setter for subject
- */
- public function setSubject($subject)
- {
- $this->subject = (string) $subject;
- }
-
- /**
- * Setter for tolist
- */
- public function setToList($tolist)
- {
- $this->tolist = $tolist;
- }
-
- /**
- * Alias for (deprecated) recipient
- */
- public function setRecipient($recipient)
- {
- $this->tolist = (string) $recipient;
- }
-
- /**
- * Alias for to
- */
- public function setTo($to)
- {
- $this->tolist = (string) $to;
- }
-
- /**
- * Supports the <mail>Message</mail> syntax.
- */
- public function addText($msg)
- {
- $this->msg = (string) $msg;
- }
-
- /**
- * Sets email address of sender
- */
- public function setFrom($from)
- {
- $this->from = $from;
- }
-
- /**
- * Adds a fileset
- */
- public function createFileSet()
- {
- $fileset = new FileSet();
- $this->filesets[] = $fileset;
- return $fileset;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ManifestTask.php b/buildscripts/phing/classes/phing/tasks/ext/ManifestTask.php
deleted file mode 100644
index b9cfae64..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ManifestTask.php
+++ /dev/null
@@ -1,343 +0,0 @@
-<?php
-/**
- * $Id: 7f8f119fe5dd44ca9f374e24d776a1a764260e33 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once "phing/Task.php";
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * ManifestTask
- *
- * Generates a simple Manifest file with optional checksums.
- *
- *
- * Manifest schema:
- * ...
- * path/to/file CHECKSUM [CHECKSUM2] [CHECKSUM3]
- * path/to/secondfile CHECKSUM [CHECKSUM2] [CHECKSUM3]
- * ...
- *
- * Example usage:
- * <manifest checksum="crc32" file="${dir_build}/Manifest">
- * <fileset refid="files_build" />
- * </manifest>
- *
- * <manifest checksum="md5,adler32,sha256" file="${dir_build}/Manifest">
- * <fileset refid="files_build" />
- * </manifest>
- *
- *
- *
- * @author David Persson <davidpersson at qeweurope dot org>
- * @package phing.tasks.ext
- * @version $Id: 7f8f119fe5dd44ca9f374e24d776a1a764260e33 $
- * @since 2.3.1
- */
-class ManifestTask extends Task
-{
- var $taskname = 'manifest';
-
- /**
- * Action
- *
- * "w" for reading in files from fileSet
- * and writing manifest
- *
- * or
- *
- * "r" for reading in files from fileSet
- * and checking against manifest
- *
- * @var string "r" or "w"
- */
- private $action = 'w';
-
- /**
- * The target file passed in the buildfile.
- */
- private $destFile = null;
-
- /**
- * Holds filesets
- *
- * @var array An Array of objects
- */
- private $filesets = array();
-
- /**
- * Enable/Disable checksuming or/and select algorithm
- * true defaults to md5
- * false disables checksuming
- * string "md5,sha256,..." enables generation of multiple checksums
- * string "sha256" generates sha256 checksum only
- *
- * @var mixed
- */
- private $checksum = false;
-
- /**
- * A string used in hashing method
- *
- * @var string
- */
- private $salt = '';
-
- /**
- * Holds some data collected during runtime
- *
- * @var array
- */
- private $meta = array('totalFileCount' => 0,'totalFileSize' => 0);
-
-
- /**
- * The setter for the attribute "file"
- * This is where the manifest will be written to/read from
- *
- * @param string Path to readable file
- * @return void
- */
- public function setFile(PhingFile $file)
- {
- $this->file = $file;
- }
-
- /**
- * The setter for the attribute "checksum"
- *
- * @param mixed $mixed
- * @return void
- */
- public function setChecksum($mixed)
- {
- if(is_string($mixed)) {
- $data = array(strtolower($mixed));
-
- if(strpos($data[0],',')) {
- $data = explode(',',$mixed);
- }
-
- $this->checksum = $data;
-
- } elseif($mixed === true) {
- $this->checksum = array('md5');
-
- }
- }
-
- /**
- * The setter for the optional attribute "salt"
- *
- * @param string $string
- * @return void
- */
- public function setSalt($string)
- {
- $this->salt = $string;
- }
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @access public
- * @return object The created fileset object
- */
- public function createFileSet()
- {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * The init method: Do init steps.
- */
- public function init()
- {
- // nothing to do here
- }
-
- /**
- * Delegate the work
- */
- public function main()
- {
- $this->validateAttributes();
-
- if($this->action == 'w') {
- $this->write();
-
- } elseif($this->action == 'r') {
- $this->read();
-
- }
- }
-
- /**
- * Creates Manifest file
- * Writes to $this->file
- *
- * @throws BuildException
- */
- private function write()
- {
- $project = $this->getProject();
-
- if(!touch($this->file->getPath())) {
- throw new BuildException("Unable to write to ".$this->file->getPath().".");
- }
-
- $this->log("Writing to " . $this->file->__toString(), Project::MSG_INFO);
-
- if(is_array($this->checksum)) {
- $this->log("Using " . implode(', ',$this->checksum)." for checksuming.", Project::MSG_INFO);
- }
-
- foreach($this->filesets as $fs) {
-
- $dir = $fs->getDir($this->project)->getPath();
-
- $ds = $fs->getDirectoryScanner($project);
- $fromDir = $fs->getDir($project);
- $srcFiles = $ds->getIncludedFiles();
- $srcDirs = $ds->getIncludedDirectories();
-
- foreach($ds->getIncludedFiles() as $file_path) {
- $line = $file_path;
- if($this->checksum) {
- foreach($this->checksum as $algo) {
- if(!$hash = $this->hashFile($dir.'/'.$file_path,$algo)) {
- throw new BuildException("Hashing $dir/$file_path with $algo failed!");
- }
-
- $line .= "\t".$hash;
- }
- }
- $line .= "\n";
- $manifest[] = $line;
- $this->log("Adding file ".$file_path,Project::MSG_VERBOSE);
- $this->meta['totalFileCount'] ++;
- $this->meta['totalFileSize'] += filesize($dir.'/'.$file_path);
- }
-
- }
-
- file_put_contents($this->file,$manifest);
-
- $this->log("Done. Total files: ".$this->meta['totalFileCount'].". Total file size: ".$this->meta['totalFileSize']." bytes.", Project::MSG_INFO);
- }
-
- /**
- * @todo implement
- */
- private function read()
- {
- throw new BuildException("Checking against manifest not yet supported.");
- }
-
- /**
- * Wrapper method for hash generation
- * Automatically selects extension
- * Falls back to built-in functions
- *
- * @link http://www.php.net/mhash
- * @link http://www.php.net/hash
- *
- * @param string $msg The string that should be hashed
- * @param string $algo Algorithm
- * @return mixed String on success, false if $algo is not available
- */
- private function hash($msg,$algo)
- {
- if(extension_loaded('hash')) {
- $algo = strtolower($algo);
-
- if(in_array($algo,hash_algos())) {
- return hash($algo,$this->salt.$msg);
- }
-
- }
-
- if(extension_loaded('mhash')) {
- $algo = strtoupper($algo);
-
- if(defined('MHASH_'.$algo)) {
- return mhash('MHASH_'.$algo,$this->salt.$msg);
-
- }
- }
-
- switch(strtolower($algo)) {
- case 'md5':
- return md5($this->salt.$msg);
- case 'crc32':
- return abs(crc32($this->salt.$msg));
- }
-
- return false;
- }
-
- /**
- * Hash a files contents
- * plus it's size an modification time
- *
- * @param string $file
- * @param string $algo
- * @return mixed String on success, false if $algo is not available
- */
- private function hashFile($file,$algo)
- {
- if(!file_exists($file)) {
- return false;
- }
-
- $msg = file_get_contents($file).filesize($file).filemtime($file);
-
- return $this->hash($msg,$algo);
- }
-
- /**
- * Validates attributes coming in from XML
- *
- * @access private
- * @return void
- * @throws BuildException
- */
- protected function validateAttributes()
- {
- if($this->action != 'r' && $this->action != 'w') {
- throw new BuildException("'action' attribute has non valid value. Use 'r' or 'w'");
- }
-
- if(empty($this->salt)) {
- $this->log("No salt provided. Specify one with the 'salt' attribute.", Project::MSG_WARN);
- }
-
- if (is_null($this->file) && count($this->filesets) === 0) {
- throw new BuildException("Specify at least sources and destination - a file or a fileset.");
- }
-
- if (!is_null($this->file) && $this->file->exists() && $this->file->isDirectory()) {
- throw new BuildException("Destination file cannot be a directory.");
- }
-
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/PackageAsPathTask.php b/buildscripts/phing/classes/phing/tasks/ext/PackageAsPathTask.php
deleted file mode 100644
index 2db5ad69..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/PackageAsPathTask.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * $Id: 976dafaf4cafd9ff8f47907a09943ae3963aea79 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Convert dot-notation packages to relative paths.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: 976dafaf4cafd9ff8f47907a09943ae3963aea79 $
- * @package phing.tasks.ext
- */
-class PackageAsPathTask extends Task {
-
- /** The package to convert. */
- protected $pckg;
-
- /** The value to store the conversion in. */
- protected $name;
-
- /**
- * Executes the package to patch converstion and stores it
- * in the user property <code>value</code>.
- */
- public function main()
- {
- $this->project->setUserProperty($this->name, strtr($this->pckg, '.', '/'));
- }
-
- /**
- * @param string $pckg the package to convert
- */
- public function setPackage($pckg)
- {
- $this->pckg = $pckg;
- }
-
- /**
- * @param string $name the Ant variable to store the path in
- */
- public function setName($name)
- {
- $this->name = $name;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ParallelTask.php b/buildscripts/phing/classes/phing/tasks/ext/ParallelTask.php
deleted file mode 100755
index b8da5cb4..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ParallelTask.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-/**
- * $Id: 860b2b6cdbd797754660fe2c1554e22ab2db4967 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- *
- * @package phing.tasks.ext
- */
-
-/**
- * Uses the DocBlox_Parallel library to run nested Phing tasks concurrently.
- *
- * WARNING: this task is highly experimental!
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 860b2b6cdbd797754660fe2c1554e22ab2db4967 $
- * @package phing.tasks.ext
- * @see https://github.com/phpdocumentor/Parallel
- * @since 2.4.10
- */
-class ParallelTask extends SequentialTask
-{
- /**
- * Maximum number of threads / processes
- * @var int
- */
- private $threadCount = 2;
-
- /**
- * Sets the maximum number of threads / processes to use
- * @param int $threadCount
- */
- public function setThreadCount($threadCount)
- {
- $this->threadCount = $threadCount;
- }
-
- public function init()
- {
- }
-
- public function main()
- {
- @include_once 'phing/contrib/DocBlox/Parallel/Manager.php';
- @include_once 'phing/contrib/DocBlox/Parallel/Worker.php';
- @include_once 'phing/contrib/DocBlox/Parallel/WorkerPipe.php';
- if (!class_exists('DocBlox_Parallel_Worker')) {
- throw new BuildException(
- 'ParallelTask depends on DocBlox being installed and on include_path.',
- $this->getLocation()
- );
- }
-
- $mgr = new DocBlox_Parallel_Manager();
- $mgr->setProcessLimit($this->threadCount);
-
- foreach ($this->nestedTasks as $task) {
- $worker = new DocBlox_Parallel_Worker(
- array($task, 'perform'),
- array($task)
- );
-
- $mgr->addWorker($worker);
- }
-
- $mgr->execute();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/PatchTask.php b/buildscripts/phing/classes/phing/tasks/ext/PatchTask.php
deleted file mode 100755
index 162f5fe5..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/PatchTask.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-/**
- * Patches a file by applying a 'diff' file to it
- *
- * Requires "patch" to be on the execution path.
- *
- * Based on Apache Ant PatchTask:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Patches a file by applying a 'diff' file to it
- *
- * Requires "patch" to be on the execution path.
- *
- * @package phing.tasks.ext
- */
-class PatchTask extends Task
-{
- /**
- * Base command to be executed (must end with a space character!)
- * @var string
- */
- const CMD = 'patch --batch --silent ';
-
- /**
- * File to be patched
- * @var string
- */
- private $originalFile;
-
- /**
- * Patch file
- *
- * @var string
- */
- private $patchFile;
-
- /**
- * Value for a "-p" option
- * @var int
- */
- private $strip;
-
- /**
- * Command line arguments for patch binary
- * @var array
- */
- private $cmdArgs = array();
-
- /**
- * Halt on error return value from patch invocation.
- * @var bool
- */
- private $haltOnFailure = false;
-
- /**
- * The file containing the diff output
- *
- * Required.
- *
- * @param string $file File containing the diff output
- * @return void
- * @throws BuildException if $file not exists
- */
- public function setPatchFile($file)
- {
- if (!is_file($file))
- {
- throw new BuildException(sprintf('Patchfile %s doesn\'t exist', $file));
- }
- $this->patchFile = $file;
- }
-
- /**
- * The file to patch
- *
- * Optional if it can be inferred from the diff file.
- *
- * @param string $file File to patch
- * @return void
- */
- public function setOriginalFile($file)
- {
- $this->originalFile = $file;
- }
-
- /**
- * The name of a file to send the output to, instead of patching
- * the file(s) in place
- *
- * Optional.
- *
- * @param string $file File to send the output to
- * @return void
- */
- public function setDestFile($file)
- {
- if ($file !== null)
- {
- $this->cmdArgs []= "--output=$file";
- }
- }
-
- /**
- * Flag to create backups
- *
- * Optional, default - false
- *
- * @param bool $backups If true create backups
- * @return void
- */
- public function setBackups($backups)
- {
- if ($backups)
- {
- $this->cmdArgs []= '--backup';
- }
- }
-
- /**
- * Flag to ignore whitespace differences;
- *
- * Default - false
- *
- * @param bool $ignore If true ignore whitespace differences
- * @return void
- */
- public function setIgnoreWhiteSpace($ignore)
- {
- if ($ignore)
- {
- $this->cmdArgs []= '--ignore-whitespace';
- }
- }
-
- /**
- * Strip the smallest prefix containing <i>num</i> leading slashes
- * from filenames.
- *
- * patch's <i>--strip</i> option.
- *
- * @param int $num number of lines to strip
- * @return void
- * @throws BuildException if num is < 0, or other errors
- */
- public function setStrip($num)
- {
- if ($num < 0)
- {
- throw new BuildException('strip has to be >= 0');
- }
-
- $this->strip = $num;
- }
-
- /**
- * Work silently unless an error occurs
- *
- * Optional, default - false
- * @param bool $flag If true suppress set the -s option on the patch command
- * @return void
- */
- public function setQuiet($flag)
- {
- if ($flag)
- {
- $this->cmdArgs []= '--silent';
- }
- }
-
- /**
- * Assume patch was created with old and new files swapped
- *
- * Optional, default - false
- *
- * @param bool $flag If true set the -R option on the patch command
- * @return void
- */
- public function setReverse($flag)
- {
- if ($flag)
- {
- $this->cmdArgs []= '--reverse';
- }
- }
-
- /**
- * The directory to run the patch command in
- *
- * Defaults to the project's base directory.
- *
- * @param string $directory Directory to run the patch command in
- * @return void
- */
- public function setDir($directory)
- {
- $this->cmdArgs []= "--directory=$directory";
- }
-
- /**
- * Ignore patches that seem to be reversed or already applied
- *
- * @param bool $flag If true set the -N (--forward) option
- * @return void
- */
- public function setForward($flag)
- {
- if ($flag)
- {
- $this->cmdArgs []= "--forward";
- }
- }
-
- /**
- * Set the maximum fuzz factor
- *
- * Defaults to 0
- *
- * @param string $value Value of a fuzz factor
- * @return void
- */
- public function setFuzz($value)
- {
- $this->cmdArgs []= "--fuzz=$value";
- }
-
- /**
- * If true, stop the build process if the patch command
- * exits with an error status.
- *
- * The default is "false"
- *
- * @param bool $value "true" if it should halt, otherwise "false"
- * @return void
- */
- public function setHaltOnFailure($value)
- {
- $this->haltOnFailure = $value;
- }
-
- /**
- * Main task method
- *
- * @return void
- * @throws BuildException when it all goes a bit pear shaped
- */
- public function main()
- {
- if ($this->patchFile == null)
- {
- throw new BuildException('patchfile argument is required');
- }
-
- // Define patch file
- $this->cmdArgs []= '-i ' . $this->patchFile;
- // Define strip factor
- if ($this->strip != null)
- {
- $this->cmdArgs []= '--strip=' . $this->strip;
- }
- // Define original file if specified
- if ($this->originalFile != null)
- {
- $this->cmdArgs []= $this->originalFile;
- }
-
- $cmd = self::CMD . implode(' ', $this->cmdArgs);
-
- $this->log('Applying patch: ' . $this->patchFile);
-
- exec($cmd, $output, $exitCode);
-
- foreach ($output as $line)
- {
- $this->log($line, Project::MSG_VERBOSE);
- }
-
- if ($exitCode != 0 && $this->haltOnFailure)
- {
- throw new BuildException( "Task exited with code $exitCode" );
- }
-
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/PearPackage2Task.php b/buildscripts/phing/classes/phing/tasks/ext/PearPackage2Task.php
deleted file mode 100644
index f42231f7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/PearPackage2Task.php
+++ /dev/null
@@ -1,279 +0,0 @@
-<?php
-/*
- * $Id: 1b20dbb6595bd4c41d1e5f1430900e3bf95de411 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/PearPackageTask.php';
-
-/**
- * A task to create a PEAR package.xml version 2.0 file.
- *
- * This class uses the PEAR_PackageFileManager2 class to perform the work.
- *
- * This class is designed to be very flexible -- i.e. account for changes to the package.xml w/o
- * requiring changes to this class. We've accomplished this by having generic <option> and <mapping>
- * nested elements. All options are set using PEAR_PackageFileManager2::setOptions().
- *
- * The <option> tag is used to set a simple option value.
- * <code>
- * <option name="option_name" value="option_value"/>
- * or <option name="option_name">option_value</option>
- * </code>
- *
- * The <mapping> tag represents a complex data type. You can use nested <element> (and nested <element> with
- * <element> tags) to represent the full complexity of the structure. Bear in mind that what you are creating
- * will be mapped to an associative array that will be passed in via PEAR_PackageFileManager2::setOptions().
- * <code>
- * <mapping name="option_name">
- * <element key="key_name" value="key_val"/>
- * <element key="key_name" value="key_val"/>
- * </mapping>
- * </code>
- *
- * Here's an over-simple example of how this could be used:
- * <code>
- * <pearpkg2 name="phing" dir="${build.src.dir}">
- * <fileset dir="src">
- * <include name="**"/>
- * </fileset>
- * <option name="outputdirectory" value="./build"/>
- * <option name="packagefile" value="package2.xml"/>
- * <option name="packagedirectory" value="./${build.dist.dir}"/>
- * <option name="baseinstalldir" value="${pkg.prefix}"/>
- * <option name="channel" value="my.pear-channel.com"/>
- * <option name="summary" value="${pkg.summary}"/>
- * <option name="description" value="${pkg.description}"/>
- * <option name="apiversion" value="${pkg.version}"/>
- * <option name="apistability" value="beta"/>
- * <option name="releaseversion" value="${pkg.version}"/>
- * <option name="releasestability" value="beta"/>
- * <option name="license" value="none"/>
- * <option name="phpdep" value="5.0.0"/>
- * <option name="pearinstallerdep" value="1.4.6"/>
- * <option name="packagetype" value="php"/>
- * <option name="notes" value="${pkg.relnotes}"/>
- * <mapping name="maintainers">
- * <element>
- * <element key="handle" value="hlellelid"/>
- * <element key="name" value="Hans"/>
- * <element key="email" value="hans@xmpl.org"/>
- * <element key="role" value="lead"/>
- * <element key="active" value="yes"/>
- * </element>
- * </mapping>
- * </pearpkg2>
- * </code>
- *
- * Look at the build.xml in the Phing base directory (assuming you have the full distro / CVS version of Phing) to
- * see a more complete example of how to call this script.
- *
- * @author Stuart Binge <stuart.binge@complinet.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.tasks.ext
- * @version $Id: 1b20dbb6595bd4c41d1e5f1430900e3bf95de411 $
- */
-class PearPackage2Task extends PearPackageTask {
-
- public function init() {
- include_once 'PEAR/PackageFileManager2.php';
- if (!class_exists('PEAR_PackageFileManager2')) {
- throw new BuildException("You must have installed PEAR_PackageFileManager in order to create a PEAR package.xml version 2.0 file.");
- }
- }
-
- protected function setVersion2Options()
- {
- $this->pkg->setPackage($this->package);
- $this->pkg->setDate(strftime('%Y-%m-%d'));
- $this->pkg->setTime(strftime('%H:%M:%S'));
-
- $newopts = array();
- foreach ($this->options as $opt) {
- switch ($opt->getName()) {
- case 'summary':
- $this->pkg->setSummary($opt->getValue());
- break;
-
- case 'description':
- $this->pkg->setDescription($opt->getValue());
- break;
-
- case 'uri':
- $this->pkg->setUri($opt->getValue());
- break;
-
- case 'license':
- $this->pkg->setLicense($opt->getValue());
- break;
-
- case 'channel':
- $this->pkg->setChannel($opt->getValue());
- break;
-
- case 'apiversion':
- $this->pkg->setAPIVersion($opt->getValue());
- break;
-
- case 'releaseversion':
- $this->pkg->setReleaseVersion($opt->getValue());
- break;
-
- case 'releasestability':
- $this->pkg->setReleaseStability($opt->getValue());
- break;
-
- case 'apistability':
- $this->pkg->setAPIStability($opt->getValue());
- break;
-
- case 'notes':
- $this->pkg->setNotes($opt->getValue());
- break;
-
- case 'packagetype':
- $this->pkg->setPackageType($opt->getValue());
- break;
-
- case 'phpdep':
- $this->pkg->setPhpDep($opt->getValue());
- break;
-
- case 'pearinstallerdep':
- $this->pkg->setPearinstallerDep($opt->getValue());
- break;
-
- default:
- $newopts[] = $opt;
- break;
- }
- }
- $this->options = $newopts;
-
- $newmaps = array();
- foreach ($this->mappings as $map) {
- switch ($map->getName()) {
- case 'deps':
- $deps = $map->getValue();
- foreach ($deps as $dep) {
- $type = isset($dep['optional']) ? 'optional' : 'required';
- $min = isset($dep['min']) ? $dep['min'] : $dep['version'];
- $max = isset($dep['max']) ? $dep['max'] : null;
- $rec = isset($dep['recommended']) ? $dep['recommended'] : null;
- $channel = isset($dep['channel']) ? $dep['channel'] : false;
- $uri = isset($dep['uri']) ? $dep['uri'] : false;
-
- if (!empty($channel)) {
- $this->pkg->addPackageDepWithChannel(
- $type, $dep['name'], $channel, $min, $max, $rec
- );
- } elseif (!empty($uri)) {
- $this->pkg->addPackageDepWithUri(
- $type, $dep['name'], $uri
- );
- }
- };
- break;
-
- case 'extdeps':
- $deps = $map->getValue();
- foreach ($deps as $dep) {
- $type = isset($dep['optional']) ? 'optional' : 'required';
- $min = isset($dep['min']) ? $dep['min'] : $dep['version'];
- $max = isset($dep['max']) ? $dep['max'] : $dep['version'];
- $rec = isset($dep['recommended']) ? $dep['recommended'] : $dep['version'];
-
- $this->pkg->addExtensionDep(
- $type, $dep['name'], $min, $max, $rec
- );
- };
- break;
-
- case 'maintainers':
- $maintainers = $map->getValue();
-
- foreach ($maintainers as $maintainer) {
- if (!isset($maintainer['active'])) {
- $maintainer['active'] = 'yes';
- } else {
- $maintainer['active'] = $maintainer['active'] === false ? 'no' : 'yes';
- }
- $this->pkg->addMaintainer(
- $maintainer['role'],
- $maintainer['handle'],
- $maintainer['name'],
- $maintainer['email'],
- $maintainer['active']
- );
- }
- break;
-
- case 'replacements':
- $replacements = $map->getValue();
-
- foreach($replacements as $replacement) {
- $this->pkg->addReplacement(
- $replacement['path'],
- $replacement['type'],
- $replacement['from'],
- $replacement['to']
- );
- }
- break;
-
- case 'role':
- foreach ($map->getValue() as $role) {
- $this->pkg->addRole($role['extension'], $role['role']);
- }
- break;
-
- default:
- $newmaps[] = $map;
- }
- }
- $this->mappings = $newmaps;
- }
-
- /**
- * Main entry point.
- * @return void
- */
- public function main()
- {
- if ($this->dir === null) {
- throw new BuildException("You must specify the \"dir\" attribute for PEAR package 2 task.");
- }
-
- if ($this->package === null) {
- throw new BuildException("You must specify the \"name\" attribute for PEAR package 2 task.");
- }
-
- $this->pkg = new PEAR_PackageFileManager2();
-
- $this->setVersion2Options();
- $this->setOptions();
-
- $this->pkg->addRelease();
- $this->pkg->generateContents();
- $e = $this->pkg->writePackageFile();
- if (PEAR::isError($e)) {
- throw new BuildException("Unable to write package file.", new Exception($e->getMessage()));
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php b/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php
deleted file mode 100644
index 47945998..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/PearPackageTask.php
+++ /dev/null
@@ -1,504 +0,0 @@
-<?php
-/*
- * $Id: 2078fd5bab3dd6dcea0345a12fce86a24586c765 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/MatchingTask.php';
-include_once 'phing/types/FileSet.php';
-
-/**
- * A task to create PEAR package.xml file.
- *
- * This class uses the PEAR_PackageFileMaintainer class to perform the work.
- *
- * This class is designed to be very flexible -- i.e. account for changes to the package.xml w/o
- * requiring changes to this class. We've accomplished this by having generic <option> and <mapping>
- * nested elements. All options are set using PEAR_PackageFileMaintainer::setOptions().
- *
- * The <option> tag is used to set a simple option value.
- * <code>
- * <option name="option_name" value="option_value"/>
- * or <option name="option_name">option_value</option>
- * </code>
- *
- * The <mapping> tag represents a complex data type. You can use nested <element> (and nested <element> with
- * <element> tags) to represent the full complexity of the structure. Bear in mind that what you are creating
- * will be mapped to an associative array that will be passed in via PEAR_PackageFileMaintainer::setOptions().
- * <code>
- * <mapping name="option_name">
- * <element key="key_name" value="key_val"/>
- * <element key="key_name" value="key_val"/>
- * </mapping>
- * </code>
- *
- * Here's an over-simple example of how this could be used:
- * <code>
- * <pearpkg name="phing" dir="${build.src.dir}" destFile="${build.base.dir}/package.xml">
- * <fileset>
- * <include name="**"/>
- * </fileset>
- * <option name="notes">Sample release notes here.</option>
- * <option name="description">Package description</option>
- * <option name="summary">Short description</option>
- * <option name="version" value="2.0.0b1"/>
- * <option name="state" value="beta"/>
- * <mapping name="maintainers">
- * <element>
- * <element key="handle" value="hlellelid"/>
- * <element key="name" value="Hans"/>
- * <element key="email" value="hans@xmpl.org"/>
- * <element key="role" value="lead"/>
- * </element>
- * </mapping>
- * </pearpkg>
- * </code>
- *
- * Look at the build.xml in the Phing base directory (assuming you have the full distro / CVS version of Phing) to
- * see a more complete example of how to call this script.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.tasks.ext
- * @version $Id: 2078fd5bab3dd6dcea0345a12fce86a24586c765 $
- */
-class PearPackageTask extends MatchingTask {
-
- /** */
- protected $package;
-
- /** Base directory for reading files. */
- protected $dir;
-
- /** Package file */
- private $packageFile;
-
- /** @var array FileSet[] */
- private $filesets = array();
-
- /** @var PEAR_PackageFileManager */
- protected $pkg;
-
- private $preparedOptions = array();
-
- /** @var array PearPkgOption[] */
- protected $options = array();
-
- /** Nested <mapping> (complex options) types. */
- protected $mappings = array();
-
- /**
- * Nested <role> elements
- * @var PearPkgRole[]
- */
- protected $roles = array();
-
- public function init() {
- include_once 'PEAR/PackageFileManager.php';
- if (!class_exists('PEAR_PackageFileManager')) {
- throw new BuildException("You must have installed PEAR_PackageFileManager in order to create a PEAR package.xml file.");
- }
- }
-
- /**
- * Sets PEAR package.xml options, based on class properties.
- * @return void
- */
- protected function setOptions() {
-
- // 1) first prepare/populate options
- $this->populateOptions();
-
- // 2) make any final adjustments (this could move into populateOptions() also)
-
- // default PEAR basedir would be the name of the package (e.g."phing")
- if (!isset($this->preparedOptions['baseinstalldir'])) {
- $this->preparedOptions['baseinstalldir'] = $this->package;
- }
-
- // unless filelistgenerator has been overridden, we use Phing FileSet generator
- if (!isset($this->preparedOptions['filelistgenerator'])) {
- if (empty($this->filesets)) {
- throw new BuildException("You must use a <fileset> tag to specify the files to include in the package.xml");
- }
- $this->preparedOptions['filelistgenerator'] = 'Fileset';
- $this->preparedOptions['usergeneratordir'] = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'pearpackage';
- // Some PHING-specific options needed by our Fileset reader
- $this->preparedOptions['phing_project'] = $this->project;
- $this->preparedOptions['phing_filesets'] = $this->filesets;
- } elseif ($this->preparedOptions['filelistgeneragor'] != 'Fileset' && !empty($this->filesets)) {
- throw new BuildException("You cannot use <fileset> element if you have specified the \"filelistgenerator\" option.");
- }
-
- // 3) Set the options
-
- // No need for excessive validation here, since the PEAR class will do its own
- // validation & return errors
- $e = $this->pkg->setOptions($this->preparedOptions);
-
- if (PEAR::isError($e)) {
- throw new BuildException("Unable to set options.", new Exception($e->getMessage()));
- }
-
- // convert roles
- foreach ($this->roles as $role) {
- $this->pkg->addRole($role->getExtension(), $role->getRole());
- }
- }
-
- /**
- * Fixes the boolean in optional dependencies
- */
- private function fixDeps($deps)
- {
- foreach (array_keys($deps) as $dep)
- {
- if (isset($deps[$dep]['optional']) && $deps[$dep]['optional'])
- {
- $deps[$dep]['optional'] = "yes";
- }
- }
-
- return $deps;
- }
-
- /**
- * Adds the options that are set via attributes and the nested tags to the options array.
- */
- private function populateOptions() {
-
- // These values could be overridden if explicitly defined using nested tags
- $this->preparedOptions['package'] = $this->package;
- $this->preparedOptions['packagedirectory'] = $this->dir->getAbsolutePath();
-
- if ($this->packageFile !== null) {
- // create one w/ full path
- $f = new PhingFile($this->packageFile->getAbsolutePath());
- $this->preparedOptions['packagefile'] = $f->getName();
- // must end in trailing slash
- $this->preparedOptions['outputdirectory'] = $f->getParent() . DIRECTORY_SEPARATOR;
- $this->log("Creating package file: " . $f->__toString(), Project::MSG_INFO);
- } else {
- $this->log("Creating [default] package.xml file in base directory.", Project::MSG_INFO);
- }
-
- // converts option objects and mapping objects into
- // key => value options that can be passed to PEAR_PackageFileManager
-
- foreach($this->options as $opt) {
- $this->preparedOptions[ $opt->getName() ] = $opt->getValue(); //no arrays yet. preg_split('/\s*,\s*/', $opt->getValue());
- }
-
- foreach($this->mappings as $map) {
- $value = $map->getValue(); // getValue returns complex value
-
- if ($map->getName() == 'deps')
- {
- $value = $this->fixDeps($value);
- }
-
- $this->preparedOptions[ $map->getName() ] = $value;
- }
- }
-
- /**
- * Main entry point.
- * @return void
- */
- public function main() {
-
- if ($this->dir === null) {
- throw new BuildException("You must specify the \"dir\" attribute for PEAR package task.");
- }
-
- if ($this->package === null) {
- throw new BuildException("You must specify the \"name\" attribute for PEAR package task.");
- }
-
- $this->pkg = new PEAR_PackageFileManager();
-
- $this->setOptions();
-
- $e = $this->pkg->writePackageFile();
- if (PEAR::isError($e)) {
- throw new BuildException("Unable to write package file.", new Exception($e->getMessage()));
- }
-
- }
-
- /**
- * Used by the PEAR_PackageFileManager_PhingFileSet lister.
- * @return array FileSet[]
- */
- public function getFileSets() {
- return $this->filesets;
- }
-
- // -------------------------------
- // Set properties from XML
- // -------------------------------
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @param FileSet $fileset Set of files to add to the package
- *
- * @return void
- */
- public function addFileSet(FileSet $fs) {
- $this->filesets[] = $fs;
- }
-
- /**
- * Set "package" property from XML.
- * @see setName()
- * @param string $v
- * @return void
- */
- public function setPackage($v) {
- $this->package = $v;
- }
-
- /**
- * Sets "dir" property from XML.
- * @param PhingFile $f
- * @return void
- */
- public function setDir(PhingFile $f) {
- $this->dir = $f;
- }
-
- /**
- * Sets "name" property from XML.
- * @param string $v
- * @return void
- */
- public function setName($v) {
- $this->package = $v;
- }
-
- /**
- * Sets the file to use for generated package.xml
- */
- public function setDestFile(PhingFile $f) {
- $this->packageFile = $f;
- }
-
- /**
- * Handles nested generic <option> elements.
- */
- public function createOption() {
- $o = new PearPkgOption();
- $this->options[] = $o;
- return $o;
- }
-
- /**
- * Handles nested generic <option> elements.
- */
- public function createMapping() {
- $o = new PearPkgMapping();
- $this->mappings[] = $o;
- return $o;
- }
-
- /**
- * Handles nested <role> elements
- * @return PearPkgRole
- */
- public function createRole()
- {
- $role = new PearPkgRole();
- $this->roles[] = $role;
- return $role;
- }
-}
-
-
-
-/**
- * Generic option class is used for non-complex options.
- *
- * @package phing.tasks.ext
- */
-class PearPkgOption {
-
- private $name;
- private $value;
-
- public function setName($v) { $this->name = $v; }
- public function getName() { return $this->name; }
-
- public function setValue($v) { $this->value = $v; }
- public function getValue() { return $this->value; }
- public function addText($txt) { $this->value = trim($txt); }
-
-}
-
-/**
- * Handles complex options <mapping> elements which are hashes (assoc arrays).
- *
- * @package phing.tasks.ext
- */
-class PearPkgMapping {
-
- private $name;
- private $elements = array();
-
- public function setName($v) {
- $this->name = $v;
- }
-
- public function getName() {
- return $this->name;
- }
-
- public function createElement() {
- $e = new PearPkgMappingElement();
- $this->elements[] = $e;
- return $e;
- }
-
- public function getElements() {
- return $this->elements;
- }
-
- /**
- * Returns the PHP hash or array of hashes (etc.) that this mapping represents.
- * @return array
- */
- public function getValue() {
- $value = array();
- foreach($this->getElements() as $el) {
- if ($el->getKey() !== null) {
- $value[ $el->getKey() ] = $el->getValue();
- } else {
- $value[] = $el->getValue();
- }
- }
- return $value;
- }
-}
-
-/**
- * Sub-element of <mapping>.
- *
- * @package phing.tasks.ext
- */
-class PearPkgMappingElement {
-
- private $key;
- private $value;
- private $elements = array();
-
- public function setKey($v) {
- $this->key = $v;
- }
-
- public function getKey() {
- return $this->key;
- }
-
- public function setValue($v) {
- $this->value = $v;
- }
-
- /**
- * Returns either the simple value or
- * the calculated value (array) of nested elements.
- * @return mixed
- */
- public function getValue() {
- if (!empty($this->elements)) {
- $value = array();
- foreach($this->elements as $el) {
- if ($el->getKey() !== null) {
- $value[ $el->getKey() ] = $el->getValue();
- } else {
- $value[] = $el->getValue();
- }
- }
- return $value;
- } else {
- return $this->value;
- }
- }
-
- /**
- * Handles nested <element> tags.
- */
- public function createElement() {
- $e = new PearPkgMappingElement();
- $this->elements[] = $e;
- return $e;
- }
-
-}
-
-/**
- * Encapsulates file roles
- *
- * @package phing.tasks.ext
- */
-class PearPkgRole
-{
- /**
- * @var string
- */
- private $extension;
-
- /**
- * @var string
- */
- private $role;
-
- /**
- * Sets the file extension
- * @param string $extension
- */
- public function setExtension($extension)
- {
- $this->extension = $extension;
- }
-
- /**
- * Retrieves the file extension
- * @return string
- */
- public function getExtension()
- {
- return $this->extension;
- }
-
- /**
- * Sets the role
- * @param string $role
- */
- public function setRole($role)
- {
- $this->role = $role;
- }
-
- /**
- * Retrieves the role
- * @return string
- */
- public function getRole()
- {
- return $this->role;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/PhpCodeSnifferTask.php b/buildscripts/phing/classes/phing/tasks/ext/PhpCodeSnifferTask.php
deleted file mode 100644
index de40ae36..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/PhpCodeSnifferTask.php
+++ /dev/null
@@ -1,648 +0,0 @@
-<?php
-/*
- * $Id: 8c8f9369e06a3467e34fc8d89f6355df048ece90 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * A PHP code sniffer task. Checking the style of one or more PHP source files.
- *
- * @author Dirk Thomas <dirk.thomas@4wdmedia.de>
- * @version $Id: 8c8f9369e06a3467e34fc8d89f6355df048ece90 $
- * @package phing.tasks.ext
- */
-class PhpCodeSnifferTask extends Task {
-
- protected $file; // the source file (from xml attribute)
- protected $filesets = array(); // all fileset objects assigned to this task
-
- // parameters for php code sniffer
- protected $standard = 'Generic';
- protected $sniffs = array();
- protected $showWarnings = true;
- protected $showSources = false;
- protected $reportWidth = 80;
- protected $verbosity = 0;
- protected $tabWidth = 0;
- protected $allowedFileExtensions = array('php');
- protected $ignorePatterns = false;
- protected $noSubdirectories = false;
- protected $configData = array();
- protected $encoding = 'iso-8859-1';
-
- // parameters to customize output
- protected $showSniffs = false;
- protected $format = 'default';
- protected $formatters = array();
-
- /**
- * Holds the type of the doc generator
- *
- * @var string
- */
- protected $docGenerator = '';
-
- /**
- * Holds the outfile for the documentation
- *
- * @var PhingFile
- */
- protected $docFile = null;
-
- private $haltonerror = false;
- private $haltonwarning = false;
- private $skipversioncheck = false;
-
- /**
- * Load the necessary environment for running PHP_CodeSniffer.
- *
- * @return void
- */
- public function init()
- {
- }
-
- /**
- * File to be performed syntax check on
- * @param PhingFile $file
- */
- public function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Sets the coding standard to test for
- *
- * @param string $standard The coding standard
- *
- * @return void
- */
- public function setStandard($standard)
- {
- $this->standard = $standard;
- }
-
- /**
- * Sets the sniffs which the standard should be restricted to
- * @param string $sniffs
- */
- public function setSniffs($sniffs)
- {
- $token = ' ,;';
- $sniff = strtok($sniffs, $token);
- while ($sniff !== false) {
- $this->sniffs[] = $sniff;
- $sniff = strtok($token);
- }
- }
-
- /**
- * Sets the type of the doc generator
- *
- * @param string $generator HTML or Text
- *
- * @return void
- */
- public function setDocGenerator($generator)
- {
- $this->docGenerator = $generator;
- }
-
- /**
- * Sets the outfile for the documentation
- *
- * @param PhingFile $file The outfile for the doc
- *
- * @return void
- */
- public function setDocFile(PhingFile $file)
- {
- $this->docFile = $file;
- }
-
- /**
- * Sets the flag if warnings should be shown
- * @param boolean $show
- */
- public function setShowWarnings($show)
- {
- $this->showWarnings = StringHelper::booleanValue($show);
- }
-
- /**
- * Sets the flag if sources should be shown
- *
- * @param boolean $show Whether to show sources or not
- *
- * @return void
- */
- public function setShowSources($show)
- {
- $this->showSources = StringHelper::booleanValue($show);
- }
-
- /**
- * Sets the width of the report
- *
- * @param int $width How wide the screen reports should be.
- *
- * @return void
- */
- public function setReportWidth($width)
- {
- $this->reportWidth = (int) $width;
- }
-
- /**
- * Sets the verbosity level
- * @param int $level
- */
- public function setVerbosity($level)
- {
- $this->verbosity = (int)$level;
- }
-
- /**
- * Sets the tab width to replace tabs with spaces
- * @param int $width
- */
- public function setTabWidth($width)
- {
- $this->tabWidth = (int)$width;
- }
-
- /**
- * Sets file encoding
- * @param string $encoding
- */
- public function setEncoding($encoding)
- {
- $this->encoding = $encoding;
- }
-
- /**
- * Sets the allowed file extensions when using directories instead of specific files
- * @param array $extensions
- */
- public function setAllowedFileExtensions($extensions)
- {
- $this->allowedFileExtensions = array();
- $token = ' ,;';
- $ext = strtok($extensions, $token);
- while ($ext !== false) {
- $this->allowedFileExtensions[] = $ext;
- $ext = strtok($token);
- }
- }
-
- /**
- * Sets the ignore patterns to skip files when using directories instead of specific files
- * @param array $extensions
- */
- public function setIgnorePatterns($patterns)
- {
- $this->ignorePatterns = array();
- $token = ' ,;';
- $pattern = strtok($patterns, $token);
- while ($pattern !== false) {
- $this->ignorePatterns[] = $pattern;
- $pattern = strtok($token);
- }
- }
-
- /**
- * Sets the flag if subdirectories should be skipped
- * @param boolean $subdirectories
- */
- public function setNoSubdirectories($subdirectories)
- {
- $this->noSubdirectories = StringHelper::booleanValue($subdirectories);
- }
-
- /**
- * Creates a config parameter for this task
- *
- * @return Parameter The created parameter
- */
- public function createConfig() {
- $num = array_push($this->configData, new Parameter());
- return $this->configData[$num-1];
- }
-
- /**
- * Sets the flag if the used sniffs should be listed
- * @param boolean $show
- */
- public function setShowSniffs($show)
- {
- $this->showSniffs = StringHelper::booleanValue($show);
- }
-
- /**
- * Sets the output format
- * @param string $format
- */
- public function setFormat($format)
- {
- $this->format = $format;
- }
-
- /**
- * Create object for nested formatter element.
- * @return CodeSniffer_FormatterElement
- */
- public function createFormatter () {
- $num = array_push($this->formatters,
- new PhpCodeSnifferTask_FormatterElement());
- return $this->formatters[$num-1];
- }
-
- /**
- * Sets the haltonerror flag
- * @param boolean $value
- */
- public function setHaltonerror($value)
- {
- $this->haltonerror = $value;
- }
-
- /**
- * Sets the haltonwarning flag
- * @param boolean $value
- */
- public function setHaltonwarning($value)
- {
- $this->haltonwarning = $value;
- }
-
- /**
- * Sets the skipversioncheck flag
- * @param boolean $value
- */
- public function setSkipVersionCheck($value)
- {
- $this->skipversioncheck = $value;
- }
-
- /**
- * Executes PHP code sniffer against PhingFile or a FileSet
- */
- public function main() {
- if (!class_exists('PHP_CodeSniffer')) {
- @include_once 'PHP/CodeSniffer.php';
-
- if (!class_exists('PHP_CodeSniffer')) {
- throw new BuildException("This task requires the PHP_CodeSniffer package installed and available on the include path", $this->getLocation());
- }
- }
-
- /**
- * Determine PHP_CodeSniffer version number
- */
- if (!$this->skipversioncheck) {
- preg_match('/\d\.\d\.\d/', shell_exec('phpcs --version'), $version);
-
- if (version_compare($version[0], '1.2.2') < 0) {
- throw new BuildException(
- 'PhpCodeSnifferTask requires PHP_CodeSniffer version >= 1.2.2',
- $this->getLocation()
- );
- }
- }
-
- if(!isset($this->file) and count($this->filesets) == 0) {
- throw new BuildException("Missing either a nested fileset or attribute 'file' set");
- }
-
- if (PHP_CodeSniffer::isInstalledStandard($this->standard) === false) {
- // They didn't select a valid coding standard, so help them
- // out by letting them know which standards are installed.
- $installedStandards = PHP_CodeSniffer::getInstalledStandards();
- $numStandards = count($installedStandards);
- $errMsg = '';
-
- if ($numStandards === 0) {
- $errMsg = 'No coding standards are installed.';
- } else {
- $lastStandard = array_pop($installedStandards);
-
- if ($numStandards === 1) {
- $errMsg = 'The only coding standard installed is ' . $lastStandard;
- } else {
- $standardList = implode(', ', $installedStandards);
- $standardList .= ' and ' . $lastStandard;
- $errMsg = 'The installed coding standards are ' . $standardList;
- }
- }
-
- throw new BuildException(
- 'ERROR: the "' . $this->standard . '" coding standard is not installed. ' . $errMsg,
- $this->getLocation()
- );
- }
-
- if (count($this->formatters) == 0) {
- // turn legacy format attribute into formatter
- $fmt = new PhpCodeSnifferTask_FormatterElement();
- $fmt->setType($this->format);
- $fmt->setUseFile(false);
- $this->formatters[] = $fmt;
- }
-
- if (!isset($this->file))
- {
- $fileList = array();
- $project = $this->getProject();
- foreach ($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $files = $ds->getIncludedFiles();
- $dir = $fs->getDir($this->project)->getAbsolutePath();
- foreach ($files as $file) {
- $fileList[] = $dir.DIRECTORY_SEPARATOR.$file;
- }
- }
- }
-
- $cwd = getcwd();
- // Save command line arguments because it confuses PHPCS (version 1.3.0)
- $oldArgs = $_SERVER['argv'];
- $_SERVER['argv'] = array();
- $_SERVER['argc'] = 0;
- $codeSniffer = new PHP_CodeSniffer($this->verbosity, $this->tabWidth, $this->encoding);
- $codeSniffer->setAllowedFileExtensions($this->allowedFileExtensions);
- if (is_array($this->ignorePatterns)) $codeSniffer->setIgnorePatterns($this->ignorePatterns);
- foreach ($this->configData as $configData) {
- $codeSniffer->setConfigData($configData->getName(), $configData->getValue(), true);
- }
-
- if ($this->file instanceof PhingFile) {
- $codeSniffer->process($this->file->getPath(), $this->standard, $this->sniffs, $this->noSubdirectories);
-
- } else {
- $codeSniffer->process($fileList, $this->standard, $this->sniffs, $this->noSubdirectories);
- }
- // Restore command line arguments
- $_SERVER['argv'] = $oldArgs;
- $_SERVER['argc'] = count($oldArgs);
- chdir($cwd);
-
- $report = $this->printErrorReport($codeSniffer);
-
- // generate the documentation
- if ($this->docGenerator !== '' && $this->docFile !== null) {
- ob_start();
-
- $codeSniffer->generateDocs($this->standard, $this->sniffs, $this->docGenerator);
-
- $output = ob_get_contents();
- ob_end_clean();
-
- // write to file
- $outputFile = $this->docFile->getPath();
- $check = file_put_contents($outputFile, $output);
-
- if (is_bool($check) && !$check) {
- throw new BuildException('Error writing doc to ' . $outputFile);
- }
- } elseif ($this->docGenerator !== '' && $this->docFile === null) {
- $codeSniffer->generateDocs($this->standard, $this->sniffs, $this->docGenerator);
- }
-
- if ($this->haltonerror && $report['totals']['errors'] > 0)
- {
- throw new BuildException('phpcodesniffer detected ' . $report['totals']['errors']. ' error' . ($report['totals']['errors'] > 1 ? 's' : ''));
- }
-
- if ($this->haltonwarning && $report['totals']['warnings'] > 0)
- {
- throw new BuildException('phpcodesniffer detected ' . $report['totals']['warnings'] . ' warning' . ($report['totals']['warnings'] > 1 ? 's' : ''));
- }
- }
-
- /**
- * Prints the error report.
- *
- * @param PHP_CodeSniffer $phpcs The PHP_CodeSniffer object containing
- * the errors.
- *
- * @return int The number of error and warning messages shown.
- */
- protected function printErrorReport($phpcs)
- {
- if ($this->showSniffs) {
- $sniffs = $phpcs->getSniffs();
- $sniffStr = '';
- foreach ($sniffs as $sniff) {
- $sniffStr .= '- ' . $sniff.PHP_EOL;
- }
- $this->log('The list of used sniffs (#' . count($sniffs) . '): ' . PHP_EOL . $sniffStr, Project::MSG_INFO);
- }
-
- $filesViolations = $phpcs->getFilesErrors();
- $reporting = new PHP_CodeSniffer_Reporting();
- $report = $reporting->prepare($filesViolations, $this->showWarnings);
-
- // process output
- foreach ($this->formatters as $fe) {
- switch ($fe->getType()) {
- case 'default':
- // default format goes to logs, no buffering
- $this->outputCustomFormat($report);
- $fe->setUseFile(false);
- break;
-
- default:
- $reportFile = null;
-
- if ($fe->getUseFile()) {
- $reportFile = $fe->getOutfile();
- ob_start();
- }
-
- // Determine number of parameters required to
- // ensure backwards compatibility
- $rm = new ReflectionMethod('PHP_CodeSniffer_Reporting', 'printReport');
-
- if ($rm->getNumberOfParameters() == 5) {
- $reporting->printReport(
- $fe->getType(),
- $filesViolations,
- $this->showSources,
- $reportFile,
- $this->reportWidth
- );
- } else {
- $reporting->printReport(
- $fe->getType(),
- $filesViolations,
- $this->showWarnings,
- $this->showSources,
- $reportFile,
- $this->reportWidth
- );
- }
-
- // reporting class uses ob_end_flush(), but we don't want
- // an output if we use a file
- if ($fe->getUseFile()) {
- ob_end_clean();
- }
- break;
- }
- }
-
- return $report;
- }
-
- /**
- * Outputs the results with a custom format
- *
- * @param array $report Packaged list of all errors in each file
- */
- protected function outputCustomFormat($report) {
- $files = $report['files'];
- foreach ($files as $file => $attributes) {
- $errors = $attributes['errors'];
- $warnings = $attributes['warnings'];
- $messages = $attributes['messages'];
- if ($errors > 0) {
- $this->log($file . ': ' . $errors . ' error' . ($errors > 1 ? 's' : '') . ' detected', Project::MSG_ERR);
- $this->outputCustomFormatMessages($messages, 'ERROR');
- } else {
- $this->log($file . ': No syntax errors detected', Project::MSG_VERBOSE);
- }
- if ($warnings > 0) {
- $this->log($file . ': ' . $warnings . ' warning' . ($warnings > 1 ? 's' : '') . ' detected', Project::MSG_WARN);
- $this->outputCustomFormatMessages($messages, 'WARNING');
- }
- }
-
- $totalErrors = $report['totals']['errors'];
- $totalWarnings = $report['totals']['warnings'];
- $this->log(count($files) . ' files where checked', Project::MSG_INFO);
- if ($totalErrors > 0) {
- $this->log($totalErrors . ' error' . ($totalErrors > 1 ? 's' : '') . ' detected', Project::MSG_ERR);
- } else {
- $this->log('No syntax errors detected', Project::MSG_INFO);
- }
- if ($totalWarnings > 0) {
- $this->log($totalWarnings . ' warning' . ($totalWarnings > 1 ? 's' : '') . ' detected', Project::MSG_INFO);
- }
- }
-
- /**
- * Outputs the messages of a specific type for one file
- * @param array $messages
- * @param string $type
- */
- protected function outputCustomFormatMessages($messages, $type) {
- foreach ($messages as $line => $messagesPerLine) {
- foreach ($messagesPerLine as $column => $messagesPerColumn) {
- foreach ($messagesPerColumn as $message) {
- $msgType = $message['type'];
- if ($type == $msgType) {
- $logLevel = Project::MSG_INFO;
- if ($msgType == 'ERROR') {
- $logLevel = Project::MSG_ERR;
- } else if ($msgType == 'WARNING') {
- $logLevel = Project::MSG_WARN;
- }
- $text = $message['message'];
- $string = $msgType . ' in line ' . $line . ' column ' . $column . ': ' . $text;
- $this->log($string, $logLevel);
- }
- }
- }
- }
- }
-
-} //end phpCodeSnifferTask
-
-/**
- * @package phing.tasks.ext
- */
-class PhpCodeSnifferTask_FormatterElement extends DataType {
-
- /**
- * Type of output to generate
- * @var string
- */
- protected $type = "";
-
- /**
- * Output to file?
- * @var bool
- */
- protected $useFile = true;
-
- /**
- * Output file.
- * @var string
- */
- protected $outfile = "";
-
- /**
- * Validate config.
- */
- public function parsingComplete () {
- if(empty($this->type)) {
- throw new BuildException("Format missing required 'type' attribute.");
- }
- if ($useFile && empty($this->outfile)) {
- throw new BuildException("Format requires 'outfile' attribute when 'useFile' is true.");
- }
-
- }
-
- public function setType ($type) {
- $this->type = $type;
- }
-
- public function getType () {
- return $this->type;
- }
-
- public function setUseFile ($useFile) {
- $this->useFile = $useFile;
- }
-
- public function getUseFile () {
- return $this->useFile;
- }
-
- public function setOutfile ($outfile) {
- $this->outfile = $outfile;
- }
-
- public function getOutfile () {
- return $this->outfile;
- }
-
-} //end FormatterElement
diff --git a/buildscripts/phing/classes/phing/tasks/ext/PhpLintTask.php b/buildscripts/phing/classes/phing/tasks/ext/PhpLintTask.php
deleted file mode 100644
index 63ec1812..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/PhpLintTask.php
+++ /dev/null
@@ -1,278 +0,0 @@
-<?php
-/*
- * $Id: 524bae55e1007bc9778c232dd7b437964a66c5a4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/util/DataStore.php';
-require_once 'phing/system/io/FileWriter.php';
-
-/**
- * A PHP lint task. Checking syntax of one or more PHP source file.
- *
- * @author Knut Urdalen <knut.urdalen@telio.no>
- * @author Stefan Priebsch <stefan.priebsch@e-novative.de>
- * @version $Id: 524bae55e1007bc9778c232dd7b437964a66c5a4 $
- * @package phing.tasks.ext
- */
-class PhpLintTask extends Task {
-
- protected $file; // the source file (from xml attribute)
- protected $filesets = array(); // all fileset objects assigned to this task
-
- protected $errorProperty;
- protected $haltOnFailure = false;
- protected $hasErrors = false;
- protected $badFiles = array();
- protected $interpreter = ''; // php interpreter to use for linting
-
- protected $logLevel = Project::MSG_VERBOSE;
-
- protected $cache = null;
-
- protected $tofile = null;
-
- protected $deprecatedAsError = false;
-
- /**
- * Initialize the interpreter with the Phing property
- */
- public function __construct() {
- $this->setInterpreter(Phing::getProperty('php.interpreter'));
- }
-
- /**
- * Override default php interpreter
- * @todo Do some sort of checking if the path is correct but would
- * require traversing the systems executeable path too
- * @param string $sPhp
- */
- public function setInterpreter($sPhp) {
- $this->Interpreter = $sPhp;
- }
-
- /**
- * The haltonfailure property
- * @param boolean $aValue
- */
- public function setHaltOnFailure($aValue) {
- $this->haltOnFailure = $aValue;
- }
-
- /**
- * File to be performed syntax check on
- * @param PhingFile $file
- */
- public function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * Set an property name in which to put any errors.
- * @param string $propname
- */
- public function setErrorproperty($propname)
- {
- $this->errorProperty = $propname;
- }
-
- /**
- * Whether to store last-modified times in cache
- *
- * @param PhingFile $file
- */
- public function setCacheFile(PhingFile $file)
- {
- $this->cache = new DataStore($file);
- }
-
- /**
- * File to save error messages to
- *
- * @param PhingFile $file
- */
- public function setToFile(PhingFile $tofile)
- {
- $this->tofile = $tofile;
- }
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Set level of log messages generated (default = info)
- * @param string $level
- */
- public function setLevel($level)
- {
- switch ($level)
- {
- case "error": $this->logLevel = Project::MSG_ERR; break;
- case "warning": $this->logLevel = Project::MSG_WARN; break;
- case "info": $this->logLevel = Project::MSG_INFO; break;
- case "verbose": $this->logLevel = Project::MSG_VERBOSE; break;
- case "debug": $this->logLevel = Project::MSG_DEBUG; break;
- }
- }
-
- /**
- * Sets whether to treat deprecated warnings (introduced in PHP 5.3) as errors
- * @param boolean $deprecatedAsError
- */
- public function setDeprecatedAsError($deprecatedAsError)
- {
- $this->deprecatedAsError = $deprecatedAsError;
- }
-
- /**
- * Execute lint check against PhingFile or a FileSet
- */
- public function main() {
- if(!isset($this->file) and count($this->filesets) == 0) {
- throw new BuildException("Missing either a nested fileset or attribute 'file' set");
- }
-
- if($this->file instanceof PhingFile) {
- $this->lint($this->file->getPath());
- } else { // process filesets
- $project = $this->getProject();
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $files = $ds->getIncludedFiles();
- $dir = $fs->getDir($this->project)->getPath();
- foreach($files as $file) {
- $this->lint($dir.DIRECTORY_SEPARATOR.$file);
- }
- }
- }
-
- // write list of 'bad files' to file (if specified)
- if ($this->tofile) {
- $writer = new FileWriter($this->tofile);
-
- foreach ($this->badFiles as $file => $messages) {
- foreach ($messages as $msg) {
- $writer->write($file . "=" . $msg . PHP_EOL);
- }
- }
-
- $writer->close();
- }
-
- $message = '';
- foreach ($this->badFiles as $file => $messages) {
- foreach ($messages as $msg) {
- $message .= $file . "=" . $msg . PHP_EOL;
- }
- }
-
- // save list of 'bad files' with errors to property errorproperty (if specified)
- if ($this->errorProperty) {
- $this->project->setProperty($this->errorProperty, $message);
- }
-
- if (!empty($this->cache)) {
- $this->cache->commit();
- }
-
- if ($this->haltOnFailure && $this->hasErrors) {
- throw new BuildException('Syntax error(s) in PHP files: ' . $message);
- }
- }
-
- /**
- * Performs the actual syntax check
- *
- * @param string $file
- * @return void
- */
- protected function lint($file) {
- $command = $this->Interpreter == ''
- ? 'php'
- : $this->Interpreter;
- $command .= ' -n -l ';
-
- if ($this->deprecatedAsError) {
- $command .= '-d error_reporting=32767 ';
- }
-
- if(file_exists($file)) {
- if(is_readable($file)) {
- if ($this->cache)
- {
- $lastmtime = $this->cache->get($file);
-
- if ($lastmtime >= filemtime($file))
- {
- $this->log("Not linting '" . $file . "' due to cache", Project::MSG_DEBUG);
- return false;
- }
- }
-
- $messages = array();
- $errorCount = 0;
-
- exec($command.'"'.$file.'" 2>&1', $messages);
-
- for ($i = 0; $i < count($messages) - 1; $i++) {
- $message = $messages[$i];
- if (trim($message) == '') {
- continue;
- }
-
- if ((!preg_match('/^(.*)Deprecated:/', $message) || $this->deprecatedAsError) && !preg_match('/^No syntax errors detected/', $message)) {
- $this->log($message, Project::MSG_ERR);
-
- if (!isset($this->badFiles[$file])) {
- $this->badFiles[$file] = array();
- }
-
- array_push($this->badFiles[$file], $message);
-
- $this->hasErrors = true;
- $errorCount++;
- }
- }
-
- if (!$errorCount) {
- $this->log($file.': No syntax errors detected', $this->logLevel);
-
- if ($this->cache)
- {
- $this->cache->put($file, filemtime($file));
- }
- }
- } else {
- throw new BuildException('Permission denied: '.$file);
- }
- } else {
- throw new BuildException('File not found: '.$file);
- }
- }
-}
-
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ReplaceRegexpTask.php b/buildscripts/phing/classes/phing/tasks/ext/ReplaceRegexpTask.php
deleted file mode 100644
index dc4ccbf7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ReplaceRegexpTask.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
-/*
- * $Id: f81043cad2c0ffe0a2571a0a8dc16a98651eac51 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * ReplaceRegExp is a directory based task for replacing the occurrence of a given regular expression with a substitution
- * pattern in a selected file or set of files.
- *
- * <code>
- * <replaceregexp file="${src}/build.properties"
- * match="OldProperty=(.*)"
- * replace="NewProperty=\1"
- * byline="true"/>
- * </code>
- *
- * @author Jonathan Bond-Caron <jbondc@openmv.com>
- * @version $Id: f81043cad2c0ffe0a2571a0a8dc16a98651eac51 $
- * @package phing.tasks.system
- * @link http://ant.apache.org/manual/OptionalTasks/replaceregexp.html
- */
-class ReplaceRegexpTask extends Task {
-
- /** Single file to process. */
- private $file;
-
- /** Any filesets that should be processed. */
- private $filesets = array();
-
- /**
- * Regular expression
- *
- * @var RegularExpression
- */
- private $_regexp;
-
- /**
- * File to apply regexp on
- *
- * @param string $path
- */
- public function setFile(PhingFile $path)
- {
- $this->file = $path;
- }
-
- /**
- * Sets the regexp match pattern
- *
- * @param string $regexp
- */
- public function setMatch( $regexp )
- {
- $this->_regexp->setPattern( $regexp );
- }
-
- /**
- * @see setMatch()
- */
- public function setPattern( $regexp )
- {
- $this->setMatch( $regexp );
- }
-
- /**
- * Sets the replacement string
- *
- * @param string $string
- */
- public function setReplace( $string )
- {
- $this->_regexp->setReplace( $string );
- }
-
- /**
- * Sets the regexp flags
- *
- * @param string $flags
- */
- public function setFlags( $flags )
- {
- // TODO... $this->_regexp->setFlags( $flags );
- }
-
- /**
- * Match only per line
- *
- * @param bool $yesNo
- */
- public function setByline( $yesNo )
- {
- // TODO... $this->_regexp->
- }
-
- /** Nested creator, adds a set of files (nested fileset attribute). */
- public function createFileSet()
- {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- public function init()
- {
- $this->_regexp = new RegularExpression;
- }
-
- public function main()
- {
- if ($this->file === null && empty($this->filesets)) {
- throw new BuildException("You must specify a file or fileset(s) for the <ReplaceRegexp> task.");
- }
-
- // compile a list of all files to modify, both file attrib and fileset elements
- // can be used.
- $files = array();
-
- if ($this->file !== null) {
- $files[] = $this->file;
- }
-
- if (!empty($this->filesets)) {
- $filenames = array();
- foreach($this->filesets as $fs) {
- try {
- $ds = $fs->getDirectoryScanner($this->project);
- $filenames = $ds->getIncludedFiles(); // get included filenames
- $dir = $fs->getDir($this->project);
- foreach ($filenames as $fname) {
- $files[] = new PhingFile($dir, $fname);
- }
- } catch (BuildException $be) {
- $this->log($be->getMessage(), Project::MSG_WARN);
- }
- }
- }
-
- $this->log("Applying Regexp processing to " . count($files) . " files.");
-
- // These "slots" allow filters to retrieve information about the currently-being-process files
- $slot = $this->getRegisterSlot("currentFile");
- $basenameSlot = $this->getRegisterSlot("currentFile.basename");
-
- $filter = new FilterChain($this->project);
-
- $r = new ReplaceRegexp;
- $r->setRegexps(array($this->_regexp));
-
- $filter->addReplaceRegexp($r);
- $filters = array($filter);
-
- foreach($files as $file) {
- // set the register slots
-
- $slot->setValue($file->getPath());
- $basenameSlot->setValue($file->getName());
-
- // 1) read contents of file, pulling through any filters
- $in = null;
- try {
- $contents = "";
- $in = FileUtils::getChainedReader(new FileReader($file), $filters, $this->project);
- while(-1 !== ($buffer = $in->read())) {
- $contents .= $buffer;
- }
- $in->close();
- } catch (Exception $e) {
- if ($in) $in->close();
- $this->log("Error reading file: " . $e->getMessage(), Project::MSG_WARN);
- }
-
- try {
- // now create a FileWriter w/ the same file, and write to the file
- $out = new FileWriter($file);
- $out->write($contents);
- $out->close();
- $this->log("Applying regexp processing to " . $file->getPath(), Project::MSG_VERBOSE);
- } catch (Exception $e) {
- if ($out) $out->close();
- $this->log("Error writing file back: " . $e->getMessage(), Project::MSG_WARN);
- }
-
- }
-
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ScpTask.php b/buildscripts/phing/classes/phing/tasks/ext/ScpTask.php
deleted file mode 100644
index f6ceadd1..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ScpTask.php
+++ /dev/null
@@ -1,380 +0,0 @@
-<?php
-/*
- * $Id: 300efdab5b721c6312491450bc2ba93ffc8124b4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Copy files to and from a remote host using scp.
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Johan Van den Brande <johan@vandenbrande.com>
- * @version $Id: 300efdab5b721c6312491450bc2ba93ffc8124b4 $
- * @package phing.tasks.ext
- */
-
-class ScpTask extends Task
-{
- protected $file = "";
- protected $filesets = array(); // all fileset objects assigned to this task
- protected $todir = "";
- protected $mode = null;
-
- protected $host = "";
- protected $port = 22;
- protected $username = "";
- protected $password = "";
- protected $autocreate = true;
- protected $fetch = false;
- protected $localEndpoint = "";
- protected $remoteEndpoint = "";
-
- protected $pubkeyfile = '';
- protected $privkeyfile = '';
- protected $privkeyfilepassphrase = '';
-
- protected $connection = null;
- protected $sftp = null;
-
- protected $count = 0;
-
- protected $logLevel = Project::MSG_VERBOSE;
-
- /**
- * Sets the remote host
- */
- public function setHost($h)
- {
- $this->host = $h;
- }
-
- /**
- * Returns the remote host
- */
- public function getHost()
- {
- return $this->host;
- }
-
- /**
- * Sets the remote host port
- */
- public function setPort($p)
- {
- $this->port = $p;
- }
-
- /**
- * Returns the remote host port
- */
- public function getPort()
- {
- return $this->port;
- }
-
- /**
- * Sets the mode value
- */
- public function setMode($value)
- {
- $this->mode = $value;
- }
-
- /**
- * Returns the mode value
- */
- public function getMode()
- {
- return $this->mode;
- }
-
- /**
- * Sets the username of the user to scp
- */
- public function setUsername($username)
- {
- $this->username = $username;
- }
-
- /**
- * Returns the username
- */
- public function getUsername()
- {
- return $this->username;
- }
-
- /**
- * Sets the password of the user to scp
- */
- public function setPassword($password)
- {
- $this->password = $password;
- }
-
- /**
- * Returns the password
- */
- public function getPassword()
- {
- return $this->password;
- }
-
- /**
- * Sets the public key file of the user to scp
- */
- public function setPubkeyfile($pubkeyfile)
- {
- $this->pubkeyfile = $pubkeyfile;
- }
-
- /**
- * Returns the pubkeyfile
- */
- public function getPubkeyfile()
- {
- return $this->pubkeyfile;
- }
-
- /**
- * Sets the private key file of the user to scp
- */
- public function setPrivkeyfile($privkeyfile)
- {
- $this->privkeyfile = $privkeyfile;
- }
-
- /**
- * Returns the private keyfile
- */
- public function getPrivkeyfile()
- {
- return $this->privkeyfile;
- }
-
- /**
- * Sets the private key file passphrase of the user to scp
- */
- public function setPrivkeyfilepassphrase($privkeyfilepassphrase)
- {
- $this->privkeyfilepassphrase = $privkeyfilepassphrase;
- }
-
- /**
- * Returns the private keyfile passphrase
- */
- public function getPrivkeyfilepassphrase($privkeyfilepassphrase)
- {
- return $this->privkeyfilepassphrase;
- }
-
- /**
- * Sets whether to autocreate remote directories
- */
- public function setAutocreate($autocreate)
- {
- $this->autocreate = (bool) $autocreate;
- }
-
- /**
- * Returns whether to autocreate remote directories
- */
- public function getAutocreate()
- {
- return $this->autocreate;
- }
-
- /**
- * Set destination directory
- */
- public function setTodir($todir)
- {
- $this->todir = $todir;
- }
-
- /**
- * Returns the destination directory
- */
- public function getTodir()
- {
- return $this->todir;
- }
-
- /**
- * Sets local filename
- */
- public function setFile($file)
- {
- $this->file = $file;
- }
-
- /**
- * Returns local filename
- */
- public function getFile()
- {
- return $this->file;
- }
-
- /**
- * Sets whether to send (default) or fetch files
- */
- public function setFetch($fetch)
- {
- $this->fetch = (bool) $fetch;
- }
-
- /**
- * Returns whether to send (default) or fetch files
- */
- public function getFetch()
- {
- return $this->fetch;
- }
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Set level of log messages generated (default = verbose)
- * @param string $level
- */
- public function setLevel($level)
- {
- switch ($level)
- {
- case "error": $this->logLevel = Project::MSG_ERR; break;
- case "warning": $this->logLevel = Project::MSG_WARN; break;
- case "info": $this->logLevel = Project::MSG_INFO; break;
- case "verbose": $this->logLevel = Project::MSG_VERBOSE; break;
- case "debug": $this->logLevel = Project::MSG_DEBUG; break;
- }
- }
-
- public function init()
- {
- }
-
- public function main()
- {
- if (!function_exists('ssh2_connect')) {
- throw new BuildException("To use ScpTask, you need to install the PHP SSH2 extension.");
- }
-
- if ($this->file == "" && empty($this->filesets)) {
- throw new BuildException("Missing either a nested fileset or attribute 'file'");
- }
-
- if ($this->host == "" || $this->username == "") {
- throw new BuildException("Attribute 'host' and 'username' must be set");
- }
-
- $this->connection = ssh2_connect($this->host, $this->port);
- if (is_null($this->connection)) {
- throw new BuildException("Could not establish connection to " . $this->host . ":" . $this->port . "!");
- }
-
- $could_auth = null;
- if ( $this->pubkeyfile ) {
- $could_auth = ssh2_auth_pubkey_file($this->connection, $this->username, $this->pubkeyfile, $this->privkeyfile, $this->privkeyfilepassphrase);
- } else {
- $could_auth = ssh2_auth_password($this->connection, $this->username, $this->password);
- }
- if (!$could_auth) {
- throw new BuildException("Could not authenticate connection!");
- }
-
- // prepare sftp resource
- if ($this->autocreate) {
- $this->sftp = ssh2_sftp($this->connection);
- }
-
- if ($this->file != "") {
- $this->copyFile($this->file, basename($this->file));
- } else {
- if ($this->fetch) {
- throw new BuildException("Unable to use filesets to retrieve files from remote server");
- }
-
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($this->project);
- $files = $ds->getIncludedFiles();
- $dir = $fs->getDir($this->project)->getPath();
- foreach($files as $file) {
- $path = $dir.DIRECTORY_SEPARATOR.$file;
-
- // Translate any Windows paths
- $this->copyFile($path, strtr($file, '\\', '/'));
- }
- }
- }
-
- $this->log("Copied " . $this->counter . " file(s) " . ($this->fetch ? "from" : "to") . " '" . $this->host . "'");
-
- // explicitly close ssh connection
- @ssh2_exec($this->connection, 'exit');
- }
-
- protected function copyFile($local, $remote)
- {
- $path = rtrim($this->todir, "/") . "/";
-
- if ($this->fetch) {
- $localEndpoint = $path . $remote;
- $remoteEndpoint = $local;
-
- $this->log('Will fetch ' . $remoteEndpoint . ' to ' . $localEndpoint, $this->logLevel);
-
- $ret = @ssh2_scp_recv($this->connection, $remoteEndpoint, $localEndpoint);
-
- if ($ret === false) {
- throw new BuildException("Could not fetch remote file '" . $remoteEndpoint . "'");
- }
- } else {
- $localEndpoint = $local;
- $remoteEndpoint = $path . $remote;
-
- if ($this->autocreate) {
- ssh2_sftp_mkdir($this->sftp, dirname($remoteEndpoint), (is_null($this->mode) ? 0777 : $this->mode), true);
- }
-
- $this->log('Will copy ' . $localEndpoint . ' to ' . $remoteEndpoint, $this->logLevel);
-
- if (!is_null($this->mode)) {
- $ret = @ssh2_scp_send($this->connection, $localEndpoint, $remoteEndpoint, $this->mode);
- } else {
- $ret = @ssh2_scp_send($this->connection, $localEndpoint, $remoteEndpoint);
- }
-
- if ($ret === false) {
- throw new BuildException("Could not create remote file '" . $remoteEndpoint . "'");
- }
- }
-
- $this->counter++;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon.php b/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon.php
deleted file mode 100644
index 6e8fa8e0..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * $Id: 81e9d8cbc94bac15a6a32ed0bb23c04d2b0ff439 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once "phing/Task.php";
-
-/**
- * Abstract Service_Amazon class.
- *
- * Implements common methods & properties used by all Amazon services
- *
- * @extends Task
- * @version $ID$
- * @package phing.tasks.ext
- * @author Andrei Serdeliuc <andrei@serdeliuc.ro>
- * @abstract
- */
-abstract class Service_Amazon extends Task
-{
- /**
- * Collection of set options
- *
- * We set these magically so we can also load then from the environment
- *
- * (default value: array())
- *
- * @var array
- * @access protected
- */
- protected $_options = array();
-
- public function __set($var, $val)
- {
- $this->_options[$var] = $val;
- }
-
- /**
- * Property getter
- *
- * If the property hasn't been previously set (through the task call normally),
- * it will try to load it from the project
- *
- * This way, we can define global properties for the "Amazon" service, like key and secret
- *
- * @access public
- * @param mixed $var
- * @return void
- */
- public function __get($var)
- {
- if(!isset($this->$var)) {
- if(!($val = $this->getProject()->getProperty('amazon.' . strtolower($var)))) {
- return false;
- } else {
- return $val;
- }
- }
-
- return $this->_options[$var];
- }
-
- public function __isset($var)
- {
- return array_key_exists($var, $this->_options);
- }
-
- public function setKey($key)
- {
- if(empty($key) || !is_string($key)) {
- throw new BuildException('Key must be a non empty string');
- }
-
- $this->key = $key;
- }
-
- public function getKey()
- {
- if(!($key = $this->key)) {
- throw new BuildException('Key is not set');
- }
-
- return $key;
- }
-
- public function setSecret($secret)
- {
- if(empty($secret) || !is_string($secret)) {
- throw new BuildException('Secret must be a non empty string');
- }
-
- $this->secret = $secret;
- }
-
- public function getSecret()
- {
- if(!($secret = $this->secret)) {
- throw new BuildException('Secret is not set');
- }
-
- return $this->secret;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3.php b/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3.php
deleted file mode 100644
index 7bed642e..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-
-/*
- * $Id: a205dcffd1f42b70a8101808242d66620e3dabbd $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once dirname(dirname(__FILE__)) . "/Amazon.php";
-
-/**
- * Abstract Service_Amazon_S3 class.
- *
- * Provides common methods and properties to all of the S3 tasks
- *
- * @extends Service_Amazon
- * @version $ID$
- * @package phing.tasks.ext
- * @author Andrei Serdeliuc <andrei@serdeliuc.ro>
- * @abstract
- */
-abstract class Service_Amazon_S3 extends Service_Amazon
-{
- /**
- * Services_Amazon_S3 client
- *
- * (default value: null)
- *
- * @var Services_Amazon_S3
- * @see Services_Amazon_S3
- * @access protected
- */
- protected $_client = null;
-
- /**
- * We only instantiate the client once per task call
- *
- * @access public
- * @return Services_Amazon_S3
- */
- public function getClient()
- {
- require_once "Services/Amazon/S3.php";
-
- if($this->_client === null) {
- $this->_client = Services_Amazon_S3::getAccount($this->getKey(), $this->getSecret());
- }
-
- return $this->_client;
- }
-
- public function setBucket($bucket)
- {
- if(empty($bucket) || !is_string($bucket)) {
- throw new BuildException('Bucket must be a non-empty string');
- }
-
- $this->bucket = (string) $bucket;
- }
-
- public function getBucket()
- {
- if(!($bucket = $this->bucket)) {
- throw new BuildException('Bucket is not set');
- }
-
- return $this->bucket;
- }
-
- /**
- * Returns an instance of Services_Amazon_S3_Resource_Object
- *
- * @access public
- * @param mixed $object
- * @return Services_Amazon_S3_Resource_Object
- */
- public function getObjectInstance($object)
- {
- return $this->getBucketInstance()->getObject($object);
- }
-
- /**
- * Check if the object already exists in the current bucket
- *
- * @access public
- * @param mixed $object
- * @return bool
- */
- public function isObjectAvailable($object)
- {
- return (bool) $this->getObjectInstance($object)->load(Services_Amazon_S3_Resource_Object::LOAD_METADATA_ONLY);
- }
-
- /**
- * Returns an instance of Services_Amazon_S3_Resource_Bucket
- *
- * @access public
- * @return Services_Amazon_S3_Resource_Bucket
- */
- public function getBucketInstance()
- {
- return $this->getClient()->getBucket($this->getBucket());
- }
-
- /**
- * Check if the current bucket is available
- *
- * @access public
- * @return bool
- */
- public function isBucketAvailable()
- {
- return (bool) $this->getBucketInstance($this->getBucket())->load();
- }
-
- /**
- * Get the contents of an object (by it's name)
- *
- * @access public
- * @param string $object
- * @return mixed
- */
- public function getObjectContents($object)
- {
- if(!$this->isBucketAvailable($this->getBucket())) {
- throw new BuildException('Bucket doesn\'t exist or wrong permissions');
- }
-
- $bucket = $this->getClient()->getBucket($this->getBucket());
- if(!$this->isObjectAvailable($object)) {
- throw new BuildException('Object not available: ' . $object);
- }
-
- $object = $this->getObjectInstance($object);
- $object->load();
- return $object->data;
- }
-
- /**
- * Create a bucket
- *
- * @access public
- * @return void
- */
- public function createBucket()
- {
- $bucket = $this->getBucketInstance();
- $bucket->name = $this->getBucket();
- $bucket->save();
-
- return $this->isBucketAvailable();
- }
-
- /**
- * Main entry point, doesn't do anything
- *
- * @access public
- * @final
- * @return void
- */
- final public function main()
- {
- $this->execute();
- }
-
- /**
- * Entry point to children tasks
- *
- * @access public
- * @abstract
- * @return void
- */
- abstract public function execute();
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3GetTask.php b/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3GetTask.php
deleted file mode 100644
index 37b4e817..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3GetTask.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/*
- * $Id: 214ed107be71d8dbc0f68ffc90bfd8b11a76b36d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once dirname(dirname(__FILE__)) . '/S3.php';
-
-/**
- * Downloads an object off S3
- *
- * @version $Id: 214ed107be71d8dbc0f68ffc90bfd8b11a76b36d $
- * @package phing.tasks.ext
- * @author Andrei Serdeliuc <andrei@serdeliuc.ro>
- * @extends Service_Amazon_S3
- */
-class S3GetTask extends Service_Amazon_S3
-{
- /**
- * This is where we'll store the object
- *
- * (default value: null)
- *
- * @var mixed
- * @access protected
- */
- protected $_target = null;
-
- /**
- * The S3 object we're working with
- *
- * (default value: null)
- *
- * @var mixed
- * @access protected
- */
- protected $_object = null;
-
- public function setObject($object)
- {
- if(empty($object) || !is_string($object)) {
- throw new BuildException('Object must be a non-empty string');
- }
-
- $this->_object = $object;
- }
-
- public function getObject()
- {
- if($this->_object === null) {
- throw new BuildException('Object is not set');
- }
-
- return $this->_object;
- }
-
- public function setTarget($target)
- {
- if(!is_file($target) && !is_dir($target) && !is_link($target)) {
- if(!is_writable(dirname($target))) {
- throw new BuildException('Target is not writable: ' . $target);
- }
- } else {
- if(!is_writable($target)) {
- throw new BuildException('Target is not writable: ' . $target);
- }
- }
-
- $this->_target = $target;
- }
-
- public function getTarget()
- {
- if($this->_target === null) {
- throw new BuildException('Target is not set');
- }
-
- return $this->_target;
- }
-
- public function execute()
- {
- $target = $this->getTarget();
-
- // Use the object name as the target if the current target is a directory
- if(is_dir($target)) {
- $target = rtrim($target, '/') . '/' . $this->getObject();
- }
-
- file_put_contents($target, $this->getObjectContents($this->getObject()));
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3PutTask.php b/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3PutTask.php
deleted file mode 100644
index dbb18b56..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/Service/Amazon/S3/S3PutTask.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?php
-/*
- * $Id: 84b1d6039427591cbf43dbe1a82691063ae4238a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once dirname(dirname(__FILE__)) . '/S3.php';
-
-/**
- * Stores an object on S3
- *
- * @version $Id: 84b1d6039427591cbf43dbe1a82691063ae4238a $
- * @package phing.tasks.ext
- * @author Andrei Serdeliuc <andrei@serdeliuc.ro>
- * @extends Service_Amazon_S3
- */
-class S3PutTask extends Service_Amazon_S3
-{
- /**
- * File we're trying to upload
- *
- * (default value: null)
- *
- * @var string
- * @access protected
- */
- protected $_source = null;
-
- /**
- * Content we're trying to upload
- *
- * The user can specify either a file to upload or just a bit of content
- *
- * (default value: null)
- *
- * @var mixed
- * @access protected
- */
- protected $_content = null;
-
- /**
- * Collection of filesets
- * Used for uploading multiple files
- *
- * (default value: array())
- *
- * @var array
- * @access protected
- */
- protected $_filesets = array();
-
- /**
- * Whether to try to create buckets or not
- *
- * (default value: false)
- *
- * @var bool
- * @access protected
- */
- protected $_createBuckets = false;
-
- public function setSource($source)
- {
- if(!is_readable($source)) {
- throw new BuildException('Source is not readable: ' . $source);
- }
-
- $this->_source = $source;
- }
-
- public function getSource()
- {
- if($this->_source === null) {
- throw new BuildException('Source is not set');
- }
-
- return $this->_source;
- }
-
- public function setContent($content)
- {
- if(empty($content) || !is_string($content)) {
- throw new BuildException('Content must be a non-empty string');
- }
-
- $this->_content = $content;
- }
-
- public function getContent()
- {
- if($this->_content === null) {
- throw new BuildException('Content is not set');
- }
-
- return $this->_content;
- }
-
- public function setObject($object)
- {
- if(empty($object) || !is_string($object)) {
- throw new BuildException('Object must be a non-empty string');
- }
-
- $this->_object = $object;
- }
-
- public function getObject()
- {
- if($this->_object === null) {
- throw new BuildException('Object is not set');
- }
-
- return $this->_object;
- }
-
- public function setCreateBuckets($createBuckets)
- {
- $this->_createBuckets = (bool) $createBuckets;
- }
-
- public function getCreateBuckets()
- {
- return (bool) $this->_createBuckets;
- }
-
- /**
- * creator for _filesets
- *
- * @access public
- * @return FileSet
- */
- public function createFileset()
- {
- $num = array_push($this->_filesets, new FileSet());
- return $this->_filesets[$num-1];
- }
-
- /**
- * getter for _filesets
- *
- * @access public
- * @return array
- */
- public function getFilesets()
- {
- return $this->_filesets;
- }
-
- /**
- * Determines what we're going to store in the object
- *
- * If _content has been set, this will get stored,
- * otherwise, we read from _source
- *
- * @access public
- * @return string
- */
- public function getObjectData()
- {
- try {
- $content = $this->getContent();
- } catch(BuildException $e) {
- $source = $this->getSource();
-
- if(!is_file($source)) {
- throw new BuildException('Currently only files can be used as source');
- }
-
- $content = file_get_contents($source);
- }
-
- return $content;
- }
-
- /**
- * Store the object on S3
- *
- * @access public
- * @return void
- */
- public function execute()
- {
- if(!$this->isBucketAvailable()) {
- if(!$this->getCreateBuckets()) {
- throw new BuildException('Bucket doesn\'t exist and createBuckets not specified');
- } else{
- if(!$this->createBucket()) {
- throw new BuildException('Bucket cannot be created');
- }
- }
- }
-
- // Filesets take precedence
- if(!empty($this->_filesets)) {
- $objects = array();
-
- foreach($this->_filesets as $fs) {
- if(!($fs instanceof FileSet)) {
- continue;
- }
-
- $ds = $fs->getDirectoryScanner($this->getProject());
- $objects = array_merge($objects, $ds->getIncludedFiles());
- }
-
- $fromDir = $fs->getDir($this->getProject())->getAbsolutePath();
-
- foreach($objects as $object) {
- $this->saveObject($object, file_get_contents($fromDir . DIRECTORY_SEPARATOR . $object));
- }
-
- return true;
- }
-
- $this->saveObject($this->getObject(), $this->getObjectData());
- }
-
- protected function saveObject($object, $data)
- {
- $object = $this->getObjectInstance($object);
- $object->data = $data;
- $object->save();
-
- if(!$this->isObjectAvailable($object->key)) {
- throw new BuildException('Upload failed');
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/SmartyTask.php b/buildscripts/phing/classes/phing/tasks/ext/SmartyTask.php
deleted file mode 100644
index 69c7b8f8..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/SmartyTask.php
+++ /dev/null
@@ -1,610 +0,0 @@
-<?php
-
-/*
- * $Id: 1fe8b2aa2668db628554e59b3099520c0e1c03e4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/BuildException.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * A phing task for generating output by using Smarty.
- *
- * This is based on the TexenTask from Apache's Velocity engine. This class
- * was originally proted in order to provide a template compiling system for
- * Torque.
- *
- * TODO:
- * - Add Path / useClasspath support?
- *
- * @author Hans Lellelid <hans@xmpl.org> (SmartyTask)
- * @author Jason van Zyl <jvanzyl@apache.org> (TexenTask)
- * @author Robert Burrell Donkin <robertdonkin@mac.com>
- * @version $Id: 1fe8b2aa2668db628554e59b3099520c0e1c03e4 $
- * @package phing.tasks.ext
- */
-class SmartyTask extends Task {
-
- /**
- * Smarty template engine.
- * @var Smarty
- */
- protected $context;
-
- /**
- * Variables that are assigned to the context on parse/compile.
- * @var array
- */
- protected $properties = array();
-
- /**
- * This is the control template that governs the output.
- * It may or may not invoke the services of worker
- * templates.
- * @var string
- */
- protected $controlTemplate;
-
- /**
- * This is where Velocity will look for templates
- * using the file template loader.
- * @var string
- */
- protected $templatePath;
-
- /**
- * This is where texen will place all the output
- * that is a product of the generation process.
- * @var string
- */
- protected $outputDirectory;
-
- /**
- * This is the file where the generated text
- * will be placed.
- * @var string
- */
- protected $outputFile;
-
- /**
- * <p>
- * These are properties that are fed into the
- * initial context from a properties file. This
- * is simply a convenient way to set some values
- * that you wish to make available in the context.
- * </p>
- * <p>
- * These values are not critical, like the template path
- * or output path, but allow a convenient way to
- * set a value that may be specific to a particular
- * generation task.
- * </p>
- * <p>
- * For example, if you are generating scripts to allow
- * user to automatically create a database, then
- * you might want the <code>$databaseName</code>
- * to be placed
- * in the initial context so that it is available
- * in a script that might look something like the
- * following:
- * <code><pre>
- * #!bin/sh
- *
- * echo y | mysqladmin create $databaseName
- * </pre></code>
- * The value of <code>$databaseName</code> isn't critical to
- * output, and you obviously don't want to change
- * the ant task to simply take a database name.
- * So initial context values can be set with
- * properties file.
- *
- * @var array
- */
- protected $contextProperties;
-
- /**
- * Smarty compiles templates before parsing / replacing tokens in them.
- * By default it will try ./templates_c, but you may wish to override this.
- * @var string
- */
- protected $compilePath;
-
- /**
- * Whether to force Smarty to recompile templates.
- * Smarty does check file modification time, but you can set this
- * to be *sure* that the template will be compiled (of course it will
- * be slower if you do).
- * @var boolean
- */
- protected $forceCompile = false;
-
- /**
- * Smarty can use config files.
- * This tells Smarty where to look for the config files.
- * @var string
- */
- protected $configPath;
-
- /**
- * Customize the left delimiter for Smarty tags.
- * @var string
- */
- protected $leftDelimiter;
-
- /**
- * Customize the right delimiter for Smarty tags.
- * @var string
- */
- protected $rightDelimiter;
-
- // -----------------------------------------------------------------------
- // The following getters & setters are used by phing to set properties
- // specified in the XML for the smarty task.
- // -----------------------------------------------------------------------
-
- public function init() {
- include_once 'Smarty.class.php';
- if (!class_exists('Smarty')) {
- throw new BuildException("To use SmartyTask, you must have the path to Smarty.class.php on your include_path or your \$PHP_CLASSPATH environment variable.");
- }
- }
-
- /**
- * [REQUIRED] Set the control template for the
- * generating process.
- * @param string $controlTemplate
- * @return void
- */
- public function setControlTemplate ($controlTemplate) {
- $this->controlTemplate = $controlTemplate;
- }
-
- /**
- * Get the control template for the
- * generating process.
- * @return string
- */
- public function getControlTemplate() {
- return $this->controlTemplate;
- }
-
- /**
- * [REQUIRED] Set the path where Velocity will look
- * for templates using the file template
- * loader.
- * @return void
- * @throws Exception
- */
- public function setTemplatePath($templatePath) {
- $resolvedPath = "";
- $tok = strtok($templatePath, ",");
- while ( $tok ) {
- // resolve relative path from basedir and leave
- // absolute path untouched.
- $fullPath = $this->project->resolveFile($tok);
- $cpath = $fullPath->getCanonicalPath();
- if ($cpath === false) {
- $this->log("Template directory does not exist: " . $fullPath->getAbsolutePath());
- } else {
- $resolvedPath .= $cpath;
- }
- $tok = strtok(",");
- if ( $tok ) {
- $resolvedPath .= ",";
- }
- }
- $this->templatePath = $resolvedPath;
- }
-
- /**
- * Get the path where Velocity will look
- * for templates using the file template
- * loader.
- * @return string
- */
- public function getTemplatePath() {
- return $this->templatePath;
- }
-
- /**
- * [REQUIRED] Set the output directory. It will be
- * created if it doesn't exist.
- * @param PhingFile $outputDirectory
- * @return void
- * @throws Exception
- */
- public function setOutputDirectory(PhingFile $outputDirectory) {
- try {
- if (!$outputDirectory->exists()) {
- $this->log("Output directory does not exist, creating: " . $outputDirectory->getPath(),Project::MSG_VERBOSE);
- if (!$outputDirectory->mkdirs()) {
- throw new IOException("Unable to create Ouptut directory: " . $outputDirectory->getAbsolutePath());
- }
- }
- $this->outputDirectory = $outputDirectory->getCanonicalPath();
- } catch (IOException $ioe) {
- throw new BuildException($ioe->getMessage());
- }
- }
-
- /**
- * Get the output directory.
- * @return string
- */
- public function getOutputDirectory() {
- return $this->outputDirectory;
- }
-
- /**
- * [REQUIRED] Set the output file for the
- * generation process.
- * @return void
- */
- public function setOutputFile($outputFile) {
- $this->outputFile = $outputFile;
- }
-
- /**
- * Get the output file for the
- * generation process.
- * @return string
- */
- public function getOutputFile() {
- return $this->outputFile;
- }
-
- /**
- * Set the path Smarty uses as a "cache" for compiled templates.
- * @param string $compilePath
- */
- public function setCompilePath($compilePath) {
- $this->compilePath = $compilePath;
- }
-
- /**
- * Get the path Smarty uses for compiling templates.
- * @return string
- */
- public function getCompilePath() {
- return $this->compilePath;
- }
-
- /**
- * Set whether Smarty should always recompile tempaltes.
- * @param boolean $force
- * @return void
- */
- public function setForceCompile($force) {
- $this->forceCompile = (boolean) $force;
- }
-
- /**
- * Get whether Smarty should always recompile template.
- * @return boolean
- */
- public function getForceCompile() {
- return $this->forceCompile;
- }
-
- /**
- * Set where Smarty looks for config files.
- * @param string $configPath
- * @return void
- */
- public function setConfigPath($configPath) {
- $this->configPath = $configPath;
- }
-
- /**
- * Get the path that Smarty uses for looking for config files.
- * @return string
- */
- public function getConfigPath() {
- return $this->configPath;
- }
-
- /**
- * Set Smarty template left delimiter.
- * @param string $delim
- * @return void
- */
- public function setLeftDelimiter($delim) {
- $this->leftDelimiter = $delim;
- }
-
- /**
- * Get Smarty template right delimiter
- * @return string
- */
- public function getLeftDelimiter() {
- return $this->leftDelimiter;
- }
-
- /**
- * Set Smarty template right delimiter.
- * @param string $delim
- * @return void
- */
- public function setRightDelimiter($delim) {
- $this->rightDelimiter = $delim;
- }
-
- /**
- * Get Smarty template right delimiter
- * @return string
- */
- public function getRightDelimiter() {
- return $this->rightDelimiter;
- }
-
-
- /**
- * Set the context properties that will be
- * fed into the initial context be the
- * generating process starts.
- * @param string $file
- * @return void
- */
- public function setContextProperties($file) {
-
- $sources = explode(",", $file);
- $this->contextProperties = new Properties();
-
- // Always try to get the context properties resource
- // from a file first. Templates may be taken from a JAR
- // file but the context properties resource may be a
- // resource in the filesystem. If this fails than attempt
- // to get the context properties resource from the
- // classpath.
- for ($i=0, $sourcesLength=count($sources); $i < $sourcesLength; $i++) {
- $source = new Properties();
-
- try {
-
- // resolve relative path from basedir and leave
- // absolute path untouched.
- $fullPath = $this->project->resolveFile($sources[$i]);
- $this->log("Using contextProperties file: " . $fullPath->__toString());
- $source->load($fullPath);
-
- } catch (Exception $e) {
-
- throw new BuildException("Context properties file " . $sources[$i] .
- " could not be found in the file system!");
-
- }
-
- $keys = $source->keys();
-
- foreach ($keys as $key) {
- $name = $key;
- $value = $this->project->replaceProperties($source->getProperty($name));
- $this->contextProperties->setProperty($name, $value);
- }
- }
- }
-
- /**
- * Get the context properties that will be
- * fed into the initial context be the
- * generating process starts.
- * @return Properties
- */
- public function getContextProperties() {
- return $this->contextProperties;
- }
-
- // ---------------------------------------------------------------
- // End of XML setters & getters
- // ---------------------------------------------------------------
-
-
- /**
- * Creates a Smarty object.
- *
- * @return Smarty initialized (cleared) Smarty context.
- * @throws Exception the execute method will catch
- * and rethrow as a <code>BuildException</code>
- */
- public function initControlContext() {
- $this->context->clear_all_assign();
- return $this->context;
- }
-
- /**
- * Execute the input script with Velocity
- *
- * @throws BuildException
- * BuildExceptions are thrown when required attributes are missing.
- * Exceptions thrown by Velocity are rethrown as BuildExceptions.
- */
- public function main() {
-
- // Make sure the template path is set.
- if (empty($this->templatePath)) {
- throw new BuildException("The template path needs to be defined!");
- }
-
- // Make sure the control template is set.
- if ($this->controlTemplate === null) {
- throw new BuildException("The control template needs to be defined!");
- }
-
- // Make sure the output directory is set.
- if ($this->outputDirectory === null) {
- throw new BuildException("The output directory needs to be defined!");
- }
-
- // Make sure there is an output file.
- if ($this->outputFile === null) {
- throw new BuildException("The output file needs to be defined!");
- }
-
- // Setup Smarty runtime.
-
- // Smarty uses one object to store properties and to store
- // the context for the template (unlike Velocity). We setup this object, calling it
- // $this->context, and then initControlContext simply zeros out
- // any assigned variables.
- $this->context = new Smarty();
-
- if ($this->compilePath !== null) {
- $this->log("Using compilePath: " . $this->compilePath);
- $this->context->compile_dir = $this->compilePath;
- }
-
- if ($this->configPath !== null) {
- $this->log("Using configPath: " . $this->configPath);
- $this->context->config_dir = $this->configPath;
- }
-
- if ($this->forceCompile !== null) {
- $this->context->force_compile = $this->forceCompile;
- }
-
- if ($this->leftDelimiter !== null) {
- $this->context->left_delimiter = $this->leftDelimiter;
- }
-
- if ($this->rightDelimiter !== null) {
- $this->context->right_delimiter = $this->rightDelimiter;
- }
-
- if ($this->templatePath !== null) {
- $this->log("Using templatePath: " . $this->templatePath);
- $this->context->template_dir = $this->templatePath;
- }
-
- $smartyCompilePath = new PhingFile($this->context->compile_dir);
- if (!$smartyCompilePath->exists()) {
- $this->log("Compile directory does not exist, creating: " . $smartyCompilePath->getPath(), Project::MSG_VERBOSE);
- if (!$smartyCompilePath->mkdirs()) {
- throw new BuildException("Smarty needs a place to compile templates; specify a 'compilePath' or create ".$this->context->compile_dir);
- }
- }
-
- // Make sure the output directory exists, if it doesn't
- // then create it.
- $file = new PhingFile($this->outputDirectory);
- if (!$file->exists()) {
- $this->log("Output directory does not exist, creating: " . $file->getAbsolutePath());
- $file->mkdirs();
- }
-
- $path = $this->outputDirectory . DIRECTORY_SEPARATOR . $this->outputFile;
- $this->log("Generating to file " . $path);
-
- $writer = new FileWriter($path);
-
- // The generator and the output path should
- // be placed in the init context here and
- // not in the generator class itself.
- $c = $this->initControlContext();
-
- // Set any variables that need to always
- // be loaded
- $this->populateInitialContext($c);
-
- // Feed all the options into the initial
- // control context so they are available
- // in the control/worker templates.
- if ($this->contextProperties !== null) {
-
- foreach($this->contextProperties->keys() as $property) {
-
- $value = $this->contextProperties->getProperty($property);
-
- // Special exception (from Texen)
- // for properties ending in file.contents:
- // in that case we dump the contents of the file
- // as the "value" for the Property.
- if (StringHelper::endsWith("file.contents", $property)) {
- // pull in contents of file specified
-
- $property = substr($property, 0, strpos($property, "file.contents") - 1);
-
- // reset value, and then
- // read in teh contents of the file into that var
- $value = "";
- $f = new PhingFile($this->project->resolveFile($value)->getCanonicalPath());
- if ($f->exists()) {
- try {
- $fr = new FileReader($f);
- $fr->readInto($value);
- } catch (Exception $e) {
- throw $e;
- }
- }
-
- } // if ends with file.contents
-
- if (StringHelper::isBoolean($value)) {
- $value = StringHelper::booleanValue($value);
- }
-
- $c->assign($property, $value);
-
- } // foreach property
-
- } // if contextProperties !== null
-
- try {
- //$c->display($this->controlTemplate);
- $writer->write($c->fetch($this->controlTemplate));
- $writer->close();
- } catch (IOException $ioe) {
- $writer->close();
- throw new BuildException("Cannot write parsed template.");
- }
-
- $this->cleanup();
- }
-
- /**
- * <p>Place useful objects into the initial context.</p>
- *
- * <p>TexenTask places <code>Date().toString()</code> into the
- * context as <code>$now</code>. Subclasses who want to vary the
- * objects in the context should override this method.</p>
- *
- * <p><code>$generator</code> is not put into the context in this
- * method.</p>
- *
- * @param context The context to populate, as retrieved from
- * {@link #initControlContext()}.
- * @return void
- * @throws Exception Error while populating context. The {@link
- * #execute()} method will catch and rethrow as a
- * <code>BuildException</code>.
- */
- protected function populateInitialContext(Smarty $context) {
- }
-
- /**
- * A hook method called at the end of {@link #execute()} which can
- * be overridden to perform any necessary cleanup activities (such
- * as the release of database connections, etc.). By default,
- * does nothing.
- * @return void
- * @throws Exception Problem cleaning up.
- */
- protected function cleanup() {
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/SshTask.php b/buildscripts/phing/classes/phing/tasks/ext/SshTask.php
deleted file mode 100644
index 9c2349a8..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/SshTask.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-/*
- * $Id: e0fe77ed287d359bd7449d459769370e6192417f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Execute commands on a remote host using ssh.
- *
- * @author Johan Van den Brande <johan@vandenbrande.com>
- * @version $Id: e0fe77ed287d359bd7449d459769370e6192417f $
- * @package phing.tasks.ext
- */
-class SshTask extends Task {
-
- private $host = "";
- private $port = 22;
- private $username = "";
- private $password = "";
- private $command = "";
- private $pubkeyfile = '';
- private $privkeyfile = '';
- private $privkeyfilepassphrase = '';
-
- /**
- * The name of the property to capture (any) output of the command
- * @var string
- */
- private $property = "";
-
- /**
- * Whether to display the output of the command
- * @var boolean
- */
- private $display = true;
-
- public function setHost($host)
- {
- $this->host = $host;
- }
-
- public function getHost()
- {
- return $this->host;
- }
-
- public function setPort($port)
- {
- $this->port = $port;
- }
-
- public function getPort()
- {
- return $this->port;
- }
-
- public function setUsername($username)
- {
- $this->username = $username;
- }
-
- public function getUsername()
- {
- return $this->username;
- }
-
- public function setPassword($password)
- {
- $this->password = $password;
- }
-
- public function getPassword()
- {
- return $this->password;
- }
-
- /**
- * Sets the public key file of the user to scp
- */
- public function setPubkeyfile($pubkeyfile)
- {
- $this->pubkeyfile = $pubkeyfile;
- }
-
- /**
- * Returns the pubkeyfile
- */
- public function getPubkeyfile()
- {
- return $this->pubkeyfile;
- }
-
- /**
- * Sets the private key file of the user to scp
- */
- public function setPrivkeyfile($privkeyfile)
- {
- $this->privkeyfile = $privkeyfile;
- }
-
- /**
- * Returns the private keyfile
- */
- public function getPrivkeyfile()
- {
- return $this->privkeyfile;
- }
-
- /**
- * Sets the private key file passphrase of the user to scp
- */
- public function setPrivkeyfilepassphrase($privkeyfilepassphrase)
- {
- $this->privkeyfilepassphrase = $privkeyfilepassphrase;
- }
-
- /**
- * Returns the private keyfile passphrase
- */
- public function getPrivkeyfilepassphrase($privkeyfilepassphrase)
- {
- return $this->privkeyfilepassphrase;
- }
-
- public function setCommand($command)
- {
- $this->command = $command;
- }
-
- public function getCommand()
- {
- return $this->command;
- }
-
- /**
- * Sets the name of the property to capture (any) output of the command
- * @param string $property
- */
- public function setProperty($property)
- {
- $this->property = $property;
- }
-
- /**
- * Sets whether to display the output of the command
- * @param boolean $display
- */
- public function setDisplay($display)
- {
- $this->display = (boolean) $display;
- }
-
- public function init()
- {
- }
-
- public function main()
- {
- if (!function_exists('ssh2_connect')) {
- throw new BuildException("To use SshTask, you need to install the PHP SSH2 extension.");
- }
-
- $this->connection = ssh2_connect($this->host, $this->port);
- if (is_null($this->connection)) {
- throw new BuildException("Could not establish connection to " . $this->host . ":" . $this->port . "!");
- }
-
- $could_auth = null;
- if ( $this->pubkeyfile ) {
- $could_auth = ssh2_auth_pubkey_file($this->connection, $this->username, $this->pubkeyfile, $this->privkeyfile, $this->privkeyfilepassphrase);
- } else {
- $could_auth = ssh2_auth_password($this->connection, $this->username, $this->password);
- }
- if (!$could_auth) {
- throw new BuildException("Could not authenticate connection!");
- }
-
- $stream = ssh2_exec($this->connection, $this->command);
- if (!$stream) {
- throw new BuildException("Could not execute command!");
- }
-
- $this->log("Executing command {$this->command}", Project::MSG_VERBOSE);
-
- stream_set_blocking($stream, true);
- $result = stream_get_contents($stream);
-
- if (!strlen($result)) {
- $stderr_stream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
- stream_set_blocking($stderr_stream, true);
- $result = stream_get_contents($stderr_stream);
- }
-
- if ($this->display) {
- print($result);
- }
-
- if (!empty($this->property)) {
- $this->project->setProperty($this->property, $result);
- }
-
- fclose($stream);
- if (isset($stderr_stream)) {
- fclose($stderr_stream);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/Arg.php b/buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/Arg.php
deleted file mode 100644
index 564fdef4..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/Arg.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-require_once "phing/types/DataType.php";
-
-
-/**
- * Implementation of console argument
- *
- * @author nuno costa <nuno@francodacosta.com>
- * @license GPL
- */
-class Arg extends DataType
-{
- private $name = null;
- private $value = null;
- private $quotes = false;
-
- /**
- * Gets the argment name
- * @return String
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Sets the argument name
- * @param String $name
- */
- public function setName($name)
- {
- $this->name = $name;
- }
-
- /**
- * Gets the argument value
- * @return String
- */
- public function getValue()
- {
- return $this->value;
- }
-
- /**
- * Sets the argument value
- * @param String $value
- */
- public function setValue($value)
- {
- $this->value = $value;
- }
-
- /**
- * Should the argument value be enclosed in double quotes
- * @return boolean
- */
- public function getQuotes()
- {
- return $this->quotes;
- }
-
- /**
- * Should the argument value be enclosed in double quotes
- * @param boolean $quotes
- */
- public function setQuotes( $quotes)
- {
- $this->quotes = $quotes;
- }
-
- /**
- * Transforms the argument object into a string, takes into consideration
- * the quotes and the argument value
- * @return String
- */
- public function __toString()
- {
- $name = "";
- $value = "";
- $quote = $this->getQuotes() ? '"' : '';
-
- if (!is_null($this->getValue())) {
- $value = $quote . $this->getValue() . $quote ;
- }
-
- if (!is_null($this->getName())) {
- $name = '--' . $this->getName();
- }
-
- if (strlen($name) > 0 && strlen($value) > 0) {
- $value = '=' . $value;
- }
- return $name . ' ' . $value;
- }
-
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/SymfonyConsoleTask.php b/buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/SymfonyConsoleTask.php
deleted file mode 100644
index 64c1f02b..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/SymfonyConsole/SymfonyConsoleTask.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-require_once "phing/Task.php";
-require_once dirname(__FILE__) . "/Arg.php";
-/**
- * Symfony Console Task
- * @author nuno costa <nuno@francodacosta.com>
- * @license GPL
- *
- */
-class SymfonyConsoleTask extends Task
-{
-
- /**
- *
- * @var Array of Arg a collection of Arg objects
- */
- private $args = array();
-
- /**
- *
- * @var string the Symfony console command to execute
- */
- private $command = null;
-
- /**
- *
- * @var string path to symfony console application
- */
- private $console = 'app/console';
-
-
- /**
- * sets the symfony console command to execute
- * @param string $command
- */
- public function setCommand($command)
- {
- $this->command = $command;
- }
-
- /**
- * return the symfony console command to execute
- * @return String
- */
- public function getCommand()
- {
- return $this->command;
- }
-
- /**
- * sets the path to symfony console application
- * @param string $console
- */
- public function setConsole($console)
- {
- $this->console = $console;
- }
-
- /**
- * returns the path to symfony console application
- * @return string
- */
- public function getConsole()
- {
- return $this->console;
- }
-
- /**
- * appends an arg tag to the arguments stack
- *
- * @return Arg Argument object
- */
-
- public function createArg()
- {
- $num = array_push($this->args, new Arg());
- return $this->args[$num-1];
- }
-
- /**
- * return the argumments passed to this task
- * @return array of Arg()
- */
- public function getArgs()
- {
- return $this->args;
- }
-
-
- /**
- * Gets the command string to be executed
- * @return string
- */
- public function getCmdString() {
- $cmd = array(
- $this->console,
- $this->command,
- implode(' ', $this->args)
- );
- $cmd = implode(' ', $cmd);
- return $cmd;
- }
- /**
- * executes the synfony consile application
- */
- public function main()
- {
- $cmd = $this->getCmdString();
-
- $this->log("executing $cmd");
- passthru ($cmd);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/SymlinkTask.php b/buildscripts/phing/classes/phing/tasks/ext/SymlinkTask.php
deleted file mode 100644
index 57738398..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/SymlinkTask.php
+++ /dev/null
@@ -1,309 +0,0 @@
-<?php
-
-/*
- * $Id: 6efb50d5b7cb94f2f22db6e876010e718aa25b22 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once "phing/Task.php";
-
-/**
- * Generates symlinks based on a target / link combination.
- * Can also symlink contents of a directory, individually
- *
- * Single target symlink example:
- * <code>
- * <symlink target="/some/shared/file" link="${project.basedir}/htdocs/my_file" />
- * </code>
- *
- * Symlink entire contents of directory
- *
- * This will go through the contents of "/my/shared/library/*"
- * and create a symlink for each entry into ${project.basedir}/library/
- * <code>
- * <symlink link="${project.basedir}/library">
- * <fileset dir="/my/shared/library">
- * <include name="*" />
- * </fileset>
- * </symlink>
- * </code>
- *
- * @author Andrei Serdeliuc <andrei@serdeliuc.ro>
- * @extends Task
- * @version $ID$
- * @package phing.tasks.ext
- */
-class SymlinkTask extends Task
-{
- /**
- * What we're symlinking from
- *
- * (default value: null)
- *
- * @var string
- * @access private
- */
- private $_target = null;
-
- /**
- * Symlink location
- *
- * (default value: null)
- *
- * @var string
- * @access private
- */
- private $_link = null;
-
- /**
- * Collection of filesets
- * Used when linking contents of a directory
- *
- * (default value: array())
- *
- * @var array
- * @access private
- */
- private $_filesets = array();
-
- /**
- * Whether to override the symlink if it exists but points
- * to a different location
- *
- * (default value: false)
- *
- * @var boolean
- * @access private
- */
- private $_overwrite = false;
-
- /**
- * setter for _target
- *
- * @access public
- * @param string $target
- * @return void
- */
- public function setTarget($target)
- {
- $this->_target = $target;
- }
-
- /**
- * setter for _link
- *
- * @access public
- * @param string $link
- * @return void
- */
- public function setLink($link)
- {
- $this->_link = $link;
- }
-
- /**
- * creator for _filesets
- *
- * @access public
- * @return FileSet
- */
- public function createFileset()
- {
- $num = array_push($this->_filesets, new FileSet());
- return $this->_filesets[$num-1];
- }
-
- /**
- * setter for _overwrite
- *
- * @access public
- * @param boolean $overwrite
- * @return void
- */
- public function setOverwrite($overwrite)
- {
- $this->_overwrite = $overwrite;
- }
-
- /**
- * getter for _target
- *
- * @access public
- * @return string
- */
- public function getTarget()
- {
- if($this->_target === null) {
- throw new BuildException('Target not set');
- }
-
- return $this->_target;
- }
-
- /**
- * getter for _link
- *
- * @access public
- * @return string
- */
- public function getLink()
- {
- if($this->_link === null) {
- throw new BuildException('Link not set');
- }
-
- return $this->_link;
- }
-
- /**
- * getter for _filesets
- *
- * @access public
- * @return array
- */
- public function getFilesets()
- {
- return $this->_filesets;
- }
-
- /**
- * getter for _overwrite
- *
- * @access public
- * @return boolean
- */
- public function getOverwrite()
- {
- return $this->_overwrite;
- }
-
- /**
- * Generates an array of directories / files to be linked
- * If _filesets is empty, returns getTarget()
- *
- * @access protected
- * @return array|string
- */
- protected function getMap()
- {
- $fileSets = $this->getFilesets();
-
- // No filesets set
- // We're assuming single file / directory
- if(empty($fileSets)) {
- return $this->getTarget();
- }
-
- $targets = array();
-
- foreach($fileSets as $fs) {
- if(!($fs instanceof FileSet)) {
- continue;
- }
-
- // We need a directory to store the links
- if(!is_dir($this->getLink())) {
- throw new BuildException('Link must be an existing directory when using fileset');
- }
-
- $fromDir = $fs->getDir($this->getProject())->getAbsolutePath();
-
- if(!is_dir($fromDir)) {
- $this->log('Directory doesn\'t exist: ' . $fromDir, Project::MSG_WARN);
- continue;
- }
-
- $fsTargets = array();
-
- $ds = $fs->getDirectoryScanner($this->getProject());
-
- $fsTargets = array_merge(
- $fsTargets,
- $ds->getIncludedDirectories(),
- $ds->getIncludedFiles()
- );
-
- // Add each target to the map
- foreach($fsTargets as $target) {
- if(!empty($target)) {
- $targets[$target] = $fromDir . DIRECTORY_SEPARATOR . $target;
- }
- }
- }
-
- return $targets;
- }
-
- /**
- * Main entry point for task
- *
- * @access public
- * @return bool
- */
- public function main()
- {
- $map = $this->getMap();
-
- // Single file symlink
- if(is_string($map)) {
- return $this->symlink($map, $this->getLink());
- }
-
- // Multiple symlinks
- foreach($map as $name => $targetPath) {
- $this->symlink($targetPath, $this->getLink() . DIRECTORY_SEPARATOR . $name);
- }
-
- return true;
- }
-
- /**
- * Create the actual link
- *
- * @access protected
- * @param string $target
- * @param string $link
- * @return bool
- */
- protected function symlink($target, $link)
- {
- $fs = FileSystem::getFileSystem();
-
- if (is_link($link) && readlink($link) == $target) {
- $this->log('Link exists: ' . $link, Project::MSG_INFO);
- return true;
- } elseif (file_exists($link)) {
- if (!$this->getOverwrite()) {
- $this->log('Not overwriting existing link ' . $link, Project::MSG_ERR);
- return false;
- }
-
- if (is_link($link) || is_file($link)) {
- $fs->unlink($link);
- $this->log('Link removed: ' . $link, Project::MSG_INFO);
- } else {
- $fs->rmdir($link, true);
- $this->log('Directory removed: ' . $link, Project::MSG_INFO);
- }
- }
-
- $this->log('Linking: ' . $target . ' to ' . $link, Project::MSG_INFO);
-
- return $fs->symlink($target, $link);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/TarTask.php b/buildscripts/phing/classes/phing/tasks/ext/TarTask.php
deleted file mode 100644
index 95d915d7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/TarTask.php
+++ /dev/null
@@ -1,445 +0,0 @@
-<?php
-/*
- * $Id: c3ac5fcdf4d7cdb199d57b021e3f015c9c7fd3f8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/MatchingTask.php';
-include_once 'phing/util/SourceFileScanner.php';
-include_once 'phing/mappers/MergeMapper.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * Creates a tar archive using PEAR Archive_Tar.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Stefano Mazzocchi <stefano@apache.org> (Ant)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @author Magesh Umasankar
- * @version $Id: c3ac5fcdf4d7cdb199d57b021e3f015c9c7fd3f8 $
- * @package phing.tasks.ext
- */
-class TarTask extends MatchingTask {
-
- const TAR_NAMELEN = 100;
-
- const WARN = "warn";
- const FAIL = "fail";
- const OMIT = "omit";
-
- private $tarFile;
- private $baseDir;
- private $includeEmpty = true; // Whether to include empty dirs in the TAR
-
- private $longFileMode = "warn";
-
- private $filesets = array();
- private $fileSetFiles = array();
-
- /**
- * Indicates whether the user has been warned about long files already.
- */
- private $longWarningGiven = false;
-
- /**
- * Compression mode. Available options "gzip", "bzip2", "none" (null).
- */
- private $compression = null;
-
- /**
- * File path prefix in the tar archive
- *
- * @var string
- */
- private $prefix = null;
-
- /**
- * Ensures that PEAR lib exists.
- */
- public function init() {
- include_once 'Archive/Tar.php';
- if (!class_exists('Archive_Tar')) {
- throw new BuildException("You must have installed the PEAR Archive_Tar class in order to use TarTask.");
- }
- }
-
- /**
- * Add a new fileset
- * @return FileSet
- */
- public function createTarFileSet() {
- $this->fileset = new TarFileSet();
- $this->filesets[] = $this->fileset;
- return $this->fileset;
- }
-
- /**
- * Add a new fileset. Alias to createTarFileSet() for backwards compatibility.
- * @return FileSet
- * @see createTarFileSet()
- */
- public function createFileSet() {
- $this->fileset = new TarFileSet();
- $this->filesets[] = $this->fileset;
- return $this->fileset;
- }
-
- /**
- * Set is the name/location of where to create the tar file.
- * @param PhingFile $destFile The output of the tar
- */
- public function setDestFile(PhingFile $destFile) {
- $this->tarFile = $destFile;
- }
-
- /**
- * This is the base directory to look in for things to tar.
- * @param PhingFile $baseDir
- */
- public function setBasedir(PhingFile $baseDir) {
- $this->baseDir = $baseDir;
- }
-
- /**
- * Set the include empty dirs flag.
- * @param boolean Flag if empty dirs should be tarred too
- * @return void
- * @access public
- */
- public function setIncludeEmptyDirs($bool) {
- $this->includeEmpty = (boolean) $bool;
- }
-
- /**
- * Set how to handle long files, those with a path&gt;100 chars.
- * Optional, default=warn.
- * <p>
- * Allowable values are
- * <ul>
- * <li> truncate - paths are truncated to the maximum length
- * <li> fail - paths greater than the maximim cause a build exception
- * <li> warn - paths greater than the maximum cause a warning and GNU is used
- * <li> gnu - GNU extensions are used for any paths greater than the maximum.
- * <li> omit - paths greater than the maximum are omitted from the archive
- * </ul>
- */
- public function setLongfile($mode) {
- $this->longFileMode = $mode;
- }
-
- /**
- * Set compression method.
- * Allowable values are
- * <ul>
- * <li> none - no compression
- * <li> gzip - Gzip compression
- * <li> bzip2 - Bzip2 compression
- * </ul>
- */
- public function setCompression($mode) {
- switch($mode) {
- case "gzip":
- $this->compression = "gz";
- break;
- case "bzip2":
- $this->compression = "bz2";
- break;
- case "none":
- $this->compression = null;
- break;
- default:
- $this->log("Ignoring unknown compression mode: ".$mode, Project::MSG_WARN);
- $this->compression = null;
- }
- }
-
- /**
- * Sets the file path prefix for file in the tar file.
- *
- * @param string $prefix Prefix
- *
- * @return void
- */
- public function setPrefix($prefix) {
- $this->prefix = $prefix;
- }
-
- /**
- * do the work
- * @throws BuildException
- */
- public function main() {
-
- if ($this->tarFile === null) {
- throw new BuildException("tarfile attribute must be set!", $this->getLocation());
- }
-
- if ($this->tarFile->exists() && $this->tarFile->isDirectory()) {
- throw new BuildException("tarfile is a directory!", $this->getLocation());
- }
-
- if ($this->tarFile->exists() && !$this->tarFile->canWrite()) {
- throw new BuildException("Can not write to the specified tarfile!", $this->getLocation());
- }
-
- // shouldn't need to clone, since the entries in filesets
- // themselves won't be modified -- only elements will be added
- $savedFileSets = $this->filesets;
-
- try {
- if ($this->baseDir !== null) {
- if (!$this->baseDir->exists()) {
- throw new BuildException("basedir '" . (string) $this->baseDir . "' does not exist!", $this->getLocation());
- }
- if (empty($this->filesets)) { // if there weren't any explicit filesets specivied, then
- // create a default, all-inclusive fileset using the specified basedir.
- $mainFileSet = new TarFileSet($this->fileset);
- $mainFileSet->setDir($this->baseDir);
- $this->filesets[] = $mainFileSet;
- }
- }
-
- if (empty($this->filesets)) {
- throw new BuildException("You must supply either a basedir "
- . "attribute or some nested filesets.",
- $this->getLocation());
- }
-
- // check if tar is out of date with respect to each fileset
- if($this->tarFile->exists()) {
- $upToDate = true;
- foreach($this->filesets as $fs) {
- $files = $fs->getFiles($this->project, $this->includeEmpty);
- if (!$this->archiveIsUpToDate($files, $fs->getDir($this->project))) {
- $upToDate = false;
- }
- for ($i=0, $fcount=count($files); $i < $fcount; $i++) {
- if ($this->tarFile->equals(new PhingFile($fs->getDir($this->project), $files[$i]))) {
- throw new BuildException("A tar file cannot include itself", $this->getLocation());
- }
- }
- }
- if ($upToDate) {
- $this->log("Nothing to do: " . $this->tarFile->__toString() . " is up to date.", Project::MSG_INFO);
- return;
- }
- }
-
- $this->log("Building tar: " . $this->tarFile->__toString(), Project::MSG_INFO);
-
- $tar = new Archive_Tar($this->tarFile->getAbsolutePath(), $this->compression);
-
- // print errors
- $tar->setErrorHandling(PEAR_ERROR_PRINT);
-
- foreach($this->filesets as $fs) {
- $files = $fs->getFiles($this->project, $this->includeEmpty);
- if (count($files) > 1 && strlen($fs->getFullpath()) > 0) {
- throw new BuildException("fullpath attribute may only "
- . "be specified for "
- . "filesets that specify a "
- . "single file.");
- }
- $fsBasedir = $fs->getDir($this->project);
- $filesToTar = array();
- for ($i=0, $fcount=count($files); $i < $fcount; $i++) {
- $f = new PhingFile($fsBasedir, $files[$i]);
- $filesToTar[] = $f->getAbsolutePath();
- $this->log("Adding file " . $f->getPath() . " to archive.", Project::MSG_VERBOSE);
- }
- $tar->addModify($filesToTar, $this->prefix, $fsBasedir->getAbsolutePath());
- }
-
-
- } catch (IOException $ioe) {
- $msg = "Problem creating TAR: " . $ioe->getMessage();
- $this->filesets = $savedFileSets;
- throw new BuildException($msg, $ioe, $this->getLocation());
- }
-
- $this->filesets = $savedFileSets;
- }
-
- /**
- * @param array $files array of filenames
- * @param PhingFile $dir
- * @return boolean
- */
- protected function archiveIsUpToDate($files, $dir) {
- $sfs = new SourceFileScanner($this);
- $mm = new MergeMapper();
- $mm->setTo($this->tarFile->getAbsolutePath());
- return count($sfs->restrict($files, $dir, null, $mm)) == 0;
- }
-
-}
-
-
-/**
- * This is a FileSet with the option to specify permissions.
- *
- * Permissions are currently not implemented by PEAR Archive_Tar,
- * but hopefully they will be in the future.
- *
- * @package phing.tasks.ext
- */
-class TarFileSet extends FileSet {
-
- private $files = null;
-
- private $mode = 0100644;
-
- private $userName = "";
- private $groupName = "";
- private $prefix = "";
- private $fullpath = "";
- private $preserveLeadingSlashes = false;
-
- /**
- * Get a list of files and directories specified in the fileset.
- * @return array a list of file and directory names, relative to
- * the baseDir for the project.
- */
- public function getFiles(Project $p, $includeEmpty = true) {
-
- if ($this->files === null) {
-
- $ds = $this->getDirectoryScanner($p);
- $this->files = $ds->getIncludedFiles();
-
- if ($includeEmpty) {
-
- // first any empty directories that will not be implicitly added by any of the files
- $implicitDirs = array();
- foreach($this->files as $file) {
- $implicitDirs[] = dirname($file);
- }
-
- $incDirs = $ds->getIncludedDirectories();
-
- // we'll need to add to that list of implicit dirs any directories
- // that contain other *directories* (and not files), since otherwise
- // we get duplicate directories in the resulting tar
- foreach($incDirs as $dir) {
- foreach($incDirs as $dircheck) {
- if (!empty($dir) && $dir == dirname($dircheck)) {
- $implicitDirs[] = $dir;
- }
- }
- }
-
- $implicitDirs = array_unique($implicitDirs);
-
- // Now add any empty dirs (dirs not covered by the implicit dirs)
- // to the files array.
-
- foreach($incDirs as $dir) { // we cannot simply use array_diff() since we want to disregard empty/. dirs
- if ($dir != "" && $dir != "." && !in_array($dir, $implicitDirs)) {
- // it's an empty dir, so we'll add it.
- $this->files[] = $dir;
- }
- }
- } // if $includeEmpty
-
- } // if ($this->files===null)
-
- return $this->files;
- }
-
- /**
- * A 3 digit octal string, specify the user, group and
- * other modes in the standard Unix fashion;
- * optional, default=0644
- * @param string $octalString
- */
- public function setMode($octalString) {
- $octal = (int) $octalString;
- $this->mode = 0100000 | $octal;
- }
-
- public function getMode() {
- return $this->mode;
- }
-
- /**
- * The username for the tar entry
- * This is not the same as the UID, which is
- * not currently set by the task.
- */
- public function setUserName($userName) {
- $this->userName = $userName;
- }
-
- public function getUserName() {
- return $this->userName;
- }
-
- /**
- * The groupname for the tar entry; optional, default=""
- * This is not the same as the GID, which is
- * not currently set by the task.
- */
- public function setGroup($groupName) {
- $this->groupName = $groupName;
- }
-
- public function getGroup() {
- return $this->groupName;
- }
-
- /**
- * If the prefix attribute is set, all files in the fileset
- * are prefixed with that path in the archive.
- * optional.
- */
- public function setPrefix($prefix) {
- $this->prefix = $prefix;
- }
-
- public function getPrefix() {
- return $this->prefix;
- }
-
- /**
- * If the fullpath attribute is set, the file in the fileset
- * is written with that path in the archive. The prefix attribute,
- * if specified, is ignored. It is an error to have more than one file specified in
- * such a fileset.
- */
- public function setFullpath($fullpath) {
- $this->fullpath = $fullpath;
- }
-
- public function getFullpath() {
- return $this->fullpath;
- }
-
- /**
- * Flag to indicates whether leading `/'s should
- * be preserved in the file names.
- * Optional, default is <code>false</code>.
- * @return void
- */
- public function setPreserveLeadingSlashes($b) {
- $this->preserveLeadingSlashes = (boolean) $b;
- }
-
- public function getPreserveLeadingSlashes() {
- return $this->preserveLeadingSlashes;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/UntarTask.php b/buildscripts/phing/classes/phing/tasks/ext/UntarTask.php
deleted file mode 100644
index 74777322..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/UntarTask.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-/*
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/ExtractBaseTask.php';
-
-/**
- * Extracts one or several tar archives using PEAR Archive_Tar
- *
- * @author Joakim Bodin <joakim.bodin+phing@gmail.com>
- * @version $Id: f77612833e0415725e7b816a0515db4a4f0f4c93 $
- * @package phing.tasks.ext
- * @since 2.2.0
- */
-class UntarTask extends ExtractBaseTask {
-
- /**
- * Ensures that PEAR lib exists.
- */
- public function init() {
- include_once 'Archive/Tar.php';
- if (!class_exists('Archive_Tar')) {
- throw new BuildException("You must have installed the PEAR Archive_Tar class in order to use UntarTask.");
- }
- }
-
- protected function extractArchive(PhingFile $tarfile)
- {
- $this->log("Extracting tar file: " . $tarfile->__toString() . ' to ' . $this->todir->__toString(), Project::MSG_INFO);
-
- try {
- $tar = $this->initTar($tarfile);
- if(!$tar->extractModify($this->todir->getAbsolutePath(), $this->removepath)) {
- throw new BuildException('Failed to extract tar file: ' . $tarfile->getAbsolutePath());
- }
- } catch (IOException $ioe) {
- $msg = "Could not extract tar file: " . $ioe->getMessage();
- throw new BuildException($msg, $ioe, $this->getLocation());
- }
- }
-
- protected function listArchiveContent(PhingFile $tarfile)
- {
- $tar = $this->initTar($tarfile);
- return $tar->listContent();
- }
-
- /**
- * Init a Archive_Tar class with correct compression for the given file.
- *
- * @param PhingFile $tarfile
- * @return Archive_Tar the tar class instance
- */
- private function initTar(PhingFile $tarfile)
- {
- $compression = null;
- $tarfileName = $tarfile->getName();
- $mode = strtolower(substr($tarfileName, strrpos($tarfileName, '.')));
-
- $compressions = array(
- 'gz' => array('.gz', '.tgz',),
- 'bz2' => array('.bz2',),
- );
- foreach ($compressions as $algo => $ext) {
- if (array_search($mode, $ext) !== false) {
- $compression = $algo;
- break;
- }
- }
-
- return new Archive_Tar($tarfile->getAbsolutePath(), $compression);
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/UnzipTask.php b/buildscripts/phing/classes/phing/tasks/ext/UnzipTask.php
deleted file mode 100644
index ef7c3e7d..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/UnzipTask.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/*
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/ExtractBaseTask.php';
-require_once 'phing/system/io/FileSystem.php';
-
-/**
- * Extracts one or several zip archives using ZipArchive class.
- *
- * @author Joakim Bodin <joakim.bodin+phing@gmail.com>
- * @author George Miroshnikov <laggy.luke@gmail.com>
- * @version $Id: 9c4afd9af5e81250ca6c7afbc6e646c2a0f0148c $
- * @package phing.tasks.ext
- */
-class UnzipTask extends ExtractBaseTask
-{
- /**
- * Extract archive content into $this->todir directory
- * @param PhingFile Zip file to extract
- * @return boolean
- */
- protected function extractArchive(PhingFile $zipfile)
- {
- $this->log("Extracting zip: " . $zipfile->__toString() . ' to ' . $this->todir->__toString(), Project::MSG_INFO);
-
- $zip = new ZipArchive();
-
- $result = $zip->open($zipfile->getAbsolutePath());
- if (!$result) {
- $this->log("Unable to open zipfile " . $zipfile->__toString(), Project::MSG_ERR);
- return false;
- }
-
- $result = $zip->extractTo($this->todir->getAbsolutePath());
- if (!$result) {
- $this->log("Unable to extract zipfile " . $zipfile->__toString(), Project::MSG_ERR);
- return false;
- }
-
- return true;
- }
-
- /**
- * List archive content
- * @param PhingFile Zip file to list content
- * @return array List of files inside $zipfile
- */
- protected function listArchiveContent(PhingFile $zipfile)
- {
- $zip = new ZipArchive();
- $zip->open($zipfile->getAbsolutePath());
-
- $content = array();
- for ($i = 0; $i < $zip->numFiles; $i++) {
- $content[] = $zip->getNameIndex($i);
- }
- return $content;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/VersionTask.php b/buildscripts/phing/classes/phing/tasks/ext/VersionTask.php
deleted file mode 100755
index b8268870..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/VersionTask.php
+++ /dev/null
@@ -1,217 +0,0 @@
-<?php
-/*
- * $Id: 7fb6793b55e9c1c8c7b3cd8a87b694d720b32749 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-require_once 'phing/Task.php';
-
-/**
- * VersionTask
- *
- * Increments a three-part version number from a given file
- * and writes it back to the file.
- * Incrementing is based on given releasetype, which can be one
- * of Major, Minor and Bugfix.
- * Resulting version number is also published under supplied property.
- *
- * @author Mike Wittje <mw@mike.wittje.de>
- * @version $Id: 7fb6793b55e9c1c8c7b3cd8a87b694d720b32749 $ $Rev $Id$ $Author$
- * @package phing.tasks.ext
- */
-class VersionTask extends Task
-{
- /**
- * Property for Releasetype
- * @var string $releasetype
- */
- private $releasetype;
-
- /**
- * Property for File
- * @var PhingFile file
- */
- private $file;
-
- /**
- * Property to be set
- * @var string $property
- */
- private $property;
-
- /* Allowed Releastypes */
- const RELEASETYPE_MAJOR = 'MAJOR';
- const RELEASETYPE_MINOR = 'MINOR';
- const RELEASETYPE_BUGFIX = 'BUGFIX';
-
- /**
- * Set Property for Releasetype (Minor, Major, Bugfix)
- * @param string $releasetype
- */
- public function setReleasetype($releasetype)
- {
- $this->releasetype = strtoupper($releasetype);
- }
-
- /**
- * Set Property for File containing versioninformation
- * @param PhingFile $file
- */
- public function setFile($file)
- {
- $this->file = $file;
- }
-
- /**
- * Set name of property to be set
- * @param $property
- * @return void
- */
- public function setProperty($property)
- {
- $this->property = $property;
- }
-
- /**
- * Main-Method for the Task
- *
- * @return void
- * @throws BuildException
- */
- public function main()
- {
- // check supplied attributes
- $this->checkReleasetype();
- $this->checkFile();
- $this->checkProperty();
-
- // read file
- $filecontent = trim(file_get_contents($this->file));
-
- // get new version
- $newVersion = $this->getVersion($filecontent);
-
- // write new Version to file
- file_put_contents($this->file, $newVersion . "\n");
-
- // publish new version number as property
- $this->project->setProperty($this->property, $newVersion);
-
- }
-
- /**
- * Returns new version number corresponding to Release type
- *
- * @param string $filecontent
- * @return string
- */
- private function getVersion($filecontent)
- {
- // init
- $newVersion = '';
-
- // Extract version
- list($major, $minor, $bugfix) = explode(".", $filecontent);
-
- // Return new version number
- switch ($this->releasetype) {
- case self::RELEASETYPE_MAJOR:
- $newVersion = sprintf("%d.%d.%d", ++$major,
- 0,
- 0);
- break;
-
- case self::RELEASETYPE_MINOR:
- $newVersion = sprintf("%d.%d.%d", $major,
- ++$minor,
- 0);
- break;
-
- case self::RELEASETYPE_BUGFIX:
- $newVersion = sprintf("%d.%d.%d", $major,
- $minor,
- ++$bugfix);
- break;
- }
-
- return $newVersion;
- }
-
-
- /**
- * checks releasetype attribute
- * @return void
- * @throws BuildException
- */
- private function checkReleasetype()
- {
- // check Releasetype
- if (is_null($this->releasetype)) {
- throw new BuildException('releasetype attribute is required', $this->location);
- }
- // known releasetypes
- $releaseTypes = array(
- self::RELEASETYPE_MAJOR,
- self::RELEASETYPE_MINOR,
- self::RELEASETYPE_BUGFIX
- );
-
- if (!in_array($this->releasetype, $releaseTypes)) {
- throw new BuildException(sprintf('Unknown Releasetype %s..Must be one of Major, Minor or Bugfix',
- $this->releasetype), $this->location);
- }
- }
-
- /**
- * checks file attribute
- * @return void
- * @throws BuildException
- */
- private function checkFile()
- {
- // check File
- if ($this->file === null ||
- strlen($this->file) == 0) {
- throw new BuildException('You must specify a file containing the version number', $this->location);
- }
-
- $content = file_get_contents($this->file);
- if (strlen($content) == 0) {
- throw new BuildException(sprintf('Supplied file %s is empty', $this->file), $this->location);
- }
-
- // check for three-part number
- $split = explode('.', $content);
- if (count($split) !== 3) {
- throw new BuildException('Unknown version number format', $this->location);
- }
-
- }
-
- /**
- * checks property attribute
- * @return void
- * @throws BuildException
- */
- private function checkProperty()
- {
- if (is_null($this->property) ||
- strlen($this->property) === 0) {
- throw new BuildException('Property for publishing version number is not set', $this->location);
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/XmlLintTask.php b/buildscripts/phing/classes/phing/tasks/ext/XmlLintTask.php
deleted file mode 100644
index 15200d37..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/XmlLintTask.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/*
- * $Id: 6261b2f19844b353c379c46daf3ffb13b7a2ddb8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * A XML lint task. Checking syntax of one or more XML files against an XML Schema using the DOM extension.
- *
- * @author Knut Urdalen <knut.urdalen@telio.no>
- * @version $Id: 6261b2f19844b353c379c46daf3ffb13b7a2ddb8 $
- * @package phing.tasks.ext
- */
-class XmlLintTask extends Task {
-
- protected $file; // the source file (from xml attribute)
- protected $schema; // the schema file (from xml attribute)
- protected $filesets = array(); // all fileset objects assigned to this task
- protected $useRNG = false;
-
- protected $haltonfailure = true;
-
- /**
- * File to be performed syntax check on
- *
- * @param PhingFile $file
- */
- public function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * XML Schema Description file to validate against
- *
- * @param PhingFile $schema
- */
- public function setSchema(PhingFile $schema) {
- $this->schema = $schema;
- }
-
-
- /**
- * Use RNG instead of DTD schema validation
- *
- * @param bool $bool
- */
- public function setUseRNG($bool) {
- $this->useRNG = (boolean)$bool;
- }
-
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Sets the haltonfailure attribute
- *
- * @param bool $haltonfailure
- */
- public function setHaltonfailure($haltonfailure) {
- $this->haltonfailure = (bool) $haltonfailure;
- }
-
- /**
- * Execute lint check against PhingFile or a FileSet
- */
- public function main() {
- if(isset($this->schema) && !file_exists($this->schema->getPath())) {
- throw new BuildException("Schema file not found: ".$this->schema->getPath());
- }
- if(!isset($this->file) and count($this->filesets) == 0) {
- throw new BuildException("Missing either a nested fileset or attribute 'file' set");
- }
-
- set_error_handler(array($this, 'errorHandler'));
- if($this->file instanceof PhingFile) {
- $this->lint($this->file->getPath());
- } else { // process filesets
- $project = $this->getProject();
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $files = $ds->getIncludedFiles();
- $dir = $fs->getDir($this->project)->getPath();
- foreach($files as $file) {
- $this->lint($dir.DIRECTORY_SEPARATOR.$file);
- }
- }
- }
- restore_error_handler();
- }
-
- protected function logError($message) {
- if ($this->haltonfailure) {
- throw new BuildException($message);
- } else {
- $this->log($message, Project::MSG_ERR);
- }
- }
-
- /**
- * Performs validation
- *
- * @param string $file
- * @return void
- */
- protected function lint($file) {
- if(file_exists($file)) {
- if(is_readable($file)) {
- $dom = new DOMDocument();
- if ($dom->load($file) === false) {
- $error = libxml_get_last_error();
- $this->logError($file.' is not well-formed (See messages above)');
- } else {
- if(isset($this->schema)) {
- if( $this->useRNG ) {
- if($dom->relaxNGValidate($this->schema->getPath())) {
- $this->log($file.' validated with RNG grammar', Project::MSG_INFO);
- } else {
- $this->logError($file.' fails to validate (See messages above)');
- }
- } else {
- if($dom->schemaValidate($this->schema->getPath())) {
- $this->log($file.' validated with schema', Project::MSG_INFO);
- } else {
- $this->logError($file.' fails to validate (See messages above)');
- }
- }
- } else {
- $this->log($file.' is well-formed (not validated due to missing schema specification)', Project::MSG_INFO);
- }
- }
- } else {
- $this->logError('Permission denied to read file: '.$file);
- }
- } else {
- $this->logError('File not found: '.$file);
- }
- }
-
- /**
- * Local error handler to catch validation errors and log them through Phing
- *
- * @param int $level
- * @param string $message
- * @param string $file
- * @param int $line
- */
- public function errorHandler($level, $message, $file, $line, $context) {
- $matches = array();
- preg_match('/^.*\(\): (.*)$/', $message, $matches);
- $this->log($matches[1], Project::MSG_ERR);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/XmlPropertyTask.php b/buildscripts/phing/classes/phing/tasks/ext/XmlPropertyTask.php
deleted file mode 100755
index d32cd78e..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/XmlPropertyTask.php
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-
-/*
- * $Id: c7a3e7eff0b94828f9ec634c3612d89f2740fead $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/tasks/system/PropertyTask.php';
-
-/**
- * Task for setting properties from an XML file in buildfiles.
- *
- * @author Jonathan Bond-Caron <jbondc@openmv.com>
- * @version $Id: c7a3e7eff0b94828f9ec634c3612d89f2740fead $
- * @package phing.tasks.ext
- * @since 2.4.0
- * @link http://ant.apache.org/manual/CoreTasks/xmlproperty.html
- */
-class XmlPropertyTask extends PropertyTask {
-
- private $_keepRoot = true;
- private $_collapseAttr = false;
- private $_delimiter = ',';
- private $_required = false;
-
- /** Set a file to use as the source for properties. */
- public function setFile($file) {
- if (is_string($file)) {
- $file = new PhingFile($file);
- }
- $this->file = $file;
- }
-
- /** Get the PhingFile that is being used as property source. */
- public function getFile() {
- return $this->file;
- }
-
- /**
- * Prefix to apply to properties loaded using <code>file</code>.
- * A "." is appended to the prefix if not specified.
- * @param string $prefix prefix string
- * @return void
- * @since 2.0
- */
- public function setPrefix($prefix) {
- $this->prefix = $prefix;
- if (!StringHelper::endsWith(".", $prefix)) {
- $this->prefix .= ".";
- }
- }
-
- /**
- * @return string
- * @since 2.0
- */
- public function getPrefix() {
- return $this->prefix;
- }
-
- /**
- * Keep the xml root tag as the first value in the property name
- *
- * @param bool $yesNo
- */
- public function setKeepRoot($yesNo) {
- $this->_keepRoot = (bool)$yesNo;
- }
-
- /**
- * @return bool
- */
- public function getKeepRoot() {
- return $this->_keepRoot;
- }
-
- /**
- * Treat attributes as nested elements.
- *
- * @param bool $yesNo
- */
- public function setCollapseAttributes($yesNo) {
- $this->_collapseAttr = (bool)$yesNo;
- }
-
- /**
- * @return bool
- */
- public function getCollapseAttributes() {
- return $this->_collapseAttr;
- }
-
- /**
- * Delimiter for splitting multiple values.
- *
- * @param string $d
- */
- public function setDelimiter($d) {
- $this->_delimiter = $d;
- }
-
- /**
- * @return string
- */
- public function getDelimiter() {
- return $this->_delimiter;
- }
-
- /**
- * File required or not.
- *
- * @param string $d
- */
- public function setRequired($d) {
- $this->_required = $d;
- }
-
- /**
- * @return string
- */
- public function getRequired() {
- return $this->_required;
- }
-
- /**
- * set the property in the project to the value.
- * if the task was give a file or env attribute
- * here is where it is loaded
- */
- public function main() {
-
- if ($this->file === null ) {
- throw new BuildException("You must specify file to load properties from", $this->getLocation());
- }
-
- $this->loadFile($this->file);
- }
-
- /**
- * load properties from an XML file.
- * @param PhingFile $file
- */
- protected function loadFile(PhingFile $file) {
- $props = new Properties();
- $this->log("Loading ". $file->getAbsolutePath(), Project::MSG_INFO);
- try { // try to load file
- if ($file->exists()) {
-
- $this->addProperties($this->_getProperties($file));
-
- } else {
- if ($this->getRequired()){
- throw new BuildException("Could not load required properties file.", $ioe);
- } else {
- $this->log("Unable to find property file: ". $file->getAbsolutePath() ."... skipped", Project::MSG_WARN);
- }
- }
- } catch (IOException $ioe) {
- throw new BuildException("Could not load properties from file.", $ioe);
- }
- }
-
- /**
- * Parses an XML file and returns properties
- *
- * @param string $filePath
- *
- * @return Properties
- */
- protected function _getProperties($filePath) {
-
- // load() already made sure that file is readable
- // but we'll double check that when reading the file into
- // an array
-
- if (($lines = @file($filePath)) === false) {
- throw new IOException("Unable to parse contents of $filePath");
- }
-
- $prop = new Properties;
-
- $xml = simplexml_load_file($filePath);
-
- if($xml === false)
- throw new IOException("Unable to parse XML file $filePath");
-
- $path = array();
-
- if($this->_keepRoot) {
- $path[] = dom_import_simplexml($xml)->tagName;
-
- $prefix = implode('.', $path);
-
- if (!empty($prefix))
- $prefix .= '.';
-
- // Check for attributes
- foreach($xml->attributes() as $attribute => $val) {
- if($this->_collapseAttr)
- $prop->setProperty($prefix . "$attribute", (string)$val);
- else
- $prop->setProperty($prefix . "($attribute)", (string)$val);
- }
- }
-
- $this->_addNode($xml, $path, $prop);
-
- return $prop;
- }
-
- /**
- * Adds an XML node
- *
- * @param SimpleXMLElement $node
- * @param array $path Path to this node
- * @param Properties $prop Properties will be added as they are found (by reference here)
- *
- * @return void
- */
- protected function _addNode($node, $path, $prop) {
- foreach($node as $tag => $value) {
-
- $prefix = implode('.', $path);
-
- if (!empty($prefix) > 0)
- $prefix .= '.';
-
- // Check for attributes
- foreach($value->attributes() as $attribute => $val) {
- if($this->_collapseAttr)
- $prop->setProperty($prefix . "$tag.$attribute", (string)$val);
- else
- $prop->setProperty($prefix . "$tag($attribute)", (string)$val);
- }
-
- // Add tag
- if(count($value->children())) {
- $this->_addNode($value, array_merge($path, array($tag)), $prop);
- } else {
- $val = (string)$value;
-
- /* Check for * and ** on 'exclude' and 'include' tag / ant seems to do this? could use FileSet here
- if($tag == 'exclude') {
- }*/
-
- // When property already exists, i.e. multiple xml tag
- // <project>
- // <exclude>file/a.php</exclude>
- // <exclude>file/a.php</exclude>
- // </project>
- //
- // Would be come project.exclude = file/a.php,file/a.php
- $p = empty($prefix) ? $tag : $prefix . $tag;
- $prop->append($p, (string)$val, $this->_delimiter);
- }
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ZendCodeAnalyzerTask.php b/buildscripts/phing/classes/phing/tasks/ext/ZendCodeAnalyzerTask.php
deleted file mode 100644
index 5093fabe..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ZendCodeAnalyzerTask.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-/*
- * $Id: 5b7e3fb304bb5f406c919407d6881449a70b8a28 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * ZendCodeAnalyzerTask analyze PHP source code using the ZendCodeAnalyzer included in Zend Studio 5.1
- *
- * Available warnings:
- * <b>zend-error</b> - %s(line %d): %s
- * <b>oneline-comment</b> - One-line comment ends with tag.
- * <b>bool-assign</b> - Assignment seen where boolean expression is expected. Did you mean '==' instead of '='?
- * <b>bool-print</b> - Print statement used when boolean expression is expected.
- * <b>bool-array</b> - Array used when boolean expression is expected.
- * <b>bool-object</b> - Object used when boolean expression is expected.
- * <b>call-time-ref</b> - Call-time reference is deprecated. Define function as accepting parameter by reference instead.
- * <b>if-if-else</b> - In if-if-else construction else relates to the closest if. Use braces to make the code clearer.
- * <b>define-params</b> - define() requires two or three parameters.
- * <b>define-const</b> - First parameter for define() should be string. Maybe you forgot quotes?
- * <b>break-var</b> - Break/continue with variable is dangerous - break level can be out of scope.
- * <b>break-depth</b> - Break/continue with depth more than current nesting level.
- * <b>var-once</b> - Variable '%s' encountered only once. May be a typo?
- * <b>var-arg-unused</b> - Function argument '%s' is never used.
- * <b>var-global-unused</b> - Global variable '%s' is defined but never used.
- * <b>var-use-before-def</b> - Variable '%s' is used before it was assigned.
- * <b>var-use-before-def-global</b> - Global variable '%s' is used without being assigned. You are probably relying on register_globals feature of PHP. Note that this feature is off by default.
- * <b>var-no-global</b> - PHP global variable '%s' is used as local. Maybe you wanted to define '%s' as global?
- * <b>var-value-unused</b> - Value assigned to variable '%s' is never used
- * <b>var-ref-notmodified</b> - Function parameter '%s' is passed by reference but never modified. Consider passing by value.
- * <b>return-empty-val</b> - Function '%s' has both empty return and return with value.
- * <b>return-empty-used</b> - Function '%s' has empty return but return value is used.
- * <b>return-noref</b> - Function '%s' returns reference but the value is not assigned by reference. Maybe you meant '=&' instead of '='?
- * <b>return-end-used</b> - Control reaches the end of function '%s'(file %s, line %d) but return value is used.
- * <b>sprintf-miss-args</b> - Missing arguments for sprintf: format reqires %d arguments but %d are supplied.
- * <b>sprintf-extra-args</b> - Extra arguments for sprintf: format reqires %d arguments but %d are supplied.
- * <b>unreach-code</b> - Unreachable code in function '%s'.
- * <b>include-var</b> - include/require with user-accessible variable can be dangerous. Consider using constant instead.
- * <b>non-object</b> - Variable '%s' used as object, but has different type.
- * <b>bad-escape</b> - Bad escape sequence: \%c, did you mean \\%c?
- * <b>empty-cond</b> - Condition without a body
- * <b>expr-unused</b> - Expression result is never used
- *
- * @author Knut Urdalen <knut.urdalen@gmail.com>
- * @version $Id: 5b7e3fb304bb5f406c919407d6881449a70b8a28 $
- * @package phing.tasks.ext
- */
-class ZendCodeAnalyzerTask extends Task
-{
- protected $analyzerPath = ""; // Path to ZendCodeAnalyzer binary
- protected $file = ""; // the source file (from xml attribute)
- protected $filesets = array(); // all fileset objects assigned to this task
- protected $counter = 0;
- protected $disable = array();
- protected $enable = array();
-
- private $haltonwarning = false;
-
- /**
- * File to be analyzed
- *
- * @param PhingFile $file
- */
- public function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * Path to ZendCodeAnalyzer binary
- *
- * @param string $analyzerPath
- */
- public function setAnalyzerPath($analyzerPath) {
- $this->analyzerPath = $analyzerPath;
- }
-
- /**
- * Disable warning levels. Seperate warning levels with ','
- *
- * @param string $disable
- */
- public function setDisable($disable) {
- $this->disable = explode(",", $disable);
- }
-
- /**
- * Enable warning levels. Seperate warning levels with ','
- *
- * @param string $enable
- */
- public function setEnable($enable) {
- $this->enable = explode(",", $enable);
- }
-
- /**
- * Sets the haltonwarning flag
- * @param boolean $value
- */
- public function setHaltonwarning($value)
- {
- $this->haltonwarning = $value;
- }
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Analyze against PhingFile or a FileSet
- */
- public function main() {
- if(!isset($this->analyzerPath)) {
- throw new BuildException("Missing attribute 'analyzerPath'");
- }
-
- if(!isset($this->file) and count($this->filesets) == 0) {
- throw new BuildException("Missing either a nested fileset or attribute 'file' set");
- }
-
- if($this->file instanceof PhingFile) {
- $this->analyze($this->file->getPath());
- } else { // process filesets
- $project = $this->getProject();
-
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $files = $ds->getIncludedFiles();
- $dir = $fs->getDir($this->project)->getPath();
-
- foreach($files as $file) {
- $this->analyze($dir.DIRECTORY_SEPARATOR.$file);
- }
- }
- }
-
- $this->log("Number of findings: ".$this->counter, Project::MSG_INFO);
- }
-
- /**
- * Analyze file
- *
- * @param string $file
- * @return void
- */
- protected function analyze($file) {
- if(file_exists($file)) {
- if(is_readable($file)) {
- // Construct shell command
- $cmd = $this->analyzerPath." ";
-
- foreach($this->enable as $enable) { // Enable warning levels
- $cmd .= " --enable $enable ";
- }
-
- foreach($this->disable as $disable) { // Disable warning levels
- $cmd .= " --disable $disable ";
- }
-
- $cmd .= "$file 2>&1";
-
- // Execute command
- $result = shell_exec($cmd);
- $result = explode("\n", $result);
-
- for($i=2, $size=count($result); $i<($size-1); $i++) {
- $this->counter++;
- $this->log($result[$i], Project::MSG_WARN);
- }
-
- $total = count($result) - 3;
-
- if ($total > 0 && $this->haltonwarning) {
- throw new BuildException('zendcodeanalyzer detected ' . $total . ' warning' . ($total > 1 ? 's' : '') . ' in ' . $file);
- }
- }
- else
- {
- throw new BuildException('Permission denied: '.$file);
- }
- } else {
- throw new BuildException('File not found: '.$file);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ZipTask.php b/buildscripts/phing/classes/phing/tasks/ext/ZipTask.php
deleted file mode 100755
index 72bf42fd..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ZipTask.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-/*
- * $Id: 6997b3f3abffedf1b2efabc40c3b2d012b2379cb $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/MatchingTask.php';
-include_once 'phing/util/SourceFileScanner.php';
-include_once 'phing/mappers/MergeMapper.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * Creates a zip archive using PHP ZipArchive extension/
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 6997b3f3abffedf1b2efabc40c3b2d012b2379cb $
- * @package phing.tasks.ext
- * @since 2.1.0
- */
-class ZipTask extends MatchingTask {
-
- /**
- * @var PhingFile
- */
- private $zipFile;
-
- /**
- * @var PhingFile
- */
- private $baseDir;
-
- /**
- * Whether to include empty dirs in the archive.
- */
- private $includeEmpty = true;
-
- private $filesets = array();
- private $fileSetFiles = array();
-
- /**
- * File path prefix in zip archive
- *
- * @var string
- */
- private $prefix = null;
-
- /**
- * Add a new fileset.
- * @return FileSet
- */
- public function createFileSet() {
- $this->fileset = new ZipFileSet();
- $this->filesets[] = $this->fileset;
- return $this->fileset;
- }
-
- /**
- * Set is the name/location of where to create the zip file.
- * @param PhingFile $destFile The output of the zip
- */
- public function setDestFile(PhingFile $destFile) {
- $this->zipFile = $destFile;
- }
-
- /**
- * This is the base directory to look in for things to zip.
- * @param PhingFile $baseDir
- */
- public function setBasedir(PhingFile $baseDir) {
- $this->baseDir = $baseDir;
- }
-
- /**
- * Sets the file path prefix for file in the zip file.
- *
- * @param string $prefix Prefix
- *
- * @return void
- */
- public function setPrefix($prefix) {
- $this->prefix = $prefix;
- }
-
- /**
- * Set the include empty dirs flag.
- * @param boolean Flag if empty dirs should be tarred too
- * @return void
- * @access public
- */
- public function setIncludeEmptyDirs($bool) {
- $this->includeEmpty = (boolean) $bool;
- }
-
- /**
- * do the work
- * @throws BuildException
- */
- public function main() {
-
- if ($this->zipFile === null) {
- throw new BuildException("zipfile attribute must be set!", $this->getLocation());
- }
-
- if ($this->zipFile->exists() && $this->zipFile->isDirectory()) {
- throw new BuildException("zipfile is a directory!", $this->getLocation());
- }
-
- if ($this->zipFile->exists() && !$this->zipFile->canWrite()) {
- throw new BuildException("Can not write to the specified zipfile!", $this->getLocation());
- }
-
- // shouldn't need to clone, since the entries in filesets
- // themselves won't be modified -- only elements will be added
- $savedFileSets = $this->filesets;
-
- try {
- if ($this->baseDir !== null) {
- if (!$this->baseDir->exists()) {
- throw new BuildException("basedir '" . (string) $this->baseDir . "' does not exist!", $this->getLocation());
- }
-
- if (empty($this->filesets))
- {
- // add the main fileset to the list of filesets to process.
- $mainFileSet = new ZipFileSet($this->fileset);
- $mainFileSet->setDir($this->baseDir);
- $this->filesets[] = $mainFileSet;
- }
- }
-
- if (empty($this->filesets)) {
- throw new BuildException("You must supply either a basedir "
- . "attribute or some nested filesets.",
- $this->getLocation());
- }
-
- // check if zip is out of date with respect to each
- // fileset
- $upToDate = true;
- foreach($this->filesets as $fs) {
- $files = $fs->getFiles($this->project, $this->includeEmpty);
- if (!$this->archiveIsUpToDate($files, $fs->getDir($this->project))) {
- $upToDate = false;
- }
- for ($i=0, $fcount=count($files); $i < $fcount; $i++) {
- if ($this->zipFile->equals(new PhingFile($fs->getDir($this->project), $files[$i]))) {
- throw new BuildException("A zip file cannot include itself", $this->getLocation());
- }
- }
- }
-
- if ($upToDate) {
- $this->log("Nothing to do: " . $this->zipFile->__toString() . " is up to date.", Project::MSG_INFO);
- return;
- }
-
- $this->log("Building zip: " . $this->zipFile->__toString(), Project::MSG_INFO);
-
- $zip = new ZipArchive();
- $res = $zip->open($this->zipFile->getAbsolutePath(), ZIPARCHIVE::CREATE);
-
- if ($res !== true)
- {
- throw new Exception("ZipArchive::open() failed with code " . $res);
- }
-
- foreach($this->filesets as $fs) {
- $fsBasedir = (null != $this->baseDir) ? $this->baseDir :
- $fs->getDir($this->project);
-
- $files = $fs->getFiles($this->project, $this->includeEmpty);
-
- $filesToZip = array();
- for ($i=0, $fcount=count($files); $i < $fcount; $i++) {
- $f = new PhingFile($fsBasedir, $files[$i]);
-
- $pathInZip = $this->prefix
- . $f->getPathWithoutBase($fsBasedir);
-
- $pathInZip = str_replace('\\', '/', $pathInZip);
-
- if ($f->isDirectory()) {
- if ($pathInZip != '.') {
- $zip->addEmptyDir($pathInZip);
- }
- } else {
- $zip->addFile($f->getPath(), $pathInZip);
- }
- $this->log("Adding " . $f->getPath() . " as " . $pathInZip . " to archive.", Project::MSG_VERBOSE);
- }
- }
-
- $zip->close();
- } catch (IOException $ioe) {
- $msg = "Problem creating ZIP: " . $ioe->getMessage();
- $this->filesets = $savedFileSets;
- throw new BuildException($msg, $ioe, $this->getLocation());
- }
-
- $this->filesets = $savedFileSets;
- }
-
- /**
- * @param array $files array of filenames
- * @param PhingFile $dir
- * @return boolean
- */
- protected function archiveIsUpToDate($files, $dir) {
- $sfs = new SourceFileScanner($this);
- $mm = new MergeMapper();
- $mm->setTo($this->zipFile->getAbsolutePath());
- return count($sfs->restrict($files, $dir, null, $mm)) == 0;
- }
-
-}
-
-
-
-
-/**
- * This is a FileSet with the to specify permissions.
- *
- * Permissions are currently not implemented by PEAR Archive_Tar,
- * but hopefully they will be in the future.
- *
- * @package phing.tasks.ext
- */
-class ZipFileSet extends FileSet {
-
- private $files = null;
-
- /**
- * Get a list of files and directories specified in the fileset.
- * @return array a list of file and directory names, relative to
- * the baseDir for the project.
- */
- public function getFiles(Project $p, $includeEmpty = true) {
-
- if ($this->files === null) {
-
- $ds = $this->getDirectoryScanner($p);
- $this->files = $ds->getIncludedFiles();
-
- // build a list of directories implicitly added by any of the files
- $implicitDirs = array();
- foreach($this->files as $file) {
- $implicitDirs[] = dirname($file);
- }
-
- $incDirs = $ds->getIncludedDirectories();
-
- // we'll need to add to that list of implicit dirs any directories
- // that contain other *directories* (and not files), since otherwise
- // we get duplicate directories in the resulting tar
- foreach($incDirs as $dir) {
- foreach($incDirs as $dircheck) {
- if (!empty($dir) && $dir == dirname($dircheck)) {
- $implicitDirs[] = $dir;
- }
- }
- }
-
- $implicitDirs = array_unique($implicitDirs);
-
- $emptyDirectories = array();
-
- if ($includeEmpty) {
- // Now add any empty dirs (dirs not covered by the implicit dirs)
- // to the files array.
-
- foreach($incDirs as $dir) { // we cannot simply use array_diff() since we want to disregard empty/. dirs
- if ($dir != "" && $dir != "." && !in_array($dir, $implicitDirs)) {
- // it's an empty dir, so we'll add it.
- $emptyDirectories[] = $dir;
- }
- }
- } // if $includeEmpty
-
- $this->files = array_merge($implicitDirs, $emptyDirectories, $this->files);
- sort($this->files);
- } // if ($this->files===null)
-
- return $this->files;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/apigen/ApiGenTask.php b/buildscripts/phing/classes/phing/tasks/ext/apigen/ApiGenTask.php
deleted file mode 100644
index d8438b3e..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/apigen/ApiGenTask.php
+++ /dev/null
@@ -1,439 +0,0 @@
-<?php
-/*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * ApiGen task (http://apigen.org).
- *
- * @package phing.tasks.ext.apigen
- * @author Martin Srank <martin@smasty.net>
- * @author Jaroslav Hanslík <kukulich@kukulich.cz>
- * @since 2.4.10
- */
-class ApiGenTask extends Task
-{
- /**
- * Default ApiGen executable name.
- *
- * @var string
- */
- private $executable = 'apigen';
-
- /**
- * Default options for ApiGen.
- *
- * @var array
- */
- private $options = array(
- 'progressbar' => false,
- 'colors' => false,
- 'update-check' => false
- );
-
- /**
- * Sets the ApiGen executable name.
- *
- * @param string $executable
- */
- public function setExecutable($executable)
- {
- $this->executable = (string) $executable;
- }
-
- /**
- * Sets the config file name.
- *
- * @param string $config
- */
- public function setConfig($config)
- {
- $this->options['config'] = (string) $config;
- }
-
- /**
- * Sets source files or directories.
- *
- * @param string $source
- */
- public function setSource($source)
- {
- $this->options['source'] = explode(',', $source);
- }
-
- /**
- * Sets the destination directory.
- *
- * @param string $destination
- */
- public function setDestination($destination)
- {
- $this->options['destination'] = (string) $destination;
- }
-
- /**
- * Sets list of allowed file extensions.
- *
- * @param string $extensions
- */
- public function setExtensions($extensions)
- {
- $this->options['extensions'] = explode(',', $extensions);
- }
-
- /**
- * Sets masks (case sensitive) to exclude files or directories from processing.
- *
- * @param string $exclude
- */
- public function setExclude($exclude)
- {
- $this->options['exclude'] = explode(',', $exclude);
- }
-
- /**
- * Sets masks to exclude elements from documentation generating.
- *
- * @param string $skipDocPath
- */
- public function setSkipDocPath($skipDocPath)
- {
- $this->options['skip-doc-path'] = explode(',', $skipDocPath);
- }
-
- /**
- * Sets a name prefix to exclude elements from documentation generating.
- *
- * @param string $skipDocPrefix
- */
- public function setSkipDocPrefix($skipDocPrefix)
- {
- $this->options['skip-doc-prefix'] = explode(',', $skipDocPrefix);
- }
-
- /**
- * Sets the character set of source files.
- *
- * @param string $charset
- */
- public function setCharset($charset)
- {
- $this->options['charset'] = explode(',', $charset);
- }
-
- /**
- * Sets the main project name prefix.
- *
- * @param string $main
- */
- public function setMain($main)
- {
- $this->options['main'] = (string) $main;
- }
-
- /**
- * Sets the title of generated documentation.
- *
- * @param string $title
- */
- public function setTitle($title)
- {
- $this->options['title'] = (string) $title;
- }
-
- /**
- * Sets the documentation base URL.
- *
- * @param string $baseUrl
- */
- public function setBaseUrl($baseUrl)
- {
- $this->options['base-url'] = (string) $baseUrl;
- }
-
- /**
- * Sets the Google Custom Search ID.
- *
- * @param string $googleCseId
- */
- public function setGoogleCseId($googleCseId)
- {
- $this->options['google-cse-id'] = (string) $googleCseId;
- }
-
- /**
- * Sets the Google Custom Search label.
- *
- * @param string $googleCseLabel
- */
- public function setGoogleCseLabel($googleCseLabel)
- {
- $this->options['google-cse-label'] = (string) $googleCseLabel;
- }
-
- /**
- * Sets the Google Analytics tracking code.
- *
- * @param string $googleAnalytics
- */
- public function setGoogleAnalytics($googleAnalytics)
- {
- $this->options['google-analytics'] = (string) $googleAnalytics;
- }
-
- /**
- * Sets the template config file name.
- *
- * @param string $templateConfig
- */
- public function setTemplateConfig($templateConfig)
- {
- $this->options['template-config'] = (string) $templateConfig;
- }
-
- /**
- * Sets a list of HTML tags allowed in the documentation.
- *
- * @param string $allowedHtml
- */
- public function setAllowedHtml($allowedHtml)
- {
- $this->options['allowed-html'] = (string) $allowedHtml;
- }
-
- /**
- * Sets how elements should be grouped in the menu.
- *
- * @param string $groups
- */
- public function setGroups($groups)
- {
- $this->options['groups'] = (string) $groups;
- }
-
- /**
- * Sets element types for search input autocomplete.
- *
- * @param string $autocomplete
- */
- public function setAutocomplete($autocomplete)
- {
- $this->options['autocomplete'] = (string) $autocomplete;
- }
-
- /**
- * Sets the element access levels.
- *
- * Documentation only for methods and properties with the given access level will be generated.
- *
- * @param string $accessLevels
- */
- public function setAccessLevels($accessLevels)
- {
- $this->options['access-levels'] = (string) $accessLevels;
- }
-
- /**
- * Sets if documentation for elements marked as internal and internal documentation parts should be generated.
- *
- * @param boolean $internal
- */
- public function setInternal($internal)
- {
- $this->options['internal'] = (bool) $internal;
- }
-
- /**
- * Sets if documentation for PHP internal classes should be generated.
- *
- * @param boolean $php
- */
- public function setPhp($php)
- {
- $this->options['php'] = (bool) $php;
- }
-
- /**
- * Sets if tree view of classes, interfaces, traits and exceptions should be generated.
- *
- * @param boolean $tree
- */
- public function setTree($tree)
- {
- $this->options['tree'] = (bool) $tree;
- }
-
- /**
- * Sets if documentation for deprecated elements should be generated.
- *
- * @param boolean $deprecated
- */
- public function setDeprecated($deprecated)
- {
- $this->options['deprecated'] = (bool) $deprecated;
- }
-
- /**
- * Sets if documentation of tasks should be generated.
- *
- * @param boolean $todo
- */
- public function setTodo($todo)
- {
- $this->options['todo'] = (bool) $todo;
- }
-
- /**
- * Sets if highlighted source code files should be generated.
- *
- * @param boolean $sourceCode
- */
- public function setSourceCode($sourceCode)
- {
- $this->options['source-code'] = (bool) $sourceCode;
- }
-
- /**
- * Sets if a link to download documentation as a ZIP archive should be generated.
- *
- * @param boolean $download
- */
- public function setDownload($download)
- {
- $this->options['download'] = (bool) $download;
- }
-
- /**
- * Sets a file name for checkstyle report of poorly documented elements.
- *
- * @param string $report
- */
- public function setReport($report)
- {
- $this->options['report'] = (string) $report;
- }
-
- /**
- * Sets if the destination directory should be wiped out first.
- *
- * @param boolean $wipeout
- */
- public function setWipeout($wipeout)
- {
- $this->options['wipeout'] = (bool) $wipeout;
- }
-
- /**
- * Enables/disables scaning and generating messages.
- *
- * @param boolean $quiet
- */
- public function setQuiet($quiet)
- {
- $this->options['quiet'] = (bool) $quiet;
- }
-
- /**
- * Enables/disables the check for ApiGen updates.
- *
- * @param boolean $updateCheck
- */
- public function setUpdateCheck($updateCheck)
- {
- $this->options['update-check'] = (bool) $updateCheck;
- }
-
- /**
- * Enables/disables the debug mode.
- *
- * @param boolean $debug
- */
- public function setDebug($debug)
- {
- $this->options['debug'] = (bool) $debug;
- }
-
- /**
- * Runs ApiGen.
- *
- * @throws BuildException If something is wrong.
- * @see Task::main()
- */
- public function main()
- {
- if ('apigen' !== $this->executable && !is_file($this->executable)) {
- throw new BuildException(sprintf('Executable %s not found', $this->executable), $this->getLocation());
- }
-
- if (!empty($this->options['config'])) {
- // Config check
- if (!is_file($this->options['config'])) {
- throw new BuildException(sprintf('Config file %s doesn\'t exist', $this->options['config']), $this->getLocation());
- }
- } else {
- // Source check
- if (empty($this->options['source'])) {
- throw new BuildException('Source is not set', $this->getLocation());
- }
- // Destination check
- if (empty($this->options['destination'])) {
- throw new BuildException('Destination is not set', $this->getLocation());
- }
- }
-
- // Source check
- if (!empty($this->options['source'])) {
- foreach ($this->options['source'] as $source) {
- if (!file_exists($source)) {
- throw new BuildException(sprintf('Source %s doesn\'t exist', $source), $this->getLocation());
- }
- }
- }
-
- // Execute ApiGen
- exec(escapeshellcmd($this->executable) . ' ' . $this->constructArguments(), $output, $return);
-
- $logType = 0 === $return ? Project::MSG_INFO : Project::MSG_ERR;
- foreach ($output as $line) {
- $this->log($line, $logType);
- }
- }
-
- /**
- * Generates command line arguments for the ApiGen executable.
- *
- * @return string
- */
- protected function constructArguments()
- {
- $args = array();
- foreach ($this->options as $option => $value) {
- if (is_bool($value)) {
- $args[] = '--' . $option . '=' . ($value ? 'yes' : 'no');
- } elseif (is_array($value)) {
- foreach ($value as $v) {
- $args[] = '--' . $option . '=' . escapeshellarg($v);
- }
- } else {
- $args[] = '--' . $option . '=' . escapeshellarg($value);
- }
- }
- return implode(' ', $args);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMerger.php b/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMerger.php
deleted file mode 100755
index 71eba460..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMerger.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-/**
- * $Id: 83f3748d0690f9fc69c2618191f272e5661c0501 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/util/Properties.php';
-
-/**
- * Saves coverage output of the test to a specified database
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 83f3748d0690f9fc69c2618191f272e5661c0501 $
- * @package phing.tasks.ext.coverage
- * @since 2.1.0
- */
-class CoverageMerger
-{
- private static function mergeCodeCoverage($left, $right)
- {
- $coverageMerged = array();
-
- reset($left);
- reset($right);
-
- while (current($left) !== false && current($right) !== false) {
- $linenr_left = key($left);
- $linenr_right = key($right);
-
- if ($linenr_left < $linenr_right) {
- $coverageMerged[$linenr_left] = current($left);
- next($left);
- } elseif ($linenr_right < $linenr_left) {
- $coverageMerged[$linenr_right] = current($right);
- next($right);
- } else {
- if ((current($left) < 0) || (current($right) < 0)) {
- $coverageMerged[$linenr_right] = current($right);
- } else {
- $coverageMerged[$linenr_right] = current($left) + current($right);
- }
-
- next($left);
- next($right);
- }
- }
-
- while (current($left) !== false) {
- $coverageMerged[key($left)] = current($left);
- next($left);
- }
-
- while (current($right) !== false) {
- $coverageMerged[key($right)] = current($right);
- next($right);
- }
-
- return $coverageMerged;
- }
-
- /**
- * @param Project $project
- * @return Properties
- * @throws BuildException
- */
- protected static function _getDatabase($project)
- {
- $coverageDatabase = $project->getProperty('coverage.database');
-
- if (!$coverageDatabase) {
- throw new BuildException("Property coverage.database is not set - please include coverage-setup in your build file");
- }
-
- $database = new PhingFile($coverageDatabase);
-
- $props = new Properties();
- $props->load($database);
-
- return $props;
- }
-
- public static function getWhiteList($project)
- {
- $whitelist = array();
- $props = self::_getDatabase($project);
-
- foreach ($props->getProperties() as $property) {
- $data = unserialize($property);
- $whitelist[] = $data['fullname'];
- }
-
- return $whitelist;
- }
-
- public static function merge($project, $codeCoverageInformation)
- {
- $props = self::_getDatabase($project);
-
- $coverageTotal = $codeCoverageInformation;
-
- foreach ($coverageTotal as $filename => $data) {
- $ignoreLines = PHP_CodeCoverage_Util::getLinesToBeIgnored($filename);
-
- $lines = array();
- $filename = strtolower($filename);
-
- if ($props->getProperty($filename) != null) {
- foreach ($data as $_line => $_data) {
- if (is_array($_data)) {
- $count = count($_data);
- } else if(isset($ignoreLines[$_line])) {
- // line is marked as ignored
- $count = 1;
- } else if ($_data == -1) {
- // not executed
- $count = -1;
- } else if ($_data == -2) {
- // dead code
- $count = -2;
- }
-
- $lines[$_line] = $count;
- }
-
- ksort($lines);
-
- $file = unserialize($props->getProperty($filename));
- $left = $file['coverage'];
-
- $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $lines);
-
- $file['coverage'] = $coverageMerged;
- $props->setProperty($filename, serialize($file));
- }
- }
-
- $props->store();
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMergerTask.php b/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMergerTask.php
deleted file mode 100755
index fd141cb5..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageMergerTask.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/**
- * $Id: 324ec42a8015e3b82e90ee3bfaad1bc069fec409 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/Writer.php';
-require_once 'phing/system/util/Properties.php';
-require_once 'phing/tasks/ext/coverage/CoverageMerger.php';
-
-/**
- * Merges code coverage snippets into a code coverage database
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 324ec42a8015e3b82e90ee3bfaad1bc069fec409 $
- * @package phing.tasks.ext.coverage
- * @since 2.1.0
- */
-class CoverageMergerTask extends Task
-{
- /** the list of filesets containing the .php filename rules */
- private $filesets = array();
-
- /**
- * Add a new fileset containing the .php files to process
- *
- * @param FileSet the new fileset containing .php files
- */
- function addFileSet(FileSet $fileset)
- {
- $this->filesets[] = $fileset;
- }
-
- /**
- * Iterate over all filesets and return all the filenames.
- *
- * @return array an array of filenames
- */
- private function getFilenames()
- {
- $files = array();
-
- foreach ($this->filesets as $fileset)
- {
- $ds = $fileset->getDirectoryScanner($this->project);
- $ds->scan();
-
- $includedFiles = $ds->getIncludedFiles();
-
- foreach ($includedFiles as $file)
- {
- $fs = new PhingFile(basename($ds->getBaseDir()), $file);
-
- $files[] = $fs->getAbsolutePath();
- }
- }
-
- return $files;
- }
-
- function main()
- {
- $files = $this->getFilenames();
-
- $this->log("Merging " . count($files) . " coverage files");
-
- foreach ($files as $file)
- {
- $coverageInformation = unserialize(file_get_contents($file));
-
- CoverageMerger::merge($this->project, array($coverageInformation));
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTask.php b/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTask.php
deleted file mode 100755
index dbfc3093..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTask.php
+++ /dev/null
@@ -1,564 +0,0 @@
-<?php
-/**
- * $Id: 564bbde3ec5084ed2db570958548af2b9d1c1127 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/Writer.php';
-require_once 'phing/system/util/Properties.php';
-require_once 'phing/tasks/ext/phpunit/PHPUnitUtil.php';
-require_once 'phing/tasks/ext/coverage/CoverageReportTransformer.php';
-
-/**
- * Transforms information in a code coverage database to XML
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 564bbde3ec5084ed2db570958548af2b9d1c1127 $
- * @package phing.tasks.ext.coverage
- * @since 2.1.0
- */
-class CoverageReportTask extends Task
-{
- private $outfile = "coverage.xml";
-
- private $transformers = array();
-
- /** the classpath to use (optional) */
- private $classpath = NULL;
-
- /** the path to the GeSHi library (optional) */
- private $geshipath = "";
-
- /** the path to the GeSHi language files (optional) */
- private $geshilanguagespath = "";
-
- function setClasspath(Path $classpath)
- {
- if ($this->classpath === null)
- {
- $this->classpath = $classpath;
- }
- else
- {
- $this->classpath->append($classpath);
- }
- }
-
- function createClasspath()
- {
- $this->classpath = new Path();
- return $this->classpath;
- }
-
- function setGeshiPath($path)
- {
- $this->geshipath = $path;
- }
-
- function setGeshiLanguagesPath($path)
- {
- $this->geshilanguagespath = $path;
- }
-
- function __construct()
- {
- $this->doc = new DOMDocument();
- $this->doc->encoding = 'UTF-8';
- $this->doc->formatOutput = true;
- $this->doc->appendChild($this->doc->createElement('snapshot'));
- }
-
- function setOutfile($outfile)
- {
- $this->outfile = $outfile;
- }
-
- /**
- * Generate a report based on the XML created by this task
- */
- function createReport()
- {
- $transformer = new CoverageReportTransformer($this);
- $this->transformers[] = $transformer;
- return $transformer;
- }
-
- protected function getPackageElement($packageName)
- {
- $packages = $this->doc->documentElement->getElementsByTagName('package');
-
- foreach ($packages as $package)
- {
- if ($package->getAttribute('name') == $packageName)
- {
- return $package;
- }
- }
-
- return NULL;
- }
-
- protected function addClassToPackage($classname, $element)
- {
- $packageName = PHPUnitUtil::getPackageName($classname);
-
- $package = $this->getPackageElement($packageName);
-
- if ($package === NULL)
- {
- $package = $this->doc->createElement('package');
- $package->setAttribute('name', $packageName);
- $this->doc->documentElement->appendChild($package);
- }
-
- $package->appendChild($element);
- }
-
- /**
- * Adds a subpackage to their package
- *
- * @param string $packageName The name of the package
- * @param string $subpackageName The name of the subpackage
- *
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @return void
- */
- protected function addSubpackageToPackage($packageName, $subpackageName)
- {
- $package = $this->getPackageElement($packageName);
- $subpackage = $this->getSubpackageElement($subpackageName);
-
- if ($package === null) {
- $package = $this->doc->createElement('package');
- $package->setAttribute('name', $packageName);
- $this->doc->documentElement->appendChild($package);
- }
-
- if ($subpackage === null) {
- $subpackage = $this->doc->createElement('subpackage');
- $subpackage->setAttribute('name', $subpackageName);
- }
-
- $package->appendChild($subpackage);
- }
-
- /**
- * Returns the subpackage element
- *
- * @param string $subpackageName The name of the subpackage
- *
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @return DOMNode|null null when no DOMNode with the given name exists
- */
- protected function getSubpackageElement($subpackageName)
- {
- $subpackages = $this->doc->documentElement->getElementsByTagName('subpackage');
-
- foreach ($subpackages as $subpackage) {
- if ($subpackage->getAttribute('name') == $subpackageName) {
- return $subpackage;
- }
- }
-
- return null;
- }
-
- /**
- * Adds a class to their subpackage
- *
- * @param string $classname The name of the class
- * @param DOMNode $element The dom node to append to the subpackage element
- *
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @return void
- */
- protected function addClassToSubpackage($classname, $element)
- {
- $subpackageName = PHPUnitUtil::getSubpackageName($classname);
-
- $subpackage = $this->getSubpackageElement($subpackageName);
-
- if ($subpackage === null) {
- $subpackage = $this->doc->createElement('subpackage');
- $subpackage->setAttribute('name', $subpackageName);
- $this->doc->documentElement->appendChild($subpackage);
- }
-
- $subpackage->appendChild($element);
- }
-
- protected function stripDiv($source)
- {
- $openpos = strpos($source, "<div");
- $closepos = strpos($source, ">", $openpos);
-
- $line = substr($source, $closepos + 1);
-
- $tagclosepos = strpos($line, "</div>");
-
- $line = substr($line, 0, $tagclosepos);
-
- return $line;
- }
-
- protected function highlightSourceFile($filename)
- {
- if ($this->geshipath)
- {
- require_once $this->geshipath . '/geshi.php';
-
- $source = file_get_contents($filename);
-
- $geshi = new GeSHi($source, 'php', $this->geshilanguagespath);
-
- $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
-
- $geshi->enable_strict_mode(true);
-
- $geshi->enable_classes(true);
-
- $geshi->set_url_for_keyword_group(3, '');
-
- $html = $geshi->parse_code();
-
- $lines = preg_split("#</?li>#", $html);
-
- // skip first and last line
- array_pop($lines);
- array_shift($lines);
-
- $lines = array_filter($lines);
-
- $lines = array_map(array($this, 'stripDiv'), $lines);
-
- return $lines;
- }
- else
- {
- $lines = file($filename);
-
- for ($i = 0; $i < count($lines); $i++)
- {
- $line = $lines[$i];
-
- $line = rtrim($line);
-
- if (function_exists('mb_check_encoding') && mb_check_encoding($line, 'UTF-8')) {
- $lines[$i] = $line;
- }
- else if (function_exists('mb_convert_encoding'))
- {
- $lines[$i] = mb_convert_encoding($line, 'UTF-8');
- }
- else
- {
- $lines[$i] = utf8_encode($line);
- }
- }
-
- return $lines;
- }
- }
-
- protected function transformSourceFile($filename, $coverageInformation, $classStartLine = 1)
- {
- $sourceElement = $this->doc->createElement('sourcefile');
- $sourceElement->setAttribute('name', basename($filename));
-
- /**
- * Add original/full filename to document
- */
- $sourceElement->setAttribute('sourcefile', $filename);
-
- $filelines = $this->highlightSourceFile($filename);
-
- $linenr = 1;
-
- foreach ($filelines as $line)
- {
- $lineElement = $this->doc->createElement('sourceline');
- $lineElement->setAttribute('coveredcount', (isset($coverageInformation[$linenr]) ? $coverageInformation[$linenr] : '0'));
-
- if ($linenr == $classStartLine)
- {
- $lineElement->setAttribute('startclass', 1);
- }
-
- $textnode = $this->doc->createTextNode($line);
- $lineElement->appendChild($textnode);
-
- $sourceElement->appendChild($lineElement);
-
- $linenr++;
- }
-
- return $sourceElement;
- }
-
- /**
- * Transforms the coverage information
- *
- * @param string $filename The filename
- * @param array $coverageInformation Array with covergae information
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @return void
- */
- protected function transformCoverageInformation($filename, $coverageInformation)
- {
- $classes = PHPUnitUtil::getDefinedClasses($filename, $this->classpath);
-
- if (is_array($classes))
- {
- foreach ($classes as $classname)
- {
- $reflection = new ReflectionClass($classname);
-
- $methods = $reflection->getMethods();
-
- $classElement = $this->doc->createElement('class');
- $classElement->setAttribute('name', $reflection->getName());
-
- $packageName = PHPUnitUtil::getPackageName($reflection->getName());
- $subpackageName = PHPUnitUtil::getSubpackageName($reflection->getName());
-
- if ($subpackageName !== null) {
- $this->addSubpackageToPackage($packageName, $subpackageName);
- $this->addClassToSubpackage($reflection->getName(), $classElement);
- } else {
- $this->addClassToPackage($reflection->getName(), $classElement);
- }
-
- $classStartLine = $reflection->getStartLine();
-
- $methodscovered = 0;
- $methodcount = 0;
-
- // Strange PHP5 reflection bug, classes without parent class or implemented interfaces seem to start one line off
- if ($reflection->getParentClass() == NULL && count($reflection->getInterfaces()) == 0)
- {
- unset($coverageInformation[$classStartLine + 1]);
- }
- else
- {
- unset($coverageInformation[$classStartLine]);
- }
-
- // Remove out-of-bounds info
- unset($coverageInformation[0]);
-
- reset($coverageInformation);
-
- foreach ($methods as $method)
- {
- // PHP5 reflection considers methods of a parent class to be part of a subclass, we don't
- if ($method->getDeclaringClass()->getName() != $reflection->getName())
- {
- continue;
- }
-
- // small fix for XDEBUG_CC_UNUSED
- if (isset($coverageInformation[$method->getStartLine()]))
- {
- unset($coverageInformation[$method->getStartLine()]);
- }
-
- if (isset($coverageInformation[$method->getEndLine()]))
- {
- unset($coverageInformation[$method->getEndLine()]);
- }
-
- if ($method->isAbstract())
- {
- continue;
- }
-
- $linenr = key($coverageInformation);
-
- while ($linenr !== null && $linenr < $method->getStartLine())
- {
- next($coverageInformation);
- $linenr = key($coverageInformation);
- }
-
- $methodCoveredCount = 0;
- $methodTotalCount = 0;
-
- $methodHasCoveredLine = false;
-
- while ($linenr !== null && $linenr <= $method->getEndLine()) {
- $methodTotalCount++;
- $methodHasCoveredLine = true;
-
- // set covered when CODE is other than -1 (not executed)
- if ($coverageInformation[$linenr] > 0 || $coverageInformation[$linenr] == -2) {
- $methodCoveredCount++;
- }
-
- next($coverageInformation);
- $linenr = key($coverageInformation);
- }
-
- if (($methodTotalCount == $methodCoveredCount) && $methodHasCoveredLine) {
- $methodscovered++;
- }
-
- $methodcount++;
- }
-
- $statementcount = count(array_filter(
- $coverageInformation,
- create_function('$var', 'return ($var != -2);')
- ));
-
- $statementscovered = count(array_filter(
- $coverageInformation,
- create_function('$var', 'return ($var >= 0);')
- ));
-
- $classElement->appendChild($this->transformSourceFile($filename, $coverageInformation, $classStartLine));
-
- $classElement->setAttribute('methodcount', $methodcount);
- $classElement->setAttribute('methodscovered', $methodscovered);
- $classElement->setAttribute('statementcount', $statementcount);
- $classElement->setAttribute('statementscovered', $statementscovered);
- $classElement->setAttribute('totalcount', $methodcount + $statementcount);
- $classElement->setAttribute('totalcovered', $methodscovered + $statementscovered);
- }
- }
- }
-
- protected function calculateStatistics()
- {
- $packages = $this->doc->documentElement->getElementsByTagName('package');
-
- $totalmethodcount = 0;
- $totalmethodscovered = 0;
-
- $totalstatementcount = 0;
- $totalstatementscovered = 0;
-
- foreach ($packages as $package) {
- $methodcount = 0;
- $methodscovered = 0;
-
- $statementcount = 0;
- $statementscovered = 0;
-
- $subpackages = $package->getElementsByTagName('subpackage');
-
- foreach ($subpackages as $subpackage) {
- $subpackageMethodCount = 0;
- $subpackageMethodsCovered = 0;
-
- $subpackageStatementCount = 0;
- $subpackageStatementsCovered = 0;
-
- $subpackageClasses = $subpackage->getElementsByTagName('class');
-
- foreach ($subpackageClasses as $subpackageClass) {
- $subpackageMethodCount += $subpackageClass->getAttribute('methodcount');
- $subpackageMethodsCovered += $subpackageClass->getAttribute('methodscovered');
-
- $subpackageStatementCount += $subpackageClass->getAttribute('statementcount');
- $subpackageStatementsCovered += $subpackageClass->getAttribute('statementscovered');
- }
-
- $subpackage->setAttribute('methodcount', $subpackageMethodCount);
- $subpackage->setAttribute('methodscovered', $subpackageMethodsCovered);
-
- $subpackage->setAttribute('statementcount', $subpackageStatementCount);
- $subpackage->setAttribute('statementscovered', $subpackageStatementsCovered);
-
- $subpackage->setAttribute('totalcount', $subpackageMethodCount + $subpackageStatementCount);
- $subpackage->setAttribute('totalcovered', $subpackageMethodsCovered + $subpackageStatementsCovered);
- }
-
- $classes = $package->getElementsByTagName('class');
-
- foreach ($classes as $class) {
- $methodcount += $class->getAttribute('methodcount');
- $methodscovered += $class->getAttribute('methodscovered');
-
- $statementcount += $class->getAttribute('statementcount');
- $statementscovered += $class->getAttribute('statementscovered');
- }
-
- $package->setAttribute('methodcount', $methodcount);
- $package->setAttribute('methodscovered', $methodscovered);
-
- $package->setAttribute('statementcount', $statementcount);
- $package->setAttribute('statementscovered', $statementscovered);
-
- $package->setAttribute('totalcount', $methodcount + $statementcount);
- $package->setAttribute('totalcovered', $methodscovered + $statementscovered);
-
- $totalmethodcount += $methodcount;
- $totalmethodscovered += $methodscovered;
-
- $totalstatementcount += $statementcount;
- $totalstatementscovered += $statementscovered;
- }
-
- $this->doc->documentElement->setAttribute('methodcount', $totalmethodcount);
- $this->doc->documentElement->setAttribute('methodscovered', $totalmethodscovered);
-
- $this->doc->documentElement->setAttribute('statementcount', $totalstatementcount);
- $this->doc->documentElement->setAttribute('statementscovered', $totalstatementscovered);
-
- $this->doc->documentElement->setAttribute('totalcount', $totalmethodcount + $totalstatementcount);
- $this->doc->documentElement->setAttribute('totalcovered', $totalmethodscovered + $totalstatementscovered);
- }
-
- function main()
- {
- $coverageDatabase = $this->project->getProperty('coverage.database');
-
- if (!$coverageDatabase)
- {
- throw new BuildException("Property coverage.database is not set - please include coverage-setup in your build file");
- }
-
- $database = new PhingFile($coverageDatabase);
-
- $this->log("Transforming coverage report");
-
- $props = new Properties();
- $props->load($database);
-
- foreach ($props->keys() as $filename)
- {
- $file = unserialize($props->getProperty($filename));
-
- $this->transformCoverageInformation($file['fullname'], $file['coverage']);
- }
-
- $this->calculateStatistics();
-
- $this->doc->save($this->outfile);
-
- foreach ($this->transformers as $transformer)
- {
- $transformer->setXmlDocument($this->doc);
- $transformer->transform();
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTransformer.php b/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTransformer.php
deleted file mode 100755
index cc37800f..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageReportTransformer.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/**
- * $Id: c1667521b5959687560a1bf015905d627785a3c6 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/FileWriter.php';
-require_once 'phing/util/ExtendedFileStream.php';
-
-/**
- * Transform a Phing/Xdebug code coverage xml report.
- * The default transformation generates an html report in framed style.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: c1667521b5959687560a1bf015905d627785a3c6 $
- * @package phing.tasks.ext.coverage
- * @since 2.1.0
- */
-class CoverageReportTransformer
-{
- private $task = NULL;
- private $styleDir = "";
-
- /**
- * @var PhingFile
- */
- private $toDir = "";
-
- private $document = NULL;
-
- /** title of the project, used in the coverage report */
- private $title = "";
-
- /**
- * Whether to use the sorttable JavaScript library, defaults to false
- * See {@link http://www.kryogenix.org/code/browser/sorttable/)}
- *
- * @var boolean
- */
- private $useSortTable = false;
-
- function __construct(Task $task)
- {
- $this->task = $task;
- }
-
- function setStyleDir($styleDir)
- {
- $this->styleDir = $styleDir;
- }
-
- function setToDir(PhingFile $toDir)
- {
- $this->toDir = $toDir;
- }
-
- function setXmlDocument($document)
- {
- $this->document = $document;
- }
-
- /**
- * Setter for title parameter
- */
- function setTitle($title) {
- $this->title = $title;
- }
-
- /**
- * Sets whether to use the sorttable JavaScript library, defaults to false
- * See {@link http://www.kryogenix.org/code/browser/sorttable/)}
- *
- * @param boolean $useSortTable
- */
- public function setUseSortTable($useSortTable)
- {
- $this->useSortTable = (boolean) $useSortTable;
- }
-
- function transform()
- {
- if (!$this->toDir->exists())
- {
- throw new BuildException("Directory '" . $this->toDir . "' does not exist");
- }
-
- $xslfile = $this->getStyleSheet();
-
- $xsl = new DOMDocument();
- $xsl->load($xslfile->getAbsolutePath());
-
- $proc = new XSLTProcessor();
- if (defined('XSL_SECPREF_WRITE_FILE'))
- {
- if (version_compare(PHP_VERSION,'5.4',"<"))
- {
- ini_set("xsl.security_prefs", XSL_SECPREF_WRITE_FILE | XSL_SECPREF_CREATE_DIRECTORY);
- }
- else
- {
- $proc->setSecurityPrefs(XSL_SECPREF_WRITE_FILE | XSL_SECPREF_CREATE_DIRECTORY);
- }
- }
-
- $proc->importStyleSheet($xsl);
-
- ExtendedFileStream::registerStream();
-
- $toDir = (string) $this->toDir;
-
- // urlencode() the path if we're on Windows
- if (FileSystem::getFileSystem()->getSeparator() == '\\') {
- $toDir = urlencode($toDir);
- }
-
- // no output for the framed report
- // it's all done by extension...
- $proc->setParameter('', 'output.dir', $toDir);
-
- $proc->setParameter('', 'output.sorttable', $this->useSortTable);
- $proc->setParameter('', 'document.title', $this->title);
- $proc->transformToXML($this->document);
-
- ExtendedFileStream::unregisterStream();
- }
-
- private function getStyleSheet()
- {
- $xslname = "coverage-frames.xsl";
-
- if ($this->styleDir)
- {
- $file = new PhingFile($this->styleDir, $xslname);
- }
- else
- {
- $path = Phing::getResourcePath("phing/etc/$xslname");
-
- if ($path === NULL)
- {
- $path = Phing::getResourcePath("etc/$xslname");
-
- if ($path === NULL)
- {
- throw new BuildException("Could not find $xslname in resource path");
- }
- }
-
- $file = new PhingFile($path);
- }
-
- if (!$file->exists())
- {
- throw new BuildException("Could not find file " . $file->getPath());
- }
-
- return $file;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageSetupTask.php b/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageSetupTask.php
deleted file mode 100755
index 889a9042..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageSetupTask.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-/**
- * $Id: da84ff4b224cdf3a8061e02d782320ccc492c253 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/Writer.php';
-require_once 'phing/system/util/Properties.php';
-require_once 'phing/tasks/ext/coverage/CoverageMerger.php';
-
-/**
- * Initializes a code coverage database
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: da84ff4b224cdf3a8061e02d782320ccc492c253 $
- * @package phing.tasks.ext.coverage
- * @since 2.1.0
- */
-class CoverageSetupTask extends Task
-{
- /** the list of filesets containing the .php filename rules */
- private $filesets = array();
-
- /** Any filelists of files containing the .php filenames */
- private $filelists = array();
-
- /** the filename of the coverage database */
- private $database = "coverage.db";
-
- /** the classpath to use (optional) */
- private $classpath = NULL;
-
- /**
- * Add a new fileset containing the .php files to process
- *
- * @param FileSet the new fileset containing .php files
- */
- function addFileSet(FileSet $fileset)
- {
- $this->filesets[] = $fileset;
- }
-
- /**
- * Supports embedded <filelist> element.
- * @return FileList
- */
- function createFileList() {
- $num = array_push($this->filelists, new FileList());
- return $this->filelists[$num-1];
- }
-
- /**
- * Sets the filename of the coverage database to use
- *
- * @param string the filename of the database
- */
- function setDatabase($database)
- {
- $this->database = $database;
- }
-
- function setClasspath(Path $classpath)
- {
- if ($this->classpath === null)
- {
- $this->classpath = $classpath;
- }
- else
- {
- $this->classpath->append($classpath);
- }
- }
-
- function createClasspath()
- {
- $this->classpath = new Path();
- return $this->classpath;
- }
-
- /**
- * Iterate over all filesets and return the filename of all files.
- *
- * @return array an array of (basedir, filenames) pairs
- */
- private function getFilenames()
- {
- $files = array();
-
- foreach($this->filelists as $fl) {
- try {
- $list = $fl->getFiles($this->project);
- foreach($list as $file) {
- $fs = new PhingFile(strval($fl->getDir($this->project)), $file);
- $files[] = array('key' => strtolower($fs->getAbsolutePath()), 'fullname' => $fs->getAbsolutePath());
- }
- } catch (BuildException $be) {
- $this->log($be->getMessage(), Project::MSG_WARN);
- }
- }
-
-
- foreach ($this->filesets as $fileset)
- {
- $ds = $fileset->getDirectoryScanner($this->project);
- $ds->scan();
-
- $includedFiles = $ds->getIncludedFiles();
-
- foreach ($includedFiles as $file)
- {
- $fs = new PhingFile(realpath($ds->getBaseDir()), $file);
-
- $files[] = array('key' => strtolower($fs->getAbsolutePath()), 'fullname' => $fs->getAbsolutePath());
- }
- }
-
- return $files;
- }
-
- function init()
- {
- }
-
- function main()
- {
- $files = $this->getFilenames();
-
- $this->log("Setting up coverage database for " . count($files) . " files");
-
- $props = new Properties();
-
- foreach ($files as $file)
- {
- $fullname = $file['fullname'];
- $filename = $file['key'];
-
- $props->setProperty($filename, serialize(array('fullname' => $fullname, 'coverage' => array())));
- }
-
- $dbfile = new PhingFile($this->database);
-
- $props->store($dbfile);
-
- $this->project->setProperty('coverage.database', $dbfile->getAbsolutePath());
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageThresholdTask.php b/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageThresholdTask.php
deleted file mode 100644
index d9afbb00..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/coverage/CoverageThresholdTask.php
+++ /dev/null
@@ -1,458 +0,0 @@
-<?php
-/**
- * $Id: ed00d6f1d05bb5dc7c9967c9ec67fa6f958682ec $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/util/Properties.php';
-require_once 'phing/types/Excludes.php';
-
-/**
- * Stops the build if any of the specified coverage threshold was not reached
- *
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: ed00d6f1d05bb5dc7c9967c9ec67fa6f958682ec $
- * @package phing.tasks.ext.coverage
- * @since 2.4.1
- */
-class CoverageThresholdTask extends Task
-{
- /**
- * Holds an optional classpath
- *
- * @var Path
- */
- private $_classpath = null;
-
- /**
- * Holds the exclusions
- *
- * @var Excludes
- */
- private $_excludes = null;
-
- /**
- * Holds an optional database file
- *
- * @var PhingFile
- */
- private $_database = null;
-
- /**
- * Holds the coverage threshold for the entire project
- *
- * @var integer
- */
- private $_perProject = 25;
-
- /**
- * Holds the coverage threshold for any class
- *
- * @var integer
- */
- private $_perClass = 25;
-
- /**
- * Holds the coverage threshold for any method
- *
- * @var integer
- */
- private $_perMethod = 25;
-
- /**
- * Holds the minimum found coverage value for a class
- *
- * @var integer
- */
- private $_minClassCoverageFound = null;
-
- /**
- * Holds the minimum found coverage value for a method
- *
- * @var integer
- */
- private $_minMethodCoverageFound = null;
-
- /**
- * Number of statements in the entire project
- *
- * @var integer
- */
- private $_projectStatementCount = 0;
-
- /**
- * Number of covered statements in the entire project
- *
- * @var integer
- */
- private $_projectStatementsCovered = 0;
-
- /**
- * Whether to enable detailed logging
- *
- * @var boolean
- */
- private $_verbose = false;
-
- /**
- * Sets an optional classpath
- *
- * @param Path $classpath The classpath
- */
- public function setClasspath(Path $classpath)
- {
- if ($this->_classpath === null) {
- $this->_classpath = $classpath;
- } else {
- $this->_classpath->append($classpath);
- }
- }
-
- /**
- * Sets the optional coverage database to use
- *
- * @param PhingFile The database file
- */
- public function setDatabase(PhingFile $database)
- {
- $this->_database = $database;
- }
-
- /**
- * Create classpath object
- *
- * @return Path
- */
- public function createClasspath()
- {
- $this->classpath = new Path();
- return $this->classpath;
- }
-
- /**
- * Sets the coverage threshold for entire project
- *
- * @param integer $threshold Coverage threshold for entire project
- */
- public function setPerProject($threshold)
- {
- $this->_perProject = $threshold;
- }
-
- /**
- * Sets the coverage threshold for any class
- *
- * @param integer $threshold Coverage threshold for any class
- */
- public function setPerClass($threshold)
- {
- $this->_perClass = $threshold;
- }
-
- /**
- * Sets the coverage threshold for any method
- *
- * @param integer $threshold Coverage threshold for any method
- */
- public function setPerMethod($threshold)
- {
- $this->_perMethod = $threshold;
- }
-
- /**
- * Sets whether to enable detailed logging or not
- *
- * @param boolean $verbose
- */
- public function setVerbose($verbose)
- {
- $this->_verbose = StringHelper::booleanValue($verbose);
- }
-
- /**
- * Filter covered statements
- *
- * @param integer $var Coverage CODE/count
- * @return boolean
- */
- protected function filterCovered($var)
- {
- return ($var >= 0 || $var === -2);
- }
-
- /**
- * Create excludes object
- *
- * @return Excludes
- */
- public function createExcludes()
- {
- $this->_excludes = new Excludes($this->project);
- return $this->_excludes;
- }
-
- /**
- * Calculates the coverage threshold
- *
- * @param string $filename The filename to analyse
- * @param array $coverageInformation Array with coverage information
- */
- protected function calculateCoverageThreshold($filename, $coverageInformation)
- {
- $classes = PHPUnitUtil::getDefinedClasses($filename, $this->_classpath);
-
- if (is_array($classes)) {
- foreach ($classes as $className) {
- // Skip class if excluded from coverage threshold validation
- if ($this->_excludes !== null) {
- if (in_array($className, $this->_excludes->getExcludedClasses())) {
- continue;
- }
- }
-
- $reflection = new ReflectionClass($className);
- $classStartLine = $reflection->getStartLine();
-
- // Strange PHP5 reflection bug, classes without parent class
- // or implemented interfaces seem to start one line off
- if ($reflection->getParentClass() === null
- && count($reflection->getInterfaces()) === 0
- ) {
- unset($coverageInformation[$classStartLine + 1]);
- } else {
- unset($coverageInformation[$classStartLine]);
- }
-
- reset($coverageInformation);
-
- $methods = $reflection->getMethods();
-
- foreach ($methods as $method) {
- // PHP5 reflection considers methods of a parent class
- // to be part of a subclass, we don't
- if ($method->getDeclaringClass()->getName() != $reflection->getName()) {
- continue;
- }
-
- // Skip method if excluded from coverage threshold validation
- if ($this->_excludes !== null) {
- $excludedMethods = $this->_excludes->getExcludedMethods();
-
- if (isset($excludedMethods[$className])) {
- if (in_array($method->getName(), $excludedMethods[$className])
- || in_array($method->getName() . '()', $excludedMethods[$className])
- ) {
- continue;
- }
- }
- }
-
- $methodStartLine = $method->getStartLine();
- $methodEndLine = $method->getEndLine();
-
- // small fix for XDEBUG_CC_UNUSED
- if (isset($coverageInformation[$methodStartLine])) {
- unset($coverageInformation[$methodStartLine]);
- }
-
- if (isset($coverageInformation[$methodEndLine])) {
- unset($coverageInformation[$methodEndLine]);
- }
-
- if ($method->isAbstract()) {
- continue;
- }
-
- $lineNr = key($coverageInformation);
-
- while ($lineNr !== null && $lineNr < $methodStartLine) {
- next($coverageInformation);
- $lineNr = key($coverageInformation);
- }
-
- $methodStatementsCovered = 0;
- $methodStatementCount = 0;
-
- while ($lineNr !== null && $lineNr <= $methodEndLine) {
- $methodStatementCount++;
-
- $lineCoverageInfo = $coverageInformation[$lineNr];
- // set covered when CODE is other than -1 (not executed)
- if ($lineCoverageInfo > 0 || $lineCoverageInfo === -2) {
- $methodStatementsCovered++;
- }
-
- next($coverageInformation);
- $lineNr = key($coverageInformation);
- }
-
- if ($methodStatementCount > 0) {
- $methodCoverage = ( $methodStatementsCovered
- / $methodStatementCount) * 100;
- } else {
- $methodCoverage = 0;
- }
-
- if ($methodCoverage < $this->_perMethod
- && !$method->isAbstract()
- ) {
- throw new BuildException(
- 'The coverage (' . round($methodCoverage, 2) . '%) '
- . 'for method "' . $method->getName() . '" is lower'
- . ' than the specified threshold ('
- . $this->_perMethod . '%), see file: "'
- . $filename . '"'
- );
- } elseif ($methodCoverage < $this->_perMethod
- && $method->isAbstract()
- && $this->_verbose === true
- ) {
- $this->log(
- 'Skipped coverage threshold for abstract method "'
- . $method->getName() . '"'
- );
- }
-
- // store the minimum coverage value for logging (see #466)
- if ($this->_minMethodCoverageFound !== null) {
- if ($this->_minMethodCoverageFound > $methodCoverage) {
- $this->_minMethodCoverageFound = $methodCoverage;
- }
- } else {
- $this->_minMethodCoverageFound = $methodCoverage;
- }
- }
-
- $classStatementCount = count($coverageInformation);
- $classStatementsCovered = count(
- array_filter(
- $coverageInformation,
- array($this, 'filterCovered')
- )
- );
-
- if ($classStatementCount > 0) {
- $classCoverage = ( $classStatementsCovered
- / $classStatementCount) * 100;
- } else {
- $classCoverage = 0;
- }
-
- if ($classCoverage < $this->_perClass
- && !$reflection->isAbstract()
- ) {
- throw new BuildException(
- 'The coverage (' . round($classCoverage, 2) . '%) for class "'
- . $reflection->getName() . '" is lower than the '
- . 'specified threshold (' . $this->_perClass . '%), '
- . 'see file: "' . $filename . '"'
- );
- } elseif ($classCoverage < $this->_perClass
- && $reflection->isAbstract()
- && $this->_verbose === true
- ) {
- $this->log(
- 'Skipped coverage threshold for abstract class "'
- . $reflection->getName() . '"'
- );
- }
-
- // store the minimum coverage value for logging (see #466)
- if ($this->_minClassCoverageFound !== null) {
- if ($this->_minClassCoverageFound > $classCoverage) {
- $this->_minClassCoverageFound = $classCoverage;
- }
- } else {
- $this->_minClassCoverageFound = $classCoverage;
- }
-
- $this->_projectStatementCount += $classStatementCount;
- $this->_projectStatementsCovered += $classStatementsCovered;
- }
- }
- }
-
- public function main()
- {
- if ($this->_database === null) {
- $coverageDatabase = $this->project
- ->getProperty('coverage.database');
-
- if (! $coverageDatabase) {
- throw new BuildException(
- 'Either include coverage-setup in your build file or set '
- . 'the "database" attribute'
- );
- }
-
- $database = new PhingFile($coverageDatabase);
- } else {
- $database = $this->_database;
- }
-
- $this->log(
- 'Calculating coverage threshold: min. '
- . $this->_perProject . '% per project, '
- . $this->_perClass . '% per class and '
- . $this->_perMethod . '% per method is required'
- );
-
- $props = new Properties();
- $props->load($database);
-
- foreach ($props->keys() as $filename) {
- $file = unserialize($props->getProperty($filename));
-
- // Skip file if excluded from coverage threshold validation
- if ($this->_excludes !== null) {
- if (in_array($file['fullname'], $this->_excludes->getExcludedFiles())) {
- continue;
- }
- }
-
- $this->calculateCoverageThreshold(
- $file['fullname'],
- $file['coverage']
- );
- }
-
- if ($this->_projectStatementCount > 0) {
- $coverage = ( $this->_projectStatementsCovered
- / $this->_projectStatementCount) * 100;
- } else {
- $coverage = 0;
- }
-
- if ($coverage < $this->_perProject) {
- throw new BuildException(
- 'The coverage (' . round($coverage, 2) . '%) for the entire project '
- . 'is lower than the specified threshold ('
- . $this->_perProject . '%)'
- );
- }
-
- $this->log(
- 'Passed coverage threshold. Minimum found coverage values are: '
- . round($coverage, 2) . '% per project, '
- . round($this->_minClassCoverageFound, 2) . '% per class and '
- . round($this->_minMethodCoverageFound, 2) . '% per method'
- );
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/creole/CreoleSQLExecTask.php b/buildscripts/phing/classes/phing/tasks/ext/creole/CreoleSQLExecTask.php
deleted file mode 100755
index 1ea3d5ba..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/creole/CreoleSQLExecTask.php
+++ /dev/null
@@ -1,592 +0,0 @@
-<?php
-/*
- * $Id: f8f62d67a784faced2621d2ffc3b1c92e8703b05 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/creole/CreoleTask.php';
-include_once 'phing/system/io/StringReader.php';
-
-/**
- * Executes a series of SQL statements on a database using Creole.
- *
- * <p>Statements can
- * either be read in from a text file using the <i>src</i> attribute or from
- * between the enclosing SQL tags.</p>
- *
- * <p>Multiple statements can be provided, separated by semicolons (or the
- * defined <i>delimiter</i>). Individual lines within the statements can be
- * commented using either --, // or REM at the start of the line.</p>
- *
- * <p>The <i>autocommit</i> attribute specifies whether auto-commit should be
- * turned on or off whilst executing the statements. If auto-commit is turned
- * on each statement will be executed and committed. If it is turned off the
- * statements will all be executed as one transaction.</p>
- *
- * <p>The <i>onerror</i> attribute specifies how to proceed when an error occurs
- * during the execution of one of the statements.
- * The possible values are: <b>continue</b> execution, only show the error;
- * <b>stop</b> execution and commit transaction;
- * and <b>abort</b> execution and transaction and fail task.</p>
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Jeff Martin <jeff@custommonkey.org> (Ant)
- * @author Michael McCallum <gholam@xtra.co.nz> (Ant)
- * @author Tim Stephenson <tim.stephenson@sybase.com> (Ant)
- * @package phing.tasks.ext.creole
- * @version $Id: f8f62d67a784faced2621d2ffc3b1c92e8703b05 $
- */
-class CreoleSQLExecTask extends CreoleTask {
-
- private $goodSql = 0;
- private $totalSql = 0;
-
- const DELIM_ROW = "row";
- const DELIM_NORMAL = "normal";
-
- /**
- * Database connection
- */
- private $conn = null;
-
- /**
- * files to load
- */
- private $filesets = array();
-
- /**
- * all filterchains objects assigned to this task
- */
- private $filterChains = array();
-
- /**
- * SQL statement
- */
- private $statement = null;
-
- /**
- * SQL input file
- */
- private $srcFile = null;
-
- /**
- * SQL input command
- */
- private $sqlCommand = "";
-
- /**
- * SQL transactions to perform
- */
- private $transactions = array();
-
- /**
- * SQL Statement delimiter
- */
- private $delimiter = ";";
-
- /**
- * The delimiter type indicating whether the delimiter will
- * only be recognized on a line by itself
- */
- private $delimiterType = "normal"; // can't use constant just defined
-
- /**
- * Print SQL results.
- */
- private $print = false;
-
- /**
- * Print header columns.
- */
- private $showheaders = true;
-
- /**
- * Results Output file.
- */
- private $output = null;
-
-
- /**
- * Action to perform if an error is found
- **/
- private $onError = "abort";
-
- /**
- * Encoding to use when reading SQL statements from a file
- */
- private $encoding = null;
-
- /**
- * Append to an existing file or overwrite it?
- */
- private $append = false;
-
- /**
- * Set the name of the SQL file to be run.
- * Required unless statements are enclosed in the build file
- */
- public function setSrc(PhingFile $srcFile) {
- $this->srcFile = $srcFile;
- }
-
- /**
- * Set an inline SQL command to execute.
- * NB: Properties are not expanded in this text.
- */
- public function addText($sql) {
- $this->sqlCommand .= $sql;
- }
-
- /**
- * Adds a set of files (nested fileset attribute).
- */
- public function addFileset(FileSet $set) {
- $this->filesets[] = $set;
- }
-
- /**
- * Creates a filterchain
- *
- * @access public
- * @return object The created filterchain object
- */
- function createFilterChain() {
- $num = array_push($this->filterChains, new FilterChain($this->project));
- return $this->filterChains[$num-1];
- }
-
- /**
- * Add a SQL transaction to execute
- */
- public function createTransaction() {
- $t = new SQLExecTransaction($this);
- $this->transactions[] = $t;
- return $t;
- }
-
- /**
- * Set the file encoding to use on the SQL files read in
- *
- * @param encoding the encoding to use on the files
- */
- public function setEncoding($encoding) {
- $this->encoding = $encoding;
- }
-
- /**
- * Set the statement delimiter.
- *
- * <p>For example, set this to "go" and delimitertype to "ROW" for
- * Sybase ASE or MS SQL Server.</p>
- *
- * @param delimiter
- */
- public function setDelimiter($delimiter)
- {
- $this->delimiter = $delimiter;
- }
-
- /**
- * Set the Delimiter type for this sql task. The delimiter type takes two
- * values - normal and row. Normal means that any occurence of the delimiter
- * terminate the SQL command whereas with row, only a line containing just
- * the delimiter is recognized as the end of the command.
- *
- * @param string $delimiterType
- */
- public function setDelimiterType($delimiterType)
- {
- $this->delimiterType = $delimiterType;
- }
-
- /**
- * Set the print flag.
- *
- * @param boolean $print
- */
- public function setPrint($print)
- {
- $this->print = (boolean) $print;
- }
-
- /**
- * Print headers for result sets from the
- * statements; optional, default true.
- * @param boolean $showheaders
- */
- public function setShowheaders($showheaders) {
- $this->showheaders = (boolean) $showheaders;
- }
-
- /**
- * Set the output file;
- * optional, defaults to the console.
- * @param PhingFile $output
- */
- public function setOutput(PhingFile $output) {
- $this->output = $output;
- }
-
- /**
- * whether output should be appended to or overwrite
- * an existing file. Defaults to false.
- * @param $append
- */
- public function setAppend($append) {
- $this->append = (boolean) $append;
- }
-
-
- /**
- * Action to perform when statement fails: continue, stop, or abort
- * optional; default &quot;abort&quot;
- */
- public function setOnerror($action) {
- $this->onError = $action;
- }
-
- /**
- * Load the sql file and then execute it
- * @throws BuildException
- */
- public function main() {
-
- $savedTransaction = array();
- for($i=0,$size=count($this->transactions); $i < $size; $i++) {
- $savedTransaction[] = clone $this->transactions[$i];
- }
-
- $savedSqlCommand = $this->sqlCommand;
-
- $this->sqlCommand = trim($this->sqlCommand);
-
- try {
- if ($this->srcFile === null && $this->sqlCommand === ""
- && empty($this->filesets)) {
- if (count($this->transactions) === 0) {
- throw new BuildException("Source file or fileset, "
- . "transactions or sql statement "
- . "must be set!", $this->location);
- }
- }
-
- if ($this->srcFile !== null && !$this->srcFile->exists()) {
- throw new BuildException("Source file does not exist!", $this->location);
- }
-
- // deal with the filesets
- for ($i = 0,$size=count($this->filesets); $i < $size; $i++) {
- $fs = $this->filesets[$i];
- $ds = $fs->getDirectoryScanner($this->project);
- $srcDir = $fs->getDir($this->project);
-
- $srcFiles = $ds->getIncludedFiles();
-
- // Make a transaction for each file
- for ($j=0, $size=count($srcFiles); $j < $size; $j++) {
- $t = $this->createTransaction();
- $t->setSrc(new PhingFile($srcDir, $srcFiles[$j]));
- }
- }
-
- // Make a transaction group for the outer command
- $t = $this->createTransaction();
- if ($this->srcFile) $t->setSrc($this->srcFile);
- $t->addText($this->sqlCommand);
- $this->conn = $this->getConnection();
-
- try {
-
- $this->statement = $this->conn->createStatement();
-
- $out = null;
-
- try {
-
- if ($this->output !== null) {
- $this->log("Opening output file " . $this->output, Project::MSG_VERBOSE);
- $out = new BufferedWriter(new FileWriter($this->output->getAbsolutePath(), $this->append));
- }
-
- // Process all transactions
- for ($i=0,$size=count($this->transactions); $i < $size; $i++) {
- $this->transactions[$i]->runTransaction($out);
- if (!$this->isAutocommit()) {
- $this->log("Commiting transaction", Project::MSG_VERBOSE);
- $this->conn->commit();
- }
- }
- if ($out) $out->close();
- } catch (Exception $e) {
- if ($out) $out->close();
- throw $e;
- }
- } catch (IOException $e) {
- if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") {
- try {
- $this->conn->rollback();
- } catch (SQLException $ex) {}
- }
- throw new BuildException($e->getMessage(), $this->location);
- } catch (SQLException $e){
- if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") {
- try {
- $this->conn->rollback();
- } catch (SQLException $ex) {}
- }
- throw new BuildException($e->getMessage(), $this->location);
- }
-
- $this->log($this->goodSql . " of " . $this->totalSql .
- " SQL statements executed successfully");
- } catch (Exception $e) {
- $this->transactions = $savedTransaction;
- $this->sqlCommand = $savedSqlCommand;
- throw $e;
- }
- // finally {
- $this->transactions = $savedTransaction;
- $this->sqlCommand = $savedSqlCommand;
-
- }
-
-
- /**
- * read in lines and execute them
- * @throws SQLException, IOException
- */
- public function runStatements(Reader $reader, $out = null) {
- $sql = "";
- $line = "";
-
- $buffer = '';
-
- if ((is_array($this->filterChains)) && (!empty($this->filterChains))) {
- $in = FileUtils::getChainedReader(new BufferedReader($reader), $this->filterChains, $this->getProject());
- while(-1 !== ($read = $in->read())) { // -1 indicates EOF
- $buffer .= $read;
- }
- $lines = explode("\n", $buffer);
- } else {
- $in = new BufferedReader($reader);
-
- while (($line = $in->readLine()) !== null) {
- $lines[] = $line;
- }
- }
-
- try {
- foreach ($lines as $line) {
- $line = trim($line);
- $line = ProjectConfigurator::replaceProperties($this->project, $line,
- $this->project->getProperties());
-
- if (StringHelper::startsWith("//", $line) ||
- StringHelper::startsWith("--", $line) ||
- StringHelper::startsWith("#", $line)) {
- continue;
- }
-
- if (strlen($line) > 4
- && strtoupper(substr($line,0, 4)) == "REM ") {
- continue;
- }
-
- $sql .= " " . $line;
- $sql = trim($sql);
-
- // SQL defines "--" as a comment to EOL
- // and in Oracle it may contain a hint
- // so we cannot just remove it, instead we must end it
- if (strpos($line, "--") !== false) {
- $sql .= "\n";
- }
-
- if ($this->delimiterType == self::DELIM_NORMAL
- && StringHelper::endsWith($this->delimiter, $sql)
- || $this->delimiterType == self::DELIM_ROW
- && $line == $this->delimiter) {
- $this->log("SQL: " . $sql, Project::MSG_VERBOSE);
- $this->execSQL(StringHelper::substring($sql, 0, strlen($sql) - strlen($this->delimiter)), $out);
- $sql = "";
- }
- }
-
- // Catch any statements not followed by ;
- if ($sql !== "") {
- $this->execSQL($sql, $out);
- }
- } catch (SQLException $e) {
- throw new BuildException("Error running statements", $e);
- }
- }
-
-
- /**
- * Exec the sql statement.
- * @throws SQLException
- */
- protected function execSQL($sql, $out = null) {
- // Check and ignore empty statements
- if (trim($sql) == "") {
- return;
- }
-
- try {
- $this->totalSql++;
- if (!$this->statement->execute($sql)) {
- $this->log($this->statement->getUpdateCount() . " rows affected", Project::MSG_VERBOSE);
- } else {
- if ($this->print) {
- $this->printResults($out);
- }
- }
-
- $this->goodSql++;
-
- } catch (SQLException $e) {
- $this->log("Failed to execute: " . $sql, Project::MSG_ERR);
- if ($this->onError != "continue") {
- throw new BuildException("Failed to execute SQL", $e);
- }
- $this->log($e->getMessage(), Project::MSG_ERR);
- }
- }
-
- /**
- * print any results in the statement.
- * @throws SQLException
- */
- protected function printResults($out = null) {
-
- $rs = null;
- do {
- $rs = $this->statement->getResultSet();
-
- if ($rs !== null) {
-
- $this->log("Processing new result set.", Project::MSG_VERBOSE);
-
- $line = "";
-
- $colsprinted = false;
-
- while ($rs->next()) {
- $fields = $rs->getRow();
-
- if (!$colsprinted && $this->showheaders) {
- $first = true;
- foreach($fields as $fieldName => $ignore) {
- if ($first) $first = false; else $line .= ",";
- $line .= $fieldName;
- }
- if ($out !== null) {
- $out->write($line);
- $out->newLine();
- } else {
- print($line.PHP_EOL);
- }
- $line = "";
- $colsprinted = true;
- } // if show headers
-
- $first = true;
- foreach($fields as $columnValue) {
-
- if ($columnValue != null) {
- $columnValue = trim($columnValue);
- }
-
- if ($first) {
- $first = false;
- } else {
- $line .= ",";
- }
- $line .= $columnValue;
- }
-
- if ($out !== null) {
- $out->write($line);
- $out->newLine();
- } else {
- print($line . PHP_EOL);
- }
- $line = "";
-
- } // while rs->next()
- }
- } while ($this->statement->getMoreResults());
- print(PHP_EOL);
- if ($out !== null) $out->newLine();
- }
-}
-
-
-/**
- * "Inner" class that contains the definition of a new transaction element.
- * Transactions allow several files or blocks of statements
- * to be executed using the same JDBC connection and commit
- * operation in between.
- *
- * @package phing.tasks.ext.creole
- */
-class SQLExecTransaction {
-
- private $tSrcFile = null;
- private $tSqlCommand = "";
- private $parent;
-
- function __construct($parent)
- {
- // Parent is required so that we can log things ...
- $this->parent = $parent;
- }
-
- public function setSrc(PhingFile $src)
- {
- $this->tSrcFile = $src;
- }
-
- public function addText($sql)
- {
- $this->tSqlCommand .= $sql;
- }
-
- /**
- * @throws IOException, SQLException
- */
- public function runTransaction($out = null)
- {
- if (!empty($this->tSqlCommand)) {
- $this->parent->log("Executing commands", Project::MSG_INFO);
- $this->parent->runStatements(new StringReader($this->tSqlCommand), $out);
- }
-
- if ($this->tSrcFile !== null) {
- $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(),
- Project::MSG_INFO);
-
- $reader = new FileReader($this->tSrcFile);
-
- $this->parent->runStatements($reader, $out);
- $reader->close();
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/creole/CreoleTask.php b/buildscripts/phing/classes/phing/tasks/ext/creole/CreoleTask.php
deleted file mode 100755
index 6cff2033..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/creole/CreoleTask.php
+++ /dev/null
@@ -1,242 +0,0 @@
-<?php
-
-/*
- * $Id: 91a6dbbd682e6afa8befa95f01ae5fbaed11a72a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/types/Reference.php';
-
-/**
- * Handles Creole configuration needed by SQL type tasks.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Nick Chalko <nick@chalko.com> (Ant)
- * @author Jeff Martin <jeff@custommonkey.org> (Ant)
- * @author Michael McCallum <gholam@xtra.co.nz> (Ant)
- * @author Tim Stephenson <tim.stephenson@sybase.com> (Ant)
- * @version $Id$
- * @package phing.tasks.system
- */
-abstract class CreoleTask extends Task {
-
- /**
- * Used for caching loaders / driver. This is to avoid
- * getting an OutOfMemoryError when calling this task
- * multiple times in a row.
- *
- * NOT IMPLEMENTED YET
- */
- private static $loaderMap = array();
-
- private $caching = true;
-
- /**
- * Autocommit flag. Default value is false
- */
- private $autocommit = false;
-
- /**
- * [optional] Classpath to Creole driver to use.
- * @param string
- */
- private $driver;
-
- /**
- * DB url.
- */
- private $url;
-
- /**
- * User name.
- */
- private $userId;
-
- /**
- * Password
- */
- private $password;
-
- /**
- * RDBMS Product needed for this SQL.
- **/
- private $rdbms;
-
- /**
- * Initialize CreoleTask.
- * This method includes any necessary Creole libraries and triggers
- * appropriate error if they cannot be found. This is not done in header
- * because we may want this class to be loaded w/o triggering an error.
- */
- function init() {
- include_once 'creole/Creole.php';
- if (!class_exists('Creole')) {
- throw new Exception("Creole task depends on Creole classes being on include_path. (i.e. include of 'creole/Creole.php' failed.)");
- }
- }
-
- /**
- * Caching loaders / driver. This is to avoid
- * getting an OutOfMemoryError when calling this task
- * multiple times in a row; default: true
- * @param $enable
- */
- public function setCaching($enable) {
- $this->caching = $enable;
- }
-
- /**
- * Sets the database connection URL; required.
- * @param url The url to set
- */
- public function setUrl($url) {
- $this->url = $url;
- }
-
- /**
- * Set the Creole driver to be used.
- *
- * @param string $driver driver class name
- */
- public function setDriver($driver)
- {
- $this->driver = $driver;
- }
-
- /**
- * Sets the password; required.
- * @param password The password to set
- */
- public function setPassword($password) {
- $this->password = $password;
- }
-
- /**
- * Auto commit flag for database connection;
- * optional, default false.
- * @param autocommit The autocommit to set
- */
- public function setAutocommit($autocommit) {
- $this->autocommit = $autocommit;
- }
-
- /**
- * Sets the version string, execute task only if
- * rdbms version match; optional.
- * @param version The version to set
- */
- public function setVersion($version) {
- $this->version = $version;
- }
-
- protected function getLoaderMap() {
- return self::$loaderMap;
- }
-
-
- /**
- * Creates a new Connection as using the driver, url, userid and password specified.
- * The calling method is responsible for closing the connection.
- * @return Connection the newly created connection.
- * @throws BuildException if the UserId/Password/Url is not set or there is no suitable driver or the driver fails to load.
- */
- protected function getConnection() {
-
- if ($this->url === null) {
- throw new BuildException("Url attribute must be set!", $this->location);
- }
-
- try {
-
- $this->log("Connecting to " . $this->getUrl(), Project::MSG_VERBOSE);
- $info = new Properties();
-
- $dsn = Creole::parseDSN($this->url);
-
- if (!isset($dsn["username"]) && $this->userId === null) {
- throw new BuildException("Username must be in URL or userid attribute must be set.", $this->location);
- }
-
- if ($this->userId) {
- $dsn["username"] = $this->getUserId();
- }
-
- if ($this->password) {
- $dsn["password"] = $this->getPassword();
- }
-
- if ($this->driver) {
- Creole::registerDriver($dsn['phptype'], $this->driver);
- }
-
- $conn = Creole::getConnection($dsn);
- $conn->setAutoCommit($this->autocommit);
- return $conn;
-
- } catch (SQLException $e) {
- throw new BuildException($e->getMessage(), $this->location);
- }
-
- }
-
- public function isCaching($value) {
- $this->caching = $value;
- }
-
- /**
- * Gets the autocommit.
- * @return Returns a boolean
- */
- public function isAutocommit() {
- return $this->autocommit;
- }
-
- /**
- * Gets the url.
- * @return Returns a String
- */
- public function getUrl() {
- return $this->url;
- }
-
- /**
- * Gets the userId.
- * @return Returns a String
- */
- public function getUserId() {
- return $this->userId;
- }
-
- /**
- * Set the user name for the connection; required.
- * @param userId The userId to set
- */
- public function setUserid($userId) {
- $this->userId = $userId;
- }
-
- /**
- * Gets the password.
- * @return Returns a String
- */
- public function getPassword() {
- return $this->password;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbDeployTask.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbDeployTask.php
deleted file mode 100755
index a5cc23ff..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbDeployTask.php
+++ /dev/null
@@ -1,436 +0,0 @@
-<?php
-/*
- * $Id: 035d43c0c50ca9567e9c8a016fef6a3053164acb $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php';
-
-
-/**
- * Generate SQL script for db using dbdeploy schema version table
- * and delta scripts
- *
- * <dbdeploy url="mysql:host=localhost;dbname=test"
- * userid="dbdeploy" password="dbdeploy" dir="db" outputfile="">
- *
- * @author Luke Crouch at SourceForge (http://sourceforge.net)
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-class DbDeployTask extends Task
-{
- /**
- * The tablename to use from the database for storing all changes
- * This cannot be changed
- *
- * @var string
- */
- public static $TABLE_NAME = 'changelog';
-
- /**
- * Connection string for the database connection
- *
- * @var string
- */
- protected $url;
-
- /**
- * The userid for the database connection
- *
- * @var string
- */
- protected $userid;
-
- /**
- * The password of the database user
- *
- * @var string
- */
- protected $password;
-
- /**
- * Path to the directory that holds the database patch files
- *
- * @var string
- */
- protected $dir;
-
- /**
- * Output file for performing all database patches of this deployment
- * Contains all the SQL statements that need to be executed
- *
- * @var string
- */
- protected $outputFile = 'dbdeploy_deploy.sql';
-
- /**
- * Outputfile for undoing the database patches of this deployment
- * Contains all the SQL statements that need to be executed
- *
- * @var string
- */
- protected $undoOutputFile = 'dbdeploy_undo.sql';
-
- /**
- * The deltaset that's being used
- *
- * @var string
- */
- protected $deltaSet = 'Main';
-
- /**
- * The number of the last change to apply
- *
- * @var int
- */
- protected $lastChangeToApply = 999;
-
- /**
- * Contains the object for the DBMS that is used
- *
- * @var object
- */
- protected $dbmsSyntax = null;
-
- /**
- * Array with all change numbers that are applied already
- *
- * @var array
- */
- protected $appliedChangeNumbers = array();
-
- /**
- * Checkall attribute
- * False means dbdeploy will only apply patches that have a higher number
- * than the last patchnumber that was applied
- * True means dbdeploy will apply all changes that aren't applied
- * already (in ascending order)
- *
- * @var int
- */
- protected $checkall = false;
-
- /**
- * The main function for the task
- *
- * @throws BuildException
- * @return void
- */
- public function main()
- {
- try {
- // get correct DbmsSyntax object
- $dbms = substr($this->url, 0, strpos($this->url, ':'));
- $dbmsSyntaxFactory = new DbmsSyntaxFactory($dbms);
- $this->dbmsSyntax = $dbmsSyntaxFactory->getDbmsSyntax();
-
- // figure out which revisions are in the db already
- $this->appliedChangeNumbers = $this->getAppliedChangeNumbers();
- $this->log('Current db revision: '.$this->getLastChangeAppliedInDb());
- $this->log('Checkall: ' . $this->checkall);
-
- $this->deploy();
-
- } catch (Exception $e) {
- throw new BuildException($e);
- }
- }
-
- /**
- * Get the numbers of all the patches that are already applied according to
- * the changelog table in the database
- *
- * @return array
- */
- protected function getAppliedChangeNumbers()
- {
- if (count($this->appliedChangeNumbers) == 0) {
- $this->log('Getting applied changed numbers from DB: ' . $this->url);
- $appliedChangeNumbers = array();
- $dbh = new PDO($this->url, $this->userid, $this->password);
- $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- $sql = "SELECT *
- FROM " . DbDeployTask::$TABLE_NAME . "
- WHERE delta_set = '$this->deltaSet'
- ORDER BY change_number";
- foreach ($dbh->query($sql) as $change) {
- $appliedChangeNumbers[] = $change['change_number'];
- }
- $this->appliedChangeNumbers = $appliedChangeNumbers;
- }
- return $this->appliedChangeNumbers;
- }
-
- /**
- * Get the number of the last patch applied to the database
- *
- * @return int|mixed The highest patch number that is applied in the db
- */
- protected function getLastChangeAppliedInDb()
- {
- return (count($this->appliedChangeNumbers) > 0)
- ? max($this->appliedChangeNumbers) : 0;
- }
-
- /**
- * Create the deploy and undo deploy outputfiles
- *
- * @return void
- */
- protected function deploy()
- {
- // create deploy outputfile
- $this->createOutputFile($this->outputFile, false);
-
- // create undo deploy outputfile
- $this->createOutputFile($this->undoOutputFile, true);
- }
-
- /**
- * Generate the sql for doing/undoing the deployment and write it to a file
- *
- * @param string $file
- * @param bool $undo
- * @return void
- */
- protected function createOutputFile($file, $undo = false)
- {
- $fileHandle = fopen($file, "w+");
- $sql = $this->generateSql($undo);
- fwrite($fileHandle, $sql);
- }
-
- /**
- * Generate the sql for doing/undoing this deployment
- *
- * @param bool $undo
- * @return string The sql
- */
- protected function generateSql($undo = false)
- {
- $sql = '';
- $lastChangeAppliedInDb = $this->getLastChangeAppliedInDb();
- $files = $this->getDeltasFilesArray();
- $this->sortFiles($files, $undo);
-
- foreach ($files as $fileChangeNumber => $fileName) {
- if ($this->fileNeedsToBeRead($fileChangeNumber, $lastChangeAppliedInDb)) {
- $sql .= '-- Fragment begins: ' . $fileChangeNumber . ' --' . "\n";
-
- if (!$undo) {
- $sql .= 'INSERT INTO ' . DbDeployTask::$TABLE_NAME . '
- (change_number, delta_set, start_dt, applied_by, description)' .
- ' VALUES (' . $fileChangeNumber . ', \'' . $this->deltaSet . '\', ' .
- $this->dbmsSyntax->generateTimestamp() .
- ', \'dbdeploy\', \'' . $fileName . '\');' . "\n";
- }
-
- // read the file
- $fullFileName = $this->dir . '/' . $fileName;
- $fh = fopen($fullFileName, 'r');
- $contents = fread($fh, filesize($fullFileName));
- // allow construct with and without space added
- $split = strpos($contents, '-- //@UNDO');
- if ($split === false)
- $split = strpos($contents, '--//@UNDO');
-
- if ($undo) {
- $sql .= substr($contents, $split + 10) . "\n";
- $sql .= 'DELETE FROM ' . DbDeployTask::$TABLE_NAME . '
- WHERE change_number = ' . $fileChangeNumber . '
- AND delta_set = \'' . $this->deltaSet . '\';' . "\n";
- } else {
- $sql .= substr($contents, 0, $split);
- $sql .= 'UPDATE ' . DbDeployTask::$TABLE_NAME . '
- SET complete_dt = ' . $this->dbmsSyntax->generateTimestamp() . '
- WHERE change_number = ' . $fileChangeNumber . '
- AND delta_set = \'' . $this->deltaSet . '\';' . "\n";
- }
-
- $sql .= '-- Fragment ends: ' . $fileChangeNumber . ' --' . "\n";
- }
- }
-
- return $sql;
- }
-
- /**
- * Get a list of all the patch files in the patch file directory
- *
- * @return array
- */
- protected function getDeltasFilesArray()
- {
- $files = array();
- $baseDir = realpath($this->dir);
- $dh = opendir($baseDir);
- $fileChangeNumberPrefix = '';
- while (($file = readdir($dh)) !== false) {
- if (preg_match('[\d+]', $file, $fileChangeNumberPrefix)) {
- $files[intval($fileChangeNumberPrefix[0])] = $file;
- }
- }
- return $files;
- }
-
- /**
- * Sort files in the patch files directory (ascending or descending depending on $undo boolean)
- *
- * @param array $files
- * @param bool $undo
- * @return void
- */
- protected function sortFiles(&$files, $undo)
- {
- if ($undo) {
- krsort($files);
- } else {
- ksort($files);
- }
- }
-
- /**
- * Determine if this patch file need to be deployed
- * (using fileChangeNumber, lastChangeAppliedInDb and $this->checkall)
- *
- * @param int $fileChangeNumber
- * @param string $lastChangeAppliedInDb
- * @return bool True or false if patch file needs to be deployed
- */
- protected function fileNeedsToBeRead($fileChangeNumber, $lastChangeAppliedInDb)
- {
- if ($this->checkall) {
- return (!in_array($fileChangeNumber, $this->appliedChangeNumbers));
- } else {
- return ($fileChangeNumber > $lastChangeAppliedInDb && $fileChangeNumber <= $this->lastChangeToApply);
- }
- }
-
- /**
- * Set the url for the database connection
- *
- * @param string $url
- * @return void
- */
- public function setUrl($url)
- {
- $this->url = $url;
- }
-
- /**
- * Set the userid for the database connection
- *
- * @param string $userid
- * @return void
- */
- public function setUserId($userid)
- {
- $this->userid = $userid;
- }
-
- /**
- * Set the password for the database connection
- *
- * @param string $password
- * @return void
- */
- public function setPassword($password)
- {
- $this->password = $password;
- }
-
- /**
- * Set the directory where to find the patchfiles
- *
- * @param string $dir
- * @return void
- */
- public function setDir($dir)
- {
- $this->dir = $dir;
- }
-
- /**
- * Set the outputfile which contains all patch sql statements for this deployment
- *
- * @param string $outputFile
- * @return void
- */
- public function setOutputFile($outputFile)
- {
- $this->outputFile = $outputFile;
- }
-
- /**
- * Set the undo outputfile which contains all undo statements for this deployment
- *
- * @param string $undoOutputFile
- * @return void
- */
- public function setUndoOutputFile($undoOutputFile)
- {
- $this->undoOutputFile = $undoOutputFile;
- }
-
- /**
- * Set the lastchangetoapply property
- *
- * @param int $lastChangeToApply
- * @return void
- */
- public function setLastChangeToApply($lastChangeToApply)
- {
- $this->lastChangeToApply = $lastChangeToApply;
- }
-
- /**
- * Set the deltaset property
- *
- * @param string $deltaSet
- * @return void
- */
- public function setDeltaSet($deltaSet)
- {
- $this->deltaSet = $deltaSet;
- }
-
- /**
- * Set the checkall property
- *
- * @param bool $checkall
- * @return void
- */
- public function setCheckAll($checkall)
- {
- $this->checkall = (int)$checkall;
- }
-
- /**
- * Add a new fileset.
- * @return FileSet
- */
- public function createFileSet()
- {
- $this->fileset = new FileSet();
- $this->filesets[] = $this->fileset;
- return $this->fileset;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntax.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntax.php
deleted file mode 100755
index f20d2df4..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntax.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*
- * $Id: 40826765e423da7500094b84f0025f75c8fdde87 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Utility class for generating necessary server-specific SQL commands
- *
- * @author Luke Crouch at SourceForge (http://sourceforge.net)
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-
-abstract class DbmsSyntax
-{
- public abstract function generateTimestamp();
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php
deleted file mode 100755
index 1cc163f5..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxFactory.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * $Id: 0efe41b73233dd4396055518a125e4ff642693c5 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/dbdeploy/DbmsSyntax.php';
-
-/**
- * Factory for generating dbms-specific syntax-generating objects
- *
- * @author Luke Crouch at SourceForge (http://sourceforge.net)
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-
-class DbmsSyntaxFactory
-{
- private $dbms;
-
- public function __construct($dbms)
- {
- $this->dbms = $dbms;
- }
-
- public function getDbmsSyntax()
- {
- switch ($this->dbms){
- case('sqlite') :
- require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php';
- return new DbmsSyntaxSQLite();
- case('mysql'):
- require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php';
- return new DbmsSyntaxMysql();
- case 'odbc':
- case('mssql'):
- case 'dblib':
- require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php';
- return new DbmsSyntaxMsSql();
- case('pgsql'):
- require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxPgSQL.php';
- return new DbmsSyntaxPgSQL();
- case 'oci':
- require_once 'phing/tasks/ext/dbdeploy/DbmsSyntaxOracle.php';
- return new DbmsSyntaxOracle();
- default:
- throw new Exception($this->dbms . ' is not supported by dbdeploy task.');
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php
deleted file mode 100755
index 0b505d8e..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMsSql.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * $Id: 10012c2626ef9befc8c18efa5898704e269d6164 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Utility class for generating necessary server-specific SQL commands
- *
- * @author Luke Crouch at SourceForge (http://sourceforge.net)
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-
-class DbmsSyntaxMsSql extends DbmsSyntax
-{
- public function generateTimestamp()
- {
- return "DATEDIFF(s, '19700101', GETDATE())";
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php
deleted file mode 100755
index 86bf8ae0..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxMysql.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * $Id: 3a8bab5e99f20e29f5c7dfe7d02f7a91fb8ccecd $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Utility class for generating necessary server-specific SQL commands
- *
- * @author Luke Crouch at SourceForge (http://sourceforge.net)
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-
-class DbmsSyntaxMysql extends DbmsSyntax
-{
- public function generateTimestamp()
- {
- return "NOW()";
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxOracle.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxOracle.php
deleted file mode 100755
index 15b0b0a0..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxOracle.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * $Id: be6f99d787b94f7f2c1c8e359def3d465386bba9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Utility class for generating necessary server-specific SQL commands
- *
- * @author Luke Crouch at SourceForge (http://sourceforge.net)
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-
-class DbmsSyntaxOracle extends DbmsSyntax
-{
- public function generateTimestamp()
- {
- return "(sysdate - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400)";
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxPgSQL.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxPgSQL.php
deleted file mode 100755
index 6c07931c..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxPgSQL.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/*
- * $Id: 17845f06b311dbe508e7cb1244cd849a1d3fcada $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Utility class for generating necessary server-specific SQL commands
- *
- * @author R�my BREUILS
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-class DbmsSyntaxPgSQL extends DbmsSyntax
-{
- public function generateTimestamp()
- {
- return "NOW()";
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php b/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php
deleted file mode 100755
index 32aa023e..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/dbdeploy/DbmsSyntaxSQLite.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/*
- * $Id: a48723b4c3ef1e5c15417f5ea6e495960e5e018b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Utility class for generating necessary server-specific SQL commands
- *
- * @author Luke Crouch at SourceForge (http://sourceforge.net)
- * @version $Id$
- * @package phing.tasks.ext.dbdeploy
- */
-
-class DbmsSyntaxSQLite extends DbmsSyntax
-{
- public function generateTimestamp()
- {
- return "strftime('%s','now')";
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/docblox/DocBloxTask.php b/buildscripts/phing/classes/phing/tasks/ext/docblox/DocBloxTask.php
deleted file mode 100755
index 0c1556c8..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/docblox/DocBloxTask.php
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-/*
- * $Id: eaa494390770adc752097a412d63fb863482fd5d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/FileOutputStream.php';
-
-/**
- * DocBlox Task (http://www.docblox-project.org)
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: eaa494390770adc752097a412d63fb863482fd5d $
- * @since 2.4.6
- * @package phing.tasks.ext.docblox
- */
-class DocBloxTask extends Task
-{
- /**
- * List of filesets
- * @var FileSet[]
- */
- private $filesets = array();
-
- /**
- * Destination/target directory
- * @var PhingFile
- */
- private $destDir = null;
-
- /**
- * name of the template to use
- * @var string
- */
- private $template = "new_black";
-
- /**
- * Title of the project
- * @var string
- */
- private $title = "";
-
- /**
- * Force DocBlox to be quiet
- * @var boolean
- */
- private $quiet = true;
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- *
- * @return FileSet
- */
- public function createFileSet()
- {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Sets destination/target directory
- * @param PhingFile $destDir
- */
- public function setDestDir(PhingFile $destDir)
- {
- $this->destDir = $destDir;
- }
-
- /**
- * Convenience setter (@see setDestDir)
- * @param PhingFile $output
- */
- public function setOutput(PhingFile $output)
- {
- $this->destDir = $output;
- }
-
- /**
- * Sets the template to use
- * @param strings $template
- */
- public function setTemplate($template)
- {
- $this->template = (string) $template;
- }
-
- /**
- * Sets the title of the project
- * @param strings $title
- */
- public function setTitle($title)
- {
- $this->title = (string) $title;
- }
-
- /**
- * Forces DocBlox to be quiet
- * @param boolean $quiet
- */
- public function setQuiet($quiet)
- {
- $this->quiet = (boolean) $quiet;
- }
-
- /**
- * Finds and initializes the DocBlox installation
- */
- private function initializeDocBlox()
- {
- $docbloxPath = null;
-
- foreach (explode(PATH_SEPARATOR, get_include_path()) as $path) {
- $testDocBloxPath = $path . DIRECTORY_SEPARATOR . 'DocBlox' . DIRECTORY_SEPARATOR . 'src';
-
- if (file_exists($testDocBloxPath)) {
- $docbloxPath = $testDocBloxPath;
- }
- }
-
- if (empty($docbloxPath)) {
- throw new BuildException("Please make sure DocBlox is installed and on the include_path.", $this->getLocation());
- }
-
- set_include_path($docbloxPath . PATH_SEPARATOR . get_include_path());
-
- require_once $docbloxPath.'/DocBlox/Bootstrap.php';
-
- $bootstrap = DocBlox_Bootstrap::createInstance();
-
- $autoloader = $bootstrap->registerAutoloader();
-
- if ($this->quiet) {
- DocBlox_Core_Abstract::config()->logging->level = 'quiet';
- } else {
- DocBlox_Core_Abstract::config()->logging->level = 'debug';
- }
-
- $bootstrap->registerPlugins($autoloader);
- }
-
- /**
- * Build a list of files (from the fileset elements) and call the DocBlox parser
- * @return string
- */
- private function parseFiles()
- {
- $parser = new DocBlox_Parser();
-
- //Only initialize the dispatcher when not already done
- if (is_null(DocBlox_Parser_Abstract::$event_dispatcher)) {
- DocBlox_Parser_Abstract::$event_dispatcher = new sfEventDispatcher();
- }
- $parser->setTitle($this->title);
-
- $paths = array();
-
- // filesets
- foreach ($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($this->project);
- $dir = $fs->getDir($this->project);
- $srcFiles = $ds->getIncludedFiles();
-
- foreach ($srcFiles as $file) {
- $paths[] = $dir . FileSystem::getFileSystem()->getSeparator() . $file;
- }
- }
-
- $this->log("Will parse " . count($paths) . " file(s)", Project::MSG_VERBOSE);
-
- $files = new DocBlox_Parser_Files();
- $files->addFiles($paths);
-
- $parser->setPath($files->getProjectRoot());
-
- return $parser->parseFiles($files);
- }
-
- /**
- * Task entry point
- * @see Task::main()
- */
- public function main()
- {
- if (empty($this->destDir)) {
- throw new BuildException("You must supply the 'destdir' attribute", $this->getLocation());
- }
-
- if (empty($this->filesets)) {
- throw new BuildException("You have not specified any files to include (<fileset>)", $this->getLocation());
- }
-
- $this->initializeDocBlox();
-
- $xml = $this->parseFiles();
-
- $this->log("Transforming...", Project::MSG_VERBOSE);
-
- $transformer = new DocBlox_Transformer();
- $transformer->setTemplatesPath(DocBlox_Core_Abstract::config()->paths->templates);
- $transformer->setTemplates($this->template);
- $transformer->setSource($xml);
- $transformer->setTarget($this->destDir->getAbsolutePath());
- $transformer->execute();
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitBaseTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitBaseTask.php
deleted file mode 100644
index 8381cc64..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitBaseTask.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-/*
- * $Id: 5ffc8c9c51dfa9bd0d691a88db670cdeb5f985c1 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/BuildException.php';
-
-/**
- * Base class for Git tasks
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 5ffc8c9c51dfa9bd0d691a88db670cdeb5f985c1 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-abstract class GitBaseTask extends Task
-{
- /**
- * Bath to git binary
- * @var string
- */
- private $gitPath = '/usr/bin/git';
-
- /**
- * @var VersionControl_Git
- */
- private $gitClient = null;
-
- /**
- * Current repository directory
- * @var string
- */
- private $repository;
-
- /**
- * Initialize Task.
- * Check and include necessary libraries.
- */
- public function init()
- {
- @include_once 'VersionControl/Git.php';
- if (false == class_exists('VersionControl_Git')) {
- throw new BuildException("The Git tasks depend on PEAR\'s "
- . "VersionControl_Git package.", $this->getLocation());
- }
- }
-
- /**
- * Set repository directory
- *
- * @param string $repository Repo directory
- * @return GitBaseTask
- */
- public function setRepository($repository)
- {
- $this->repository = $repository;
- return $this;
- }
-
- /**
- * Get repository directory
- *
- * @return string
- */
- public function getRepository()
- {
- return $this->repository;
- }
-
- /**
- * Set path to git executable
- *
- * @param string $gitPath New path to git repository
- * @return GitBaseTask
- */
- public function setGitPath($gitPath)
- {
- $this->gitPath = $gitPath;
- return $this;
- }
-
- /**
- * Get path to git executable
- *
- * @return string
- */
- public function getGitPath()
- {
- return $this->gitPath;
- }
-
- protected function getGitClient($reset = false, $repository = null)
- {
- $this->gitClient = ($reset === true) ? null : $this->gitClient;
- $repository = (null === $repository)
- ? $this->getRepository()
- : $repository;
-
- if(null === $this->gitClient) {
- try {
- $this->gitClient = new VersionControl_Git($repository);
- } catch (VersionControl_Git_Exception $e) {
- // re-package
- throw new BuildException(
- 'You must specify readable directory as repository.');
-
- }
- }
- $this->gitClient->setGitCommandPath($this->getGitPath());
-
- return $this->gitClient;
- }
-}
-
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitBranchTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitBranchTask.php
deleted file mode 100644
index 54a0eb20..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitBranchTask.php
+++ /dev/null
@@ -1,296 +0,0 @@
-<?php
-/*
- * $Id: 88a8737d783614bcd5acb103738fafc23c509225 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Wrapper aroung git-branch
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 88a8737d783614bcd5acb103738fafc23c509225 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitBranchTask extends GitBaseTask
-{
- /**
- * Branch name
- * @var string
- */
- private $branchname;
-
- /**
- * New Branch name for git-branch -m | -M
- * @var string
- */
- private $newbranch;
-
- /**
- * If not HEAD, specify starting point
- * @var string
- */
- private $startPoint;
-
- /**
- * --set-upstream key to git-branch
- * @var boolean
- */
- private $setUpstream = false;
-
- /**
- * --track key to git-branch
- * @var boolean
- */
- private $track = false;
-
- /**
- * --no-track key to git-branch
- * @var boolean
- */
- private $noTrack = false;
-
- /**
- * --force, -f key to git-branch
- * @var boolean
- */
- private $force = false;
-
- /**
- * -d, -D, -m, -M options to git-branch
- * Respective task options:
- * delete, forceDelete, move, forceMove
- * @var array
- */
- private $extraOptions = array(
- 'd' => false,
- 'D' => false,
- 'm' => false,
- 'M' => false,
- );
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
- if (null === $this->getBranchname()) {
- throw new BuildException('"branchname" is required parameter');
- }
-
- // if we are moving branch, we need to know new name
- if ($this->isMove() || $this->isForceMove()) {
- if (null === $this->getNewbranch()) {
- throw new BuildException('"newbranch" is required parameter');
- }
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('branch');
- $command
- ->setOption('set-upstream', $this->isSetUpstream())
- ->setOption('no-track', $this->isNoTrack())
- ->setOption('force', $this->isForce());
- if ($this->isNoTrack() == false) {
- $command->setOption('track', $this->getTrack());
- }
-
- // check extra options (delete, move)
- foreach ($this->extraOptions as $option => $flag) {
- if ($flag) {
- $command->setOption($option, true);
- }
- }
-
- $command->addArgument($this->getBranchname());
-
- if (null !== $this->getStartPoint()) {
- $command->addArgument($this->getStartPoint());
- }
-
- if (null !== $this->getNewbranch()) {
- $command->addArgument($this->getNewbranch());
- }
-
- $this->log('git-branch command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed.');
- }
-
- $this->log(
- sprintf('git-branch: branch "%s" repository', $this->getRepository()),
- Project::MSG_INFO);
- $this->log('git-branch output: ' . trim($output), Project::MSG_INFO);
- }
-
- public function setSetUpstream($flag)
- {
- $this->setUpstream = $flag;
- }
-
- public function getSetUpstream()
- {
- return $this->setUpstream;
- }
-
- public function isSetUpstream()
- {
- return $this->getSetUpstream();
- }
-
- public function setTrack($flag)
- {
- $this->track = $flag;
- }
-
- public function getTrack()
- {
- return $this->track;
- }
-
- public function isTrack()
- {
- return $this->getTrack();
- }
-
- public function setNoTrack($flag)
- {
- $this->noTrack = $flag;
- }
-
- public function getNoTrack()
- {
- return $this->noTrack;
- }
-
- public function isNoTrack()
- {
- return $this->getNoTrack();
- }
-
- public function setForce($flag)
- {
- $this->force = $flag;
- }
-
- public function getForce()
- {
- return $this->force;
- }
-
- public function isForce()
- {
- return $this->getForce();
- }
-
- public function setBranchname($branchname)
- {
- $this->branchname = $branchname;
- }
-
- public function getBranchname()
- {
- return $this->branchname;
- }
-
- public function setStartPoint($startPoint)
- {
- $this->startPoint = $startPoint;
- }
-
- public function getStartPoint()
- {
- return $this->startPoint;
- }
-
- public function setDelete($flag)
- {
- $this->extraOptions['d'] = $flag;
- }
-
- public function getDelete()
- {
- return $this->extraOptions['d'];
- }
-
- public function isDelete()
- {
- return $this->getDelete();
- }
-
- public function setForceDelete($flag)
- {
- $this->extraOptions['D'] = $flag;
- }
-
- public function getForceDelete()
- {
- return $this->extraOptions['D'];
- }
-
- public function setMove($flag)
- {
- $this->extraOptions['m'] = $flag;
- }
-
- public function getMove()
- {
- return $this->extraOptions['m'];
- }
-
- public function isMove()
- {
- return $this->getMove();
- }
-
- public function setForceMove($flag)
- {
- $this->extraOptions['M'] = $flag;
- }
-
- public function getForceMove()
- {
- return $this->extraOptions['M'];
- }
-
- public function isForceMove()
- {
- return $this->getForceMove();
- }
-
- public function setNewBranch($name)
- {
- $this->newbranch = $name;
- }
-
- public function getNewBranch()
- {
- return $this->newbranch;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitCheckoutTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitCheckoutTask.php
deleted file mode 100644
index 16a2bd9f..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitCheckoutTask.php
+++ /dev/null
@@ -1,256 +0,0 @@
-<?php
-/*
- * $Id: a1dcb809b44bfd34c3af154683dd2200c814e5f0 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-/**
- * Wrapper around git-checkout
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: a1dcb809b44bfd34c3af154683dd2200c814e5f0 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitCheckoutTask extends GitBaseTask
-{
- /**
- * Branch name
- * @var string
- */
- private $branchname;
-
- /**
- * If not HEAD, specify starting point
- * @var string
- */
- private $startPoint;
-
- /**
- * --force, -f key to git-checkout
- * @var boolean
- */
- private $force = false;
-
- /**
- * --quiet, -q key to git-checkout
- * @var boolean
- */
- private $quiet = false;
-
- /**
- * When creating a new branch, set up "upstream" configuration.
- * --track key to git-checkout
- * @var boolean
- */
- private $track = false;
-
- /**
- * Do not set up "upstream" configuration
- * --no-track key to git-checkout
- * @var boolean
- */
- private $noTrack = false;
-
- /**
- * -b, -B, -m options to git-checkout
- * Respective task options:
- * create, forceCreate, merge
- * @var array
- */
- private $extraOptions = array(
- 'b' => false,
- 'B' => false,
- 'm' => false,
- );
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
- if (null === $this->getBranchname()) {
- throw new BuildException('"branchname" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('checkout');
- $command
- ->setOption('no-track', $this->isNoTrack())
- ->setOption('q', $this->isQuiet())
- ->setOption('force', $this->isForce())
- ->setOption('b', $this->isCreate())
- ->setOption('B', $this->isForceCreate())
- ->setOption('m', $this->isMerge());
- if ($this->isNoTrack()) {
- $command->setOption('track', $this->isTrack());
- }
-
- $command->addArgument($this->getBranchname());
-
- if (null !== $this->getStartPoint()) {
- $command->addArgument($this->getStartPoint());
- }
-
- $this->log('git-checkout command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed.');
- }
-
- $this->log(
- sprintf('git-checkout: checkout "%s" repository', $this->getRepository()),
- Project::MSG_INFO);
- $this->log('git-checkout output: ' . trim($output), Project::MSG_INFO);
- }
-
- public function setBranchname($branchname)
- {
- $this->branchname = $branchname;
- }
-
- public function getBranchname()
- {
- return $this->branchname;
- }
-
- public function setStartPoint($startPoint)
- {
- $this->startPoint = $startPoint;
- }
-
- public function getStartPoint()
- {
- return $this->startPoint;
- }
-
- public function setForce($flag)
- {
- $this->force = $flag;
- }
-
- public function getForce()
- {
- return $this->force;
- }
-
- public function isForce()
- {
- return $this->getForce();
- }
-
- public function setQuiet($flag)
- {
- $this->quiet = $flag;
- }
-
- public function getQuiet()
- {
- return $this->quiet;
- }
-
- public function isQuiet()
- {
- return $this->getQuiet();
- }
-
- public function setTrack($flag)
- {
- $this->track = $flag;
- }
-
- public function getTrack()
- {
- return $this->track;
- }
-
- public function isTrack()
- {
- return $this->getTrack();
- }
-
- public function setNoTrack($flag)
- {
- $this->noTrack = $flag;
- }
-
- public function getNoTrack()
- {
- return $this->noTrack;
- }
-
- public function isNoTrack()
- {
- return $this->getNoTrack();
- }
-
- public function setCreate($flag)
- {
- $this->extraOptions['b'] = $flag;
- }
-
- public function getCreate()
- {
- return $this->extraOptions['b'];
- }
-
- public function isCreate()
- {
- return $this->getCreate();
- }
-
- // -B flag is not found in all versions of git
- // --force is present everywhere
- public function setForceCreate($flag)
- {
- $this->setForce($flag);
- }
-
- public function getForceCreate()
- {
- return $this->extraOptions['B'];
- }
-
- public function isForceCreate()
- {
- return $this->getForceCreate();
- }
-
- public function setMerge($flag)
- {
- $this->extraOptions['m'] = $flag;
- }
-
- public function getMerge()
- {
- return $this->extraOptions['m'];
- }
-
- public function isMerge()
- {
- return $this->getMerge();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitCloneTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitCloneTask.php
deleted file mode 100644
index 3d1eb76f..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitCloneTask.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/*
- * $Id: 0d9ce448c11e505885b9c5362f5c2d399e205f90 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-/**
- * Wrapper around git-clone
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 0d9ce448c11e505885b9c5362f5c2d399e205f90 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitCloneTask extends GitBaseTask
-{
- /**
- * Whether --bare key should be set for git-init
- * @var string
- */
- private $isBare = false;
-
- /**
- * Path to target directory
- * @var string
- */
- private $targetPath;
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- if (null === $this->getTargetPath()) {
- throw new BuildException('"targetPath" is required parameter');
- }
-
- $files = @scandir($this->getTargetPath());
- if (isset($files) && is_array($files) && (count($files) > 2)) {
- throw new BuildException(
- sprintf(
- '"%s" target directory is not empty',
- $this->getTargetPath())
- );
- }
-
- $client = $this->getGitClient(false, getcwd());
-
- try {
- $client->createClone(
- $this->getRepository(),
- $this->isBare(),
- $this->getTargetPath());
- } catch (Exception $e) {
- throw new BuildException('The remote end hung up unexpectedly');
- }
-
- $msg = 'git-clone: cloning '
- . ($this->isBare() ? '(bare) ' : '')
- . '"' . $this->getRepository() .'" repository'
- . ' to "' . $this->getTargetPath() .'" directory';
- $this->log($msg, Project::MSG_INFO);
- }
-
- /**
- * Get path to target direcotry repo
- *
- * @return string
- */
- public function getTargetPath()
- {
- return $this->targetPath;
- }
-
- /**
- * Set path to source repo
- *
- * @param string $targetPath Path to repository used as source
- * @return void
- */
- public function setTargetPath($targetPath)
- {
- $this->targetPath = $targetPath;
- }
-
- /**
- * Alias @see getBare()
- *
- * @return string
- */
- public function isBare()
- {
- return $this->getBare();
- }
-
- public function getBare()
- {
- return $this->isBare;
- }
-
- public function setBare($flag)
- {
- $this->isBare = (bool)$flag;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitCommitTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitCommitTask.php
deleted file mode 100644
index 71b26ab9..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitCommitTask.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/*
- * $Id: 355a6d3cf8e182652b4acf3af0a6cd3eaa58fd02 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-/**
- * Wrapper around git-commit
- *
- * @package Phing.tasks.ext.git
- * @author Jonathan Creasy <jonathan.creasy@gmail.com>
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitCommitTask extends GitBaseTask
-{
- /**
- * Path to target directory
- * @var string
- */
- private $targetPath;
-
- private $allFiles;
-
- private $message;
-
- private $files;
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- if (null === $this->getTargetPath()) {
- throw new BuildException('"targetPath" is required parameter');
- }
-
- if ($this->allFiles !== true && empty($this->files))
- {
- throw new BuildException('"allFiles" cannot be false if no files are specified.');
- }
-
- $client = $this->getGitClient(false, $this->getTargetPath());
-
- $options = Array();
-
- if ($this->allFiles === true)
- {
- $options['all'] = true;
- }
-
- $arguments = Array();
- if ($this->allFiles !== true && is_array($this->files))
- {
- foreach($files as $file)
- {
- $arguments[] = $file;
- }
- }
-
- if (!empty($this->message))
- {
- $arguments[] = $this->message;
- } else {
- $options['allow-empty-message'] = true;
- }
-
- try {
- $command = $git->Command('commit');
- $command->setArguments($arguments);
- $command->setOptions($options);
- $command->execute();
- } catch (Exception $e) {
- throw new BuildException('The remote end hung up unexpectedly');
- }
-
- $msg = 'git-commit: Executed git commit ';
- foreach ($options as $option=>$value)
- {
-
- $msg .= ' --' . $options . '=' . $value;
- }
-
- foreach ($arguments as $argument)
- {
- $msg .= ' ' . $argument;
- }
-
- $this->log($msg, Project::MSG_INFO);
- }
-
- /**
- * Get path to target direcotry repo
- *
- * @return string
- */
- public function getTargetPath()
- {
- return $this->targetPath;
- }
-
- /**
- * Set path to source repo
- *
- * @param string $targetPath Path to repository used as source
- * @return void
- */
- public function setTargetPath($targetPath)
- {
- $this->targetPath = $targetPath;
- }
-
- /**
- * Alias @see getAllFiles()
- *
- * @return string
- */
- public function isallFiles()
- {
- return $this->getallFiles();
- }
-
- public function getallFiles()
- {
- return $this->allFiles;
- }
-
- public function setallFiles($flag)
- {
- $this->allFiles = (bool)$flag;
- }
-
- public function getMessage()
- {
- return $this->message;
- }
-
- public function setMessage($message)
- {
- $this->message = $message;
- }
-
- public function getFiles()
- {
- return $this->files;
- }
-
- public function setFiles($files)
- {
- if (!$empty($files) && is_array($files))
- {
- $this->setallfiles(false);
- $this->Files = $files;
- } else {
- $this->Files = null;
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitFetchTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitFetchTask.php
deleted file mode 100644
index 4b3e8a3d..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitFetchTask.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-/*
- * $Id: bcddbc1cd2e77003746b048568da8111b48da2fb $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Wrapper aroung git-fetch
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: bcddbc1cd2e77003746b048568da8111b48da2fb $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitFetchTask extends GitBaseTask
-{
- /**
- * --force, -f key to git-fetch
- * @var boolean
- */
- private $force = false;
-
- /**
- * --quiet, -q key to git-fetch
- * @var boolean
- */
- private $quiet = false;
-
- /**
- * Fetch all remotes
- * --all key to git-fetch
- * @var boolean
- */
- private $allRemotes = false;
-
- /**
- * Keep downloaded pack
- * --keep key to git-fetch
- * @var boolean
- */
- private $keepFiles = false;
-
- /**
- * After fetching, remove any remote tracking branches which no longer
- * exist on the remote.
- * --prune key to git fetch
- * @var boolean
- */
- private $prune = false;
-
- /**
- * Disable/enable automatic tag following
- * --no-tags key to git-fetch
- * @var boolean
- */
- private $noTags = false;
-
- /**
- * Fetch all tags (even not reachable from branch heads)
- * --tags key to git-fetch
- * @var boolean
- */
- private $tags = false;
-
- /**
- * <group> argument to git-fetch
- * @var string
- */
- private $group;
-
- /**
- * <repository> argument to git-fetch
- * @var string
- */
- private $source = 'origin';
-
- /**
- * <refspec> argument to git-fetch
- * @var string
- */
- private $refspec;
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('fetch');
- $command
- ->setOption('tags', $this->isTags())
- ->setOption('no-tags', $this->isNoTags())
- ->setOption('prune', $this->isPrune())
- ->setOption('keep', $this->isKeepFiles())
- ->setOption('q', $this->isQuiet())
- ->setOption('force', $this->isForce());
-
- // set operation target
- if ($this->isAllRemotes()) { // --all
- $command->setOption('all', true);
- } elseif ($this->getGroup()) { // <group>
- $command->addArgument($this->getGroup());
- } elseif ($this->getSource()) { // <repository> [<refspec>]
- $command->addArgument($this->getSource());
- if ($this->getRefspec()) {
- $command->addArgument($this->getRefspec());
- }
- } else {
- throw new BuildException('No remote repository specified');
- }
-
- $this->log('git-fetch command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed.');
- }
-
- $this->log(
- sprintf('git-fetch: branch "%s" repository', $this->getRepository()),
- Project::MSG_INFO);
- $this->log('git-fetch output: ' . trim($output), Project::MSG_INFO);
- }
-
- public function setForce($flag)
- {
- $this->force = $flag;
- }
-
- public function getForce()
- {
- return $this->force;
- }
-
- public function isForce()
- {
- return $this->getForce();
- }
-
- public function setQuiet($flag)
- {
- $this->quiet = $flag;
- }
-
- public function getQuiet()
- {
- return $this->quiet;
- }
-
- public function isQuiet()
- {
- return $this->getQuiet();
- }
-
- public function setAll($flag)
- {
- $this->allRemotes = $flag;
- }
-
- public function getAll()
- {
- return $this->allRemotes;
- }
-
- public function isAllRemotes()
- {
- return $this->getAll();
- }
-
- public function setKeep($flag)
- {
- $this->keepFiles = $flag;
- }
-
- public function getKeep()
- {
- return $this->keepFiles;
- }
-
- public function isKeepFiles()
- {
- return $this->getKeep();
- }
-
- public function setPrune($flag)
- {
- $this->prune = $flag;
- }
-
- public function getPrune()
- {
- return $this->prune;
- }
-
- public function isPrune()
- {
- return $this->getPrune();
- }
-
- public function setNoTags($flag)
- {
- $this->noTags = $flag;
- }
-
- public function getNoTags()
- {
- return $this->noTags;
- }
-
- public function isNoTags()
- {
- return $this->getNoTags();
- }
-
- public function setTags($flag)
- {
- $this->tags = $flag;
- }
-
- public function getTags()
- {
- return $this->tags;
- }
-
- public function isTags()
- {
- return $this->getTags();
- }
-
- public function setSource($source)
- {
- $this->source = $source;
- }
-
- public function getSource()
- {
- return $this->source;
- }
-
- public function setRefspec($spec)
- {
- $this->refspec = $spec;
- }
-
- public function getRefspec()
- {
- return $this->refspec;
- }
-
- public function setGroup($group)
- {
- $this->group = $group;
- }
-
- public function getGroup()
- {
- return $this->group;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitGcTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitGcTask.php
deleted file mode 100644
index 12de4119..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitGcTask.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-/*
- * $Id: 13487520850c3a7ad71d85f02afbddfd408bfbba $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-/**
- * Wrapper around git-gc
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 13487520850c3a7ad71d85f02afbddfd408bfbba $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitGcTask extends GitBaseTask
-{
- /**
- * --aggressive key to git-gc
- * @var boolean
- */
- private $isAggressive = false;
-
- /**
- * --auto key to git-gc
- * @var boolean
- */
- private $isAuto = false;
-
- /**
- * --no-prune key to git-gc
- * @var boolean
- */
- private $noPrune = false;
-
- /**
- * --prune=<date>option of git-gc
- * @var string
- */
- private $prune = '2.weeks.ago';
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('gc');
- $command
- ->setOption('aggressive', $this->isAggressive())
- ->setOption('auto', $this->isAuto())
- ->setOption('no-prune', $this->isNoPrune());
- if ($this->isNoPrune() == false) {
- $command->setOption('prune', $this->getPrune());
- }
-
- // suppress output
- $command->setOption('q');
-
- $this->log('git-gc command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed');
- }
-
- $this->log(
- sprintf('git-gc: cleaning up "%s" repository', $this->getRepository()),
- Project::MSG_INFO);
- }
-
- /**
- * @see getAggressive()
- */
- public function isAggressive()
- {
- return $this->getAggressive();
- }
-
- public function getAggressive()
- {
- return $this->isAggressive;
- }
-
- public function setAggressive($flag)
- {
- $this->isAggressive = (bool)$flag;
- }
-
- /**
- * @see getAuto()
- */
- public function isAuto()
- {
- return $this->getAuto();
- }
-
- public function getAuto()
- {
- return $this->isAuto;
- }
-
- public function setAuto($flag)
- {
- $this->isAuto = (bool)$flag;
- }
-
- /**
- * @see NoPrune()
- */
- public function isNoPrune()
- {
- return $this->getNoPrune();
- }
-
- public function getNoPrune()
- {
- return $this->noPrune;
- }
-
- public function setNoPrune($flag)
- {
- $this->noPrune = (bool)$flag;
- }
-
- public function getPrune()
- {
- return $this->prune;
- }
-
- public function setPrune($date)
- {
- $this->prune = $date;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitInitTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitInitTask.php
deleted file mode 100644
index b4654cae..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitInitTask.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/*
- * $Id: 5e66bb51f299c733e4410258f40dcf61f6e96e2f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/BuildException.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Repository initialization task
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 5e66bb51f299c733e4410258f40dcf61f6e96e2f $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitInitTask extends GitBaseTask
-{
-
- /**
- * Whether --bare key should be set for git-init
- * @var string
- */
- private $isBare = false;
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- $client = $this->getGitClient();
- $client->initRepository($this->isBare());
-
- $msg = 'git-init: initializing '
- . ($this->isBare() ? '(bare) ' : '')
- . '"' . $this->getRepository() .'" repository';
- $this->log($msg, Project::MSG_INFO);
- }
-
- /**
- * Alias @see getBare()
- *
- * @return string
- */
- public function isBare()
- {
- return $this->getBare();
- }
-
- public function getBare()
- {
- return $this->isBare;
- }
-
- public function setBare($flag)
- {
- $this->isBare = (bool)$flag;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitLogTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitLogTask.php
deleted file mode 100644
index c1d8058a..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitLogTask.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-/*
- * $Id: 27b94c44aa26823164ce02628de06ff8b44717f7 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Wrapper aroung git-log
- *
- * @author Evan Kaufman <evan@digitalflophouse.com>
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 27b94c44aa26823164ce02628de06ff8b44717f7 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.5
- */
-class GitLogTask extends GitBaseTask
-{
- /**
- * Generate a diffstat. See --stat of git-log
- * @var string|boolean
- */
- private $stat = false;
-
- /**
- * Names + status of changed files. See --name-status of git-log
- * @var boolean
- */
- private $nameStatus = false;
-
- /**
- * Number of commits to show. See -<n>|-n|--max-count of git-log
- * @var integer
- */
- private $maxCount;
-
- /**
- * Don't show commits with more than one parent. See --no-merges of git-log
- * @var boolean
- */
- private $noMerges = false;
-
- /**
- * Commit format. See --format of git-log
- * @var string
- */
- private $format = 'medium';
-
- /**
- * Date format. See --date of git-log
- * @var string
- */
- private $date;
-
- /**
- * <since> argument to git-log
- * @var string
- */
- private $sinceCommit;
-
- /**
- * <until> argument to git-log
- * @var string
- */
- private $untilCommit = 'HEAD';
-
- /**
- * <path> arguments to git-log
- * Accepts one or more paths delimited by PATH_SEPARATOR
- * @var string
- */
- private $paths;
-
- /**
- * Property name to set with output value from git-log
- * @var string
- */
- private $outputProperty;
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('log');
- $command
- ->setOption('stat', $this->getStat())
- ->setOption('name-status', $this->isNameStatus())
- ->setOption('no-merges', $this->isNoMerges())
- ->setOption('format', $this->getFormat());
-
- if (null !== $this->getMaxCount()) {
- $command->setOption('max-count', $this->getMaxCount());
- }
-
- if (null !== $this->getDate()) {
- $command->setOption('date', $this->getDate());
- }
-
- if (null !== $this->getSince()) {
- $command->setOption('since', $this->getSince());
- }
- $command->setOption('until', $this->getUntil());
-
- $command->addDoubleDash(true);
- if (null !== $this->getPaths()) {
- $command->addDoubleDash(false);
- $paths = explode(PATH_SEPARATOR, $this->getPaths());
- foreach ($paths as $path) {
- $command->addArgument($path);
- }
- }
-
- $this->log('git-log command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed');
- }
-
- if (null !== $this->outputProperty) {
- $this->project->setProperty($this->outputProperty, $output);
- }
-
- $this->log(
- sprintf('git-log: commit log for "%s" repository', $this->getRepository()),
- Project::MSG_INFO);
- $this->log('git-log output: ' . trim($output), Project::MSG_INFO);
- }
-
- public function setStat($stat)
- {
- $this->stat = $stat;
- }
-
- public function getStat()
- {
- return $this->stat;
- }
-
- public function setNameStatus($flag)
- {
- $this->nameStatus = (boolean)$flag;
- }
-
- public function getNameStatus()
- {
- return $this->nameStatus;
- }
-
- public function isNameStatus()
- {
- return $this->getNameStatus();
- }
-
- public function setMaxCount($count)
- {
- $this->maxCount = (int)$count;
- }
-
- public function getMaxCount()
- {
- return $this->maxCount;
- }
-
- public function setNoMerges($flag)
- {
- $this->noMerges = (bool)$flag;
- }
-
- public function getNoMerges()
- {
- return $this->noMerges;
- }
-
- public function isNoMerges()
- {
- return $this->getNoMerges();
- }
-
- public function setFormat($format)
- {
- $this->format = $format;
- }
-
- public function getFormat()
- {
- return $this->format;
- }
-
- public function setDate($date)
- {
- $this->date = $date;
- }
-
- public function getDate()
- {
- return $this->date;
- }
-
- public function setSince($since)
- {
- $this->sinceCommit = $since;
- }
-
- public function getSince()
- {
- return $this->sinceCommit;
- }
-
- public function setAfter($after)
- {
- $this->setSince($after);
- }
-
- public function setUntil($until)
- {
- $this->untilCommit = $until;
- }
-
- public function getUntil()
- {
- return $this->untilCommit;
- }
-
- public function setBefore($before)
- {
- $this->setUntil($before);
- }
-
- public function setPaths($paths)
- {
- $this->paths = $paths;
- }
-
- public function getPaths()
- {
- return $this->paths;
- }
-
- public function setOutputProperty($prop)
- {
- $this->outputProperty = $prop;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitMergeTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitMergeTask.php
deleted file mode 100644
index 7a3e17fb..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitMergeTask.php
+++ /dev/null
@@ -1,258 +0,0 @@
-<?php
-/*
- * $Id: 82fabd65e9247cb37fa3fe16c122d525db4fc697 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Wrapper aroung git-merge
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 82fabd65e9247cb37fa3fe16c122d525db4fc697 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- * @link http://www.kernel.org/pub/software/scm/git/docs/git-merge.html
- */
-class GitMergeTask extends GitBaseTask
-{
- /**
- * <commit> of git-merge
- * @var string
- */
- private $remote;
-
- /**
- * Commit message
- * @var string
- */
- private $message;
-
- /**
- * Merge strategy. See -s <strategy> of git-merge
- * Available strategies are: octopus ours recursive resolve subtree
- * @var string
- */
- private $strategy;
-
- /**
- * -X or --strategy-option of git-merge
- * @var string
- */
- private $strategyOption;
-
- /**
- * --commit key of git-merge
- * @var boolean
- */
- private $commit = false;
-
- /**
- * --no-commit key of git-merge
- * @var boolean
- */
- private $noCommit = false;
-
- /**
- * --ff --no-ff keys to git-merge
- * @var boolean
- */
- private $fastForwardCommit = false;
-
- /**
- * --quiet, -q key to git-merge
- * @var boolean
- */
- private $quiet = false;
-
- /**
- * Valid merge strategies
- * @var array
- */
- private $validStrategies = array(
- 'octopus', 'ours', 'recursive', 'resolve', 'subtree');
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
- $remotes = trim($this->getRemote());
- if (null === $remotes || '' === $remotes) {
- throw new BuildException('"remote" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('merge');
- $command
- ->setOption('commit', $this->isCommit())
- ->setOption('q', $this->isQuiet());
-
- if ($this->getMessage()) {
- $command->setOption('message', $this->getMessage());
- }
-
- if (!$this->isCommit()) {
- $command->setOption('no-commit', $this->isNoCommit());
- }
-
- if ($this->isFastForwardCommit()) {
- $command->setOption('no-ff', true);
- }
-
- $strategy = $this->getStrategy();
- if ($strategy) {
- // check if strategy is valid
- if (false === in_array($strategy, $this->validStrategies)) {
- throw new BuildException(
- "Could not find merge strategy '" . $strategy . "'\n".
- "Available strategies are: " . implode(', ', $this->validStrategies));
- }
- $command->setOption('strategy', $strategy);
- if ($this->getStrategyOption()) {
- $command->setOption(
- 'strategy-option', $this->getStrategyOption());
- }
- }
-
- $remotes = explode(' ', $this->getRemote());
- foreach ($remotes as $remote) {
- $command->addArgument($remote);
- }
-
- $this->log('git-merge command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed.');
- }
-
- $this->log(
- sprintf('git-merge: replaying "%s" commits', $this->getRemote()),
- Project::MSG_INFO);
- $this->log('git-merge output: ' . trim($output), Project::MSG_INFO);
-
- }
-
- public function setRemote($remote)
- {
- $this->remote = $remote;
- }
-
- public function getRemote()
- {
- return $this->remote;
- }
-
- public function setMessage($message)
- {
- $this->message = $message;
- }
-
- public function getMessage()
- {
- return $this->message;
- }
-
- public function setStrategy($strategy)
- {
- $this->strategy = $strategy;
- }
-
- public function getStrategy()
- {
- return $this->strategy;
- }
-
- public function setStrategyOption($strategyOption)
- {
- $this->strategyOption = $strategyOption;
- }
-
- public function getStrategyOption()
- {
- return $this->strategyOption;
- }
-
- public function setQuiet($flag)
- {
- $this->quiet = $flag;
- }
-
- public function getQuiet()
- {
- return $this->quiet;
- }
-
- public function isQuiet()
- {
- return $this->getQuiet();
- }
-
- public function setCommit($flag)
- {
- $this->commit = (boolean)$flag;
- }
-
- public function getCommit()
- {
- return $this->commit;
- }
-
- public function isCommit()
- {
- return $this->getCommit();
- }
-
- public function setNoCommit($flag)
- {
- $this->noCommit = (boolean)$flag;
- }
-
- public function getNoCommit()
- {
- return $this->noCommit;
- }
-
- public function isNoCommit()
- {
- return $this->getNoCommit();
- }
-
- public function setFastForwardCommit($flag)
- {
- $this->fastForwardCommit = $flag;
- }
-
- public function getFastForwardCommit()
- {
- return $this->fastForwardCommit;
- }
-
- public function isFastForwardCommit()
- {
- return $this->getFastForwardCommit();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitPullTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitPullTask.php
deleted file mode 100644
index 1f7cfcc1..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitPullTask.php
+++ /dev/null
@@ -1,373 +0,0 @@
-<?php
-/*
- * $Id: f96a4faad59ab1b29abccd59d04269fe0c409084 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Wrapper aroung git-pull
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: f96a4faad59ab1b29abccd59d04269fe0c409084 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- */
-class GitPullTask extends GitBaseTask
-{
- /**
- * <repository> argument to git-pull
- * @var string
- */
- private $source = 'origin';
-
- /**
- * <refspec> argument to git-pull
- * @var string
- */
- private $refspec;
-
- /**
- * --rebase key to git-pull
- * @var boolean
- */
- private $rebase = false;
-
- /**
- * --no-rebase key to git-pull
- * Allow to override --rebase (if set to default true in configuration)
- * @var boolean
- */
- private $noRebase = false;
-
- /**
- * Merge strategy. See -s <strategy> of git-pull
- * @var string
- */
- private $strategy;
-
- /**
- * -X or --strategy-option of git-pull
- * @var string
- */
- private $strategyOption;
-
- /**
- * Fetch all remotes
- * --all key to git-pull
- * @var boolean
- */
- private $allRemotes = false;
-
- /**
- * --append key to git-pull
- * @var boolean
- */
- private $append = false;
-
- /**
- * Keep downloaded pack
- * --keep key to git-pull
- * @var boolean
- */
- private $keepFiles = false;
-
- /**
- * Disable/enable automatic tag following
- * --no-tags key to git-pull
- * @var boolean
- */
- private $noTags = false;
-
- /**
- * Fetch all tags (even not reachable from branch heads)
- * --tags key to git-pull
- * @var boolean
- */
- private $tags = false;
-
- /**
- * --quiet, -q key to git-pull
- * @var boolean
- */
- private $quiet = true;
-
- /**
- * --force, -f key to git-pull
- * @var boolean
- */
- private $force = false;
-
- /**
- * Valid merge strategies
- * @var array
- */
- private $validStrategies = array(
- 'octopus', 'ours', 'recursive', 'resolve', 'subtree');
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('pull');
- $command
- ->setOption('rebase', $this->isRebase());
-
- if (!$this->isRebase()) {
- $command->setOption('no-rebase', $this->isNoRebase());
- }
-
- $strategy = $this->getStrategy();
- if ($strategy) {
- // check if strategy is valid
- if (false === in_array($strategy, $this->validStrategies)) {
- throw new BuildException(
- "Could not find merge strategy '" . $strategy . "'\n".
- "Available strategies are: " . implode(', ', $this->validStrategies));
- }
- $command->setOption('strategy', $strategy);
- if ($this->getStrategyOption()) {
- $command->setOption(
- 'strategy-option', $this->getStrategyOption());
- }
- }
-
- // order of arguments is important
- $command
- ->setOption('tags', $this->isTags())
- ->setOption('no-tags', $this->isNoTags())
- ->setOption('keep', $this->isKeepFiles())
- ->setOption('append', $this->isAppend())
- ->setOption('q', $this->isQuiet())
- ->setOption('force', $this->isForce());
-
- // set operation target
- if ($this->isAllRemotes()) { // --all
- $command->setOption('all', true);
- $this->log('git-pull: fetching from all remotes', Project::MSG_INFO);
- } elseif ($this->getSource()) { // <repository> [<refspec>]
- $command->addArgument($this->getSource());
- if ($this->getRefspec()) {
- $command->addArgument($this->getRefspec());
- }
- $this->log(
- sprintf('git-pull: pulling from %s %s',
- $this->getSource(), $this->getRefspec()),
- Project::MSG_INFO);
- } else {
- throw new BuildException('No source repository specified');
- }
-
- $this->log('git-pull command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed.');
- }
-
- $this->log('git-pull: complete', Project::MSG_INFO);
- $this->log('git-pull output: ' . trim($output), Project::MSG_INFO);
-
- }
-
- public function setStrategy($strategy)
- {
- $this->strategy = $strategy;
- }
-
- public function getStrategy()
- {
- return $this->strategy;
- }
-
- public function setStrategyOption($strategyOption)
- {
- $this->strategyOption = $strategyOption;
- }
-
- public function getStrategyOption()
- {
- return $this->strategyOption;
- }
-
- public function setSource($source)
- {
- $this->source = $source;
- }
-
- public function getSource()
- {
- return $this->source;
- }
-
- public function setRefspec($spec)
- {
- $this->refspec = $spec;
- }
-
- public function getRefspec()
- {
- return $this->refspec;
- }
-
- public function setAll($flag)
- {
- $this->allRemotes = $flag;
- }
-
- public function getAll()
- {
- return $this->allRemotes;
- }
-
- public function isAllRemotes()
- {
- return $this->getAll();
- }
-
- public function setAppend($flag)
- {
- $this->append = (boolean)$flag;
- }
-
- public function getAppend()
- {
- return $this->append;
- }
-
- public function isAppend()
- {
- return $this->getAppend();
- }
-
- public function setKeep($flag)
- {
- $this->keepFiles = $flag;
- }
-
- public function getKeep()
- {
- return $this->keepFiles;
- }
-
- public function isKeepFiles()
- {
- return $this->getKeep();
- }
-
- public function setNoTags($flag)
- {
- $this->noTags = $flag;
- }
-
- public function getNoTags()
- {
- return $this->noTags;
- }
-
- public function isNoTags()
- {
- return $this->getNoTags();
- }
-
- public function setTags($flag)
- {
- $this->tags = $flag;
- }
-
- public function getTags()
- {
- return $this->tags;
- }
-
- public function isTags()
- {
- return $this->getTags();
- }
-
- public function setQuiet($flag)
- {
- $this->quiet = $flag;
- }
-
- public function getQuiet()
- {
- return $this->quiet;
- }
-
- public function isQuiet()
- {
- return $this->getQuiet();
- }
-
- public function setRebase($flag)
- {
- $this->rebase = (boolean)$flag;
- }
-
- public function getRebase()
- {
- return $this->rebase;
- }
-
- public function isRebase()
- {
- return $this->getRebase();
- }
-
- public function setNoRebase($flag)
- {
- $this->noRebase = (boolean)$flag;
- }
-
- public function getNoRebase()
- {
- return $this->noRebase;
- }
-
- public function isNoRebase()
- {
- return $this->getNoRebase();
- }
-
- public function setForce($flag)
- {
- $this->force = $flag;
- }
-
- public function getForce()
- {
- return $this->force;
- }
-
- public function isForce()
- {
- return $this->getForce();
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitPushTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitPushTask.php
deleted file mode 100644
index 996fa57f..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitPushTask.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-/*
- * $Id: a01e7e9f6cc92e419e82b4e99e4a45de6a61eba8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Wrapper aroung git-push
- *
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: a01e7e9f6cc92e419e82b4e99e4a45de6a61eba8 $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.3
- * @link http://www.kernel.org/pub/software/scm/git/docs/git-push.html
- */
-class GitPushTask extends GitBaseTask
-{
- /**
- * Instead of naming each ref to push, specifies that all refs
- * --all key to git-push
- * @var boolean
- */
- private $allRemotes = false;
-
- /**
- * Mirror to remote repository
- * --mirror key to git-push
- * @var boolean
- */
- private $mirror = false;
-
- /**
- * Same as prefixing repos with colon
- * --delete argument to git-push
- * @var string
- */
- private $delete = false;
-
- /**
- * Push all refs under refs/tags
- * --tags key to git-fetch
- * @var boolean
- */
- private $tags = false;
-
- /**
- * <repository> argument to git-push
- * @var string
- */
- private $destination = 'origin';
-
- /**
- * <refspec> argument to git-push
- * @var string
- */
- private $refspec;
-
- /**
- * --force, -f key to git-push
- * @var boolean
- */
- private $force = false;
-
- /**
- * --quiet, -q key to git-push
- * @var boolean
- */
- private $quiet = true;
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('push');
- $command
- ->setOption('tags', $this->isTags())
- ->setOption('mirror', $this->isMirror())
- ->setOption('delete', $this->isDelete())
- ->setOption('q', $this->isQuiet())
- ->setOption('force', $this->isForce());
-
- // set operation target
- if ($this->isAllRemotes()) { // --all
- $command->setOption('all', true);
- $this->log('git-push: push to all refs', Project::MSG_INFO);
- } elseif ($this->isMirror()) { // <repository> [<refspec>]
- $command->setOption('mirror', true);
- $this->log('git-push: mirror all refs', Project::MSG_INFO);
- } elseif ($this->getDestination()) { // <repository> [<refspec>]
- $command->addArgument($this->getDestination());
- if ($this->getRefspec()) {
- $command->addArgument($this->getRefspec());
- }
- $this->log(
- sprintf('git-push: pushing to %s %s',
- $this->getDestination(), $this->getRefspec()),
- Project::MSG_INFO);
- } else {
- throw new BuildException('At least one destination must be provided');
- }
-
- $this->log('git-push command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- throw new BuildException('Task execution failed.');
- }
-
- $this->log('git-push: complete', Project::MSG_INFO);
- if ($this->isDelete()) {
- $this->log('git-push: branch delete requested', Project::MSG_INFO);
- }
- $this->log('git-push output: ' . trim($output), Project::MSG_INFO);
- }
-
- public function setAll($flag)
- {
- $this->allRemotes = $flag;
- }
-
- public function getAll()
- {
- return $this->allRemotes;
- }
-
- public function isAllRemotes()
- {
- return $this->getAll();
- }
-
- public function setMirror($flag)
- {
- $this->mirror = (boolean)$flag;
- }
-
- public function getMirror()
- {
- return $this->mirror;
- }
-
- public function isMirror()
- {
- return $this->getMirror();
- }
-
- public function setDelete($flag)
- {
- $this->delete = (boolean)$flag;
- }
-
- public function getDelete()
- {
- return $this->delete;
- }
-
- public function isDelete()
- {
- return $this->getDelete();
- }
-
- public function setTags($flag)
- {
- $this->tags = $flag;
- }
-
- public function getTags()
- {
- return $this->tags;
- }
-
- public function isTags()
- {
- return $this->getTags();
- }
-
- public function setDestination($destination)
- {
- $this->destination = $destination;
- }
-
- public function getDestination()
- {
- return $this->destination;
- }
-
- public function setRefspec($spec)
- {
- $this->refspec = $spec;
- }
-
- public function getRefspec()
- {
- return $this->refspec;
- }
-
- public function setForce($flag)
- {
- $this->force = $flag;
- }
-
- public function getForce()
- {
- return $this->force;
- }
-
- public function isForce()
- {
- return $this->getForce();
- }
-
- public function setQuiet($flag)
- {
- $this->quiet = $flag;
- }
-
- public function getQuiet()
- {
- return $this->quiet;
- }
-
- public function isQuiet()
- {
- return $this->getQuiet();
- }
-
-
-
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/git/GitTagTask.php b/buildscripts/phing/classes/phing/tasks/ext/git/GitTagTask.php
deleted file mode 100644
index 864e71ba..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/git/GitTagTask.php
+++ /dev/null
@@ -1,406 +0,0 @@
-<?php
-/*
- * $Id: 127d4af12e159083935466773d1af788e46acd4e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/git/GitBaseTask.php';
-
-/**
- * Wrapper around git-tag
- *
- * @author Evan Kaufman <evan@digitalflophouse.com>
- * @author Victor Farazdagi <simple.square@gmail.com>
- * @version $Id: 127d4af12e159083935466773d1af788e46acd4e $
- * @package phing.tasks.ext.git
- * @see VersionControl_Git
- * @since 2.4.5
- */
-class GitTagTask extends GitBaseTask
-{
- /**
- * Make unsigned, annotated tag object. See -a of git-tag
- * @var boolean
- */
- private $annotate = false;
-
- /**
- * Make GPG-signed tag. See -s of git-tag
- * @var boolean
- */
- private $sign = false;
-
- /**
- * Make GPG-signed tag, using given key. See -u of git-tag
- * @var string
- */
- private $keySign;
-
- /**
- * Replace existing tag with given name. See -f of git-tag
- * @var boolean
- */
- private $replace = false;
-
- /**
- * Delete existing tags with given names. See -d of git-tag
- * @var boolean
- */
- private $delete = false;
-
- /**
- * Verify gpg signature of given tag names. See -v of git-tag
- * @var boolean
- */
- private $verify = false;
-
- /**
- * List tags with names matching given pattern. See -l of git-tag
- * @var boolean
- */
- private $list = false;
-
- /**
- * <num> specifies how many lines from the annotation, if any, are printed
- * when using -l. See -n of git-tag
- * @var int
- */
- private $num;
-
- /**
- * Only list tags containing specified commit. See --contains of git-tag
- * @var string
- */
- private $contains;
-
- /**
- * Use given tag message. See -m of git-tag
- * @var string
- */
- private $message;
-
- /**
- * Take tag message from given file. See -F of git-tag
- * @var string
- */
- private $file;
-
- /**
- * <tagname> argument to git-tag
- * @var string
- */
- private $name;
-
- /**
- * <commit> argument to git-tag
- * @var string
- */
- private $commit;
-
- /**
- * <object> argument to git-tag
- * @var string
- */
- private $object;
-
- /**
- * <pattern> argument to git-tag
- * @var string
- */
- private $pattern;
-
- /**
- * Property name to set with output value from git-tag
- * @var string
- */
- private $outputProperty;
-
- /**
- * The main entry point for the task
- */
- public function main()
- {
- if (null === $this->getRepository()) {
- throw new BuildException('"repository" is required parameter');
- }
-
- $client = $this->getGitClient(false, $this->getRepository());
- $command = $client->getCommand('tag');
- $command
- ->setOption('a', $this->isAnnotate())
- ->setOption('s', $this->isSign())
- ->setOption('f', $this->isReplace())
- ->setOption('d', $this->isDelete())
- ->setOption('v', $this->isVerify())
- ->setOption('l', $this->isList());
-
- if (null !== $this->getKeySign()) {
- $command->setOption('u', $this->getKeySign());
- }
-
- if (null !== $this->getMessage()) {
- $command->setOption('m', $this->getMessage());
- }
-
- if (null !== $this->getFile()) {
- $command->setOption('F', $this->getFile());
- }
-
- // Use 'name' arg, if relevant
- if (null != $this->getName() && false == $this->isList()) {
- $command->addArgument($this->getName());
- }
-
- if (null !== $this->getKeySign() || $this->isAnnotate() || $this->isSign()) {
- // Require a tag message or file
- if (null === $this->getMessage() && null === $this->getFile()) {
- throw new BuildException('"message" or "file" required to make a tag');
- }
- }
-
- // Use 'commit' or 'object' args, if relevant
- if (null !== $this->getCommit()) {
- $command->addArgument($this->getCommit());
- } else if (null !== $this->getObject()) {
- $command->addArgument($this->getObject());
- }
-
- // Customize list (-l) options
- if ($this->isList()) {
- if (null !== $this->getContains()) {
- $command->setOption('contains', $this->getContains());
- }
- if (null !== $this->getPattern()) {
- $command->addArgument($this->getPattern());
- }
- if (null != $this->getNum()) {
- $command->setOption('n', $this->getNum());
- }
- }
-
- $this->log('git-tag command: ' . $command->createCommandString(), Project::MSG_INFO);
-
- try {
- $output = $command->execute();
- } catch (Exception $e) {
- $this->log($e->getMessage(), Project::MSG_ERR);
- throw new BuildException('Task execution failed. ' . $e->getMessage());
- }
-
- if (null !== $this->outputProperty) {
- $this->project->setProperty($this->outputProperty, $output);
- }
-
- $this->log(
- sprintf('git-tag: tags for "%s" repository', $this->getRepository()),
- Project::MSG_INFO);
- $this->log('git-tag output: ' . trim($output), Project::MSG_INFO);
- }
-
- public function setAnnotate($flag)
- {
- $this->annotate = (bool)$flag;
- }
-
- public function getAnnotate()
- {
- return $this->annotate;
- }
-
- public function isAnnotate()
- {
- return $this->getAnnotate();
- }
-
- public function setSign($flag)
- {
- $this->sign = (bool)$flag;
- }
-
- public function getSign()
- {
- return $this->sign;
- }
-
- public function isSign()
- {
- return $this->getSign();
- }
-
- public function setKeySign($keyId)
- {
- $this->keySign = $keyId;
- }
-
- public function getKeySign()
- {
- return $this->keySign;
- }
-
- public function setReplace($flag)
- {
- $this->replace = (bool)$flag;
- }
-
- public function getReplace()
- {
- return $this->replace;
- }
-
- public function isReplace()
- {
- return $this->getReplace();
- }
-
- public function setForce($flag)
- {
- return $this->setReplace($flag);
- }
-
- public function setDelete($flag)
- {
- $this->delete = (bool)$flag;
- }
-
- public function getDelete()
- {
- return $this->delete;
- }
-
- public function isDelete()
- {
- return $this->getDelete();
- }
-
- public function setVerify($flag)
- {
- $this->verify = (bool)$flag;
- }
-
- public function getVerify()
- {
- return $this->verify;
- }
-
- public function isVerify()
- {
- return $this->getVerify();
- }
-
- public function setList($flag)
- {
- $this->list = (bool)$flag;
- }
-
- public function getList()
- {
- return $this->list;
- }
-
- public function isList()
- {
- return $this->getList();
- }
-
- public function setNum($num)
- {
- $this->num = (int)$num;
- }
-
- public function getNum()
- {
- return $this->num;
- }
-
- public function setContains($commit)
- {
- $this->contains = $commit;
- }
-
- public function getContains()
- {
- return $this->contains;
- }
-
- public function setMessage($msg)
- {
- $this->message = $msg;
- }
-
- public function getMessage()
- {
- return $this->message;
- }
-
- public function setFile($file)
- {
- $this->file = $file;
- }
-
- public function getFile()
- {
- return $this->file;
- }
-
- public function setName($name)
- {
- $this->name = $name;
- }
-
- public function getName()
- {
- return $this->name;
- }
-
- public function setCommit($commit)
- {
- $this->commit = $commit;
- }
-
- public function getCommit()
- {
- return $this->commit;
- }
-
- public function setObject($object)
- {
- $this->object = $object;
- }
-
- public function getObject()
- {
- return $this->object;
- }
-
- public function setPattern($pattern)
- {
- $this->pattern = $pattern;
- }
-
- public function getPattern()
- {
- return $this->pattern;
- }
-
- public function setOutputProperty($prop)
- {
- $this->outputProperty = $prop;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeComment.php b/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeComment.php
deleted file mode 100755
index 38ec99d4..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeComment.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * $Id: dbbc1b4830ba43116d5b5e5d20c749598eaf62b7 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Wrapper for comments for ionCube tasks
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: dbbc1b4830ba43116d5b5e5d20c749598eaf62b7 $
- * @package phing.tasks.ext.ioncube
- * @since 2.2.0
- */
-class IoncubeComment
-{
- private $value = "";
-
- public function getValue()
- {
- return $this->value;
- }
-
- public function addText($txt)
- {
- $this->value = trim($txt);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeEncoderTask.php b/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeEncoderTask.php
deleted file mode 100755
index 5a31f355..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeEncoderTask.php
+++ /dev/null
@@ -1,642 +0,0 @@
-<?php
-/**
- * $Id: a6ce870b3d14be7f365468e3a272e5ac16128e93 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/ioncube/IoncubeComment.php';
-
-/**
- * Invokes the ionCube Encoder (PHP4 or PHP5)
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Andrew Eddie <andrew.eddie@jamboworks.com>
- * @author Domenico Sgarbossa <sbraaaa@yahoo.it>
- * @version $Id: a6ce870b3d14be7f365468e3a272e5ac16128e93 $
- * @package phing.tasks.ext.ioncube
- * @since 2.2.0
- */
-class IoncubeEncoderTask extends Task
-{
- private $ionSwitches = array();
-
- private $ionOptions = array();
-
- private $ionOptionsXS = array();
-
- private $comments = array();
-
- private $encoderName = 'ioncube_encoder';
-
- private $fromDir = '';
-
- private $ioncubePath = '/usr/local/ioncube';
-
- private $phpVersion = '5';
-
- private $targetOption = '';
-
- private $toDir = '';
-
- private $showCommandLine = false;
-
- /**
- * Sets whether to show command line before it is executed
- */
- function setShowCommandLine($value)
- {
- $this->showCommandLine = $value;
- }
-
- /**
- * Adds a comment to be used in encoded files
- */
- function addComment(IoncubeComment $comment)
- {
- $this->comments[] = $comment;
- }
-
- /**
- * Sets the allowed server
- */
- function setAllowedServer($value)
- {
- $this->ionOptionsXS['allowed-server'] = $value;
- }
-
- /**
- * Returns the allowed server setting
- */
- function getAllowedServer()
- {
- return $this->ionOptionsXS['allowed-server'];
- }
-
- /**
- * Sets the binary option
- */
- function setBinary($value)
- {
- $this->ionSwitches['binary'] = $value;
- }
-
- /**
- * Returns the binary option
- */
- function getBinary()
- {
- return $this->ionSwitches['binary'];
- }
-
- /**
- * Sets files or folders to copy (separated by space)
- */
- function setCopy($value)
- {
- $this->ionOptionsXS['copy'] = $value;
- }
-
- /**
- * Returns the copy setting
- */
- function getCopy()
- {
- return $this->ionOptionsXS['copy'];
- }
-
- /**
- * Sets additional file patterns, files or directories to encode,
- * or to reverse the effect of copy (separated by space)
- */
- function setEncode($value)
- {
- $this->ionOptionsXS['encode'] = $value;
- }
-
- /**
- * Returns the encode setting
- */
- function getEncode()
- {
- return $this->ionOptionsXS['encode'];
- }
-
- /**
- * Sets regexps of additional files to encrypt (separated by space)
- */
- function setEncrypt($value)
- {
- $this->ionOptionsXS['encrypt'] = $value;
- }
-
- /**
- * Returns regexps of additional files to encrypt (separated by space)
- */
- function getEncrypt()
- {
- return $this->ionOptionsXS['encrypt'];
- }
-
- /**
- * Sets a period after which the files expire
- */
- function setExpirein($value)
- {
- $this->ionOptions['expire-in'] = $value;
- }
-
- /**
- * Returns the expireIn setting
- */
- function getExpirein()
- {
- return $this->ionOptions['expire-in'];
- }
-
- /**
- * Sets a YYYY-MM-DD date to expire the files
- */
- function setExpireon($value)
- {
- $this->ionOptions['expire-on'] = $value;
- }
-
- /**
- * Returns the expireOn setting
- */
- function getExpireon()
- {
- return $this->ionOptions['expire-on'];
- }
-
- /**
- * Sets the source directory
- */
- function setFromDir($value)
- {
- $this->fromDir = $value;
- }
-
- /**
- * Returns the source directory
- */
- function getFromDir()
- {
- return $this->fromDir;
- }
-
- /**
- * Set files and directories to ignore entirely and exclude from the target directory
- * (separated by space).
- */
- function setIgnore($value)
- {
- $this->ionOptionsXS['ignore'] = $value;
- }
-
- /**
- * Returns the ignore setting
- */
- function getIgnore()
- {
- return $this->ionOptionsXS['ignore'];
- }
-
- /**
- * Sets the path to the ionCube encoder
- */
- function setIoncubePath($value)
- {
- $this->ioncubePath = $value;
- }
-
- /**
- * Returns the path to the ionCube encoder
- */
- function getIoncubePath()
- {
- return $this->ioncubePath;
- }
-
- /**
- * Set files and directories not to be ignored (separated by space).
- */
- function setKeep($value)
- {
- $this->ionOptionsXS['keep'] = $value;
- }
-
- /**
- * Returns the ignore setting
- */
- function getKeep()
- {
- return $this->ionOptionsXS['keep'];
- }
-
- /**
- * Sets the path to the license file to use
- */
- function setLicensePath($value)
- {
- $this->ionOptions['with-license'] = $value;
- }
-
- /**
- * Returns the path to the license file to use
- */
- function getLicensePath()
- {
- return $this->ionOptions['with-license'];
- }
-
- /**
- * Sets the no-doc-comments option
- */
- function setNoDocComments($value)
- {
- $this->ionSwitches['no-doc-comment'] = $value;
- }
-
- /**
- * Returns the no-doc-comments option
- */
- function getNoDocComments()
- {
- return $this->ionSwitches['no-doc-comment'];
- }
-
- /**
- * Sets the obfuscate option
- */
- function setObfuscate($value)
- {
- $this->ionOptionsXS['obfuscate'] = $value;
- }
-
- /**
- * Returns the optimize option
- */
- function getObfuscate()
- {
- return $this->ionOptionsXS['obfuscate'];
- }
-
- /**
- * Sets the obfuscation key (required if using the obfuscate option)
- */
- function setObfuscationKey($value)
- {
- $this->ionOptions['obfuscation-key'] = $value;
- }
-
- /**
- * Returns the optimize option
- */
- function getObfuscationKey()
- {
- return $this->ionOptions['obfuscation-key'];
- }
-
- /**
- * Sets the optimize option
- */
- function setOptimize($value)
- {
- $this->ionOptions['optimize'] = $value;
- }
-
- /**
- * Returns the optimize option
- */
- function getOptimize()
- {
- return $this->ionOptions['optimize'];
- }
-
- /**
- * Sets the passphrase to use when encoding files
- */
- function setPassPhrase($value)
- {
- $this->ionOptions['passphrase'] = $value;
- }
-
- /**
- * Returns the passphrase to use when encoding files
- */
- function getPassPhrase()
- {
- return $this->ionOptions['passphrase'];
- }
-
- /**
- * Sets the version of PHP to use (defaults to 5)
- */
- function setPhpVersion($value)
- {
- $this->phpVersion = $value;
- }
-
- /**
- * Returns the version of PHP to use (defaults to 5)
- */
- function getPhpVersion()
- {
- return $this->phpVersion;
- }
-
- /**
- * Sets the target directory
- */
- function setToDir($value)
- {
- $this->toDir = $value;
- }
-
- /**
- * Returns the target directory
- */
- function getToDir()
- {
- return $this->toDir;
- }
-
- /**
- * Sets the without-runtime-loader-support option
- */
- function setWithoutRuntimeLoaderSupport($value)
- {
- $this->ionSwitches['without-runtime-loader-support'] = $value;
- }
-
- /**
- * Returns the without-runtime-loader-support option
- */
- function getWithoutRuntimeLoaderSupport()
- {
- return $this->ionSwitches['without-runtime-loader-support'];
- }
-
- /**
- * Sets the no-short-open-tags option
- */
- function setNoShortOpenTags($value)
- {
- $this->ionSwitches['no-short-open-tags'] = $value;
- }
-
- /**
- * Returns the no-short-open-tags option
- */
- function getNoShortOpenTags()
- {
- return $this->ionSwitches['no-short-open-tags'];
- }
-
- /**
- * Sets the ignore-deprecated-warnings option
- */
- function setIgnoreDeprecatedWarnings($value)
- {
- $this->ionSwitches['ignore-deprecated-warnings'] = $value;
- }
-
- /**
- * Returns the ignore-deprecated-warnings option
- */
- function getIgnoreDeprecatedWarnings()
- {
- return $this->ionSwitches['ignore-deprecated-warnings'];
- }
-
- /**
- * Sets the ignore-strict-warnings option
- */
- function setIgnoreStrictWarnings($value)
- {
- $this->ionSwitches['ignore-strict-warnings'] = $value;
- }
-
- /**
- * Returns the ignore-strict-warnings option
- */
- function getIgnoreStrictWarnings()
- {
- return $this->ionSwitches['ignore-strict-warnings'];
- }
-
- /**
- * Sets the allow-encoding-into-source option
- */
- function setAllowEncodingIntoSource($value)
- {
- $this->ionSwitches['allow-encoding-into-source'] = $value;
- }
-
- /**
- * Returns the allow-encoding-into-source option
- */
- function getAllowEncodingIntoSource()
- {
- return $this->ionSwitches['allow-encoding-into-source'];
- }
-
- /**
- * Sets the message-if-no-loader option
- */
- function setMessageIfNoLoader($value)
- {
- $this->ionOptions['message-if-no-loader'] = $value;
- }
-
- /**
- * Returns the message-if-no-loader option
- */
- function getMessageIfNoLoader()
- {
- return $this->ionOptions['message-if-no-loader'];
- }
-
- /**
- * Sets the action-if-no-loader option
- */
- function setActionIfNoLoader($value)
- {
- $this->ionOptions['action-if-no-loader'] = $value;
- }
-
- /**
- * Returns the action-if-no-loader option
- */
- function getActionIfNoLoader()
- {
- return $this->ionOptions['action-if-no-loader'];
- }
-
- /**
- * Sets the option to use when encoding target directory already exists (defaults to none)
- */
- function setTargetOption($targetOption)
- {
- $this->targetOption = $targetOption;
- }
-
- /**
- * Returns he option to use when encoding target directory already exists (defaults to none)
- */
- function getTargetOption()
- {
- return $this->targetOption;
- }
-
- /**
- * Sets the callback-file option
- */
- function setCallbackFile($value)
- {
- $this->ionOptions['callback-file'] = $value;
- }
-
- /**
- * Returns the callback-file option
- */
- function getCallbackFile()
- {
- return $this->ionOptions['callback-file'];
- }
-
- /**
- * Sets the obfuscation-exclusions-file option
- */
- function setObfuscationExclusionFile($value)
- {
- $this->ionOptions['obfuscation-exclusion-file'] = $value;
- }
-
- /**
- * Returns the obfuscation-exclusions-file option
- */
- function getObfuscationExclusionFile()
- {
- return $this->ionOptions['obfuscation-exclusion-file'];
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $arguments = $this->constructArguments();
-
- $encoder = new PhingFile($this->ioncubePath, $this->encoderName . ($this->phpVersion == 5 ? '5' : ''));
-
- $this->log("Running ionCube Encoder...");
-
- if ($this->showCommandLine)
- {
- $this->log("Command line: ".$encoder->__toString() . ' ' . $arguments);
- }
-
- exec($encoder->__toString() . ' ' . $arguments . " 2>&1", $output, $return);
-
- if ($return != 0)
- {
- throw new BuildException("Could not execute ionCube Encoder: " . implode(' ', $output));
- }
- }
-
- /**
- * Constructs an argument string for the ionCube encoder
- */
- private function constructArguments()
- {
- $arguments = '';
-
- foreach ($this->ionSwitches as $name => $value)
- {
- if ($value)
- {
- $arguments.= "--$name ";
- }
- }
-
- foreach ($this->ionOptions as $name => $value)
- {
- /**
- * action-if-no-loader value is a php source snippet so it is
- * better to handle it this way to prevent quote problems!
- */
- if ($name == 'action-if-no-loader')
- {
- $arguments.= "--$name \"$value\" ";
- }
- else
- {
- $arguments.= "--$name '$value' ";
- }
- }
-
- foreach ($this->ionOptionsXS as $name => $value)
- {
- foreach (explode(' ', $value) as $arg)
- {
- $arguments.= "--$name '$arg' ";
- }
- }
-
- foreach ($this->comments as $comment)
- {
- $arguments.= "--add-comment '" . $comment->getValue() . "' ";
- }
-
- if (!empty($this->targetOption))
- {
- switch ($this->targetOption)
- {
- case "replace":
- case "merge":
- case "update":
- case "rename":
- {
- $arguments.= "--" . $this->targetOption . "-target ";
- } break;
-
- default:
- {
- throw new BuildException("Unknown target option '" . $this->targetOption . "'");
- } break;
- }
- }
-
- if ($this->fromDir != '')
- {
- $arguments .= $this->fromDir . ' ';
- }
-
- if ($this->toDir != '')
- {
- $arguments .= "-o " . $this->toDir . ' ';
- }
-
- return $arguments;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeLicenseTask.php b/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeLicenseTask.php
deleted file mode 100755
index 6e7ab68a..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/ioncube/IoncubeLicenseTask.php
+++ /dev/null
@@ -1,208 +0,0 @@
-<?php
-/**
- * $Id: 555e4853cd742e4ef733e3df4051c49cda527b73 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/ioncube/IoncubeComment.php';
-
-/**
- * Invokes the ionCube "make_license" program
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 555e4853cd742e4ef733e3df4051c49cda527b73 $
- * @package phing.tasks.ext.ioncube
- * @since 2.2.0
- */
-class IoncubeLicenseTask extends Task
-{
- private $ioncubePath = "/usr/local/ioncube";
-
- private $licensePath = "";
- private $passPhrase = "";
- private $allowedServer = "";
- private $expireOn = "";
- private $expireIn = "";
- private $comments = array();
-
- /**
- * Sets the path to the ionCube encoder
- */
- function setIoncubePath($ioncubePath)
- {
- $this->ioncubePath = $ioncubePath;
- }
-
- /**
- * Returns the path to the ionCube encoder
- */
- function getIoncubePath()
- {
- return $this->ioncubePath;
- }
-
- /**
- * Sets the path to the license file to use
- */
- function setLicensePath($licensePath)
- {
- $this->licensePath = $licensePath;
- }
-
- /**
- * Returns the path to the license file to use
- */
- function getLicensePath()
- {
- return $this->licensePath;
- }
-
- /**
- * Sets the passphrase to use when encoding files
- */
- function setPassPhrase($passPhrase)
- {
- $this->passPhrase = $passPhrase;
- }
-
- /**
- * Returns the passphrase to use when encoding files
- */
- function getPassPhrase()
- {
- return $this->passPhrase;
- }
-
- /**
- * Adds a comment to be used in encoded files
- */
- function addComment(IoncubeComment $comment)
- {
- $this->comments[] = $comment;
- }
-
- /**
- * Sets the --allowed-server option to use when generating the license
- */
- function setAllowedServer($allowedServer)
- {
- $this->allowedServer = $allowedServer;
- }
-
- /**
- * Returns the --allowed-server option
- */
- function getAllowedServer()
- {
- return $this->allowedServer;
- }
-
- /**
- * Sets the --expire-on option to use when generating the license
- */
- function setExpireOn($expireOn)
- {
- $this->expireOn = $expireOn;
- }
-
- /**
- * Returns the --expire-on option
- */
- function getExpireOn()
- {
- return $this->expireOn;
- }
-
- /**
- * Sets the --expire-in option to use when generating the license
- */
- function setExpireIn($expireIn)
- {
- $this->expireIn = $expireIn;
- }
-
- /**
- * Returns the --expire-in option
- */
- function getExpireIn()
- {
- return $this->expireIn;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $arguments = $this->constructArguments();
-
- $makelicense = new PhingFile($this->ioncubePath, 'make_license');
-
- $this->log("Running ionCube make_license...");
-
- exec($makelicense->__toString() . " " . $arguments . " 2>&1", $output, $return);
-
- if ($return != 0)
- {
- throw new BuildException("Could not execute ionCube make_license: " . implode(' ', $output));
- }
- }
-
- /**
- * Constructs an argument string for the ionCube make_license
- */
- private function constructArguments()
- {
- $arguments = "";
-
- if (!empty($this->passPhrase))
- {
- $arguments.= "--passphrase '" . $this->passPhrase . "' ";
- }
-
- foreach ($this->comments as $comment)
- {
- $arguments.= "--header-line '" . $comment->getValue() . "' ";
- }
-
- if (!empty($this->licensePath))
- {
- $arguments.= "--o '" . $this->licensePath . "' ";
- }
-
- if (!empty($this->allowedServer))
- {
- $arguments.= "--allowed-server {" . $this->allowedServer . "} ";
- }
-
- if (!empty($this->expireOn))
- {
- $arguments.= "--expire-on " . $this->expireOn . " ";
- }
-
- if (!empty($this->expireIn))
- {
- $arguments.= "--expire-in " . $this->expireIn . " ";
- }
-
- return $arguments;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMin.php b/buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMin.php
deleted file mode 100644
index 44766fc1..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMin.php
+++ /dev/null
@@ -1,292 +0,0 @@
-<?php
-/**
- * jsmin.php - PHP implementation of Douglas Crockford's JSMin.
- *
- * This is pretty much a direct port of jsmin.c to PHP with just a few
- * PHP-specific performance tweaks. Also, whereas jsmin.c reads from stdin and
- * outputs to stdout, this library accepts a string as input and returns another
- * string as output.
- *
- * PHP 5 or higher is required.
- *
- * Permission is hereby granted to use this version of the library under the
- * same terms as jsmin.c, which has the following license:
- *
- * --
- * Copyright (c) 2002 Douglas Crockford (www.crockford.com)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * The Software shall be used for Good, not Evil.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- * --
- *
- * @package JSMin
- * @author Ryan Grove <ryan@wonko.com>
- * @copyright 2002 Douglas Crockford <douglas@crockford.com> (jsmin.c)
- * @copyright 2008 Ryan Grove <ryan@wonko.com> (PHP port)
- * @license http://opensource.org/licenses/mit-license.php MIT License
- * @version 1.1.1 (2008-03-02)
- * @link http://code.google.com/p/jsmin-php/
- */
-
-class JSMin {
- const ORD_LF = 10;
- const ORD_SPACE = 32;
-
- protected $a = '';
- protected $b = '';
- protected $input = '';
- protected $inputIndex = 0;
- protected $inputLength = 0;
- protected $lookAhead = null;
- protected $output = '';
-
- // -- Public Static Methods --------------------------------------------------
-
- public static function minify($js) {
- $jsmin = new JSMin($js);
- return $jsmin->min();
- }
-
- // -- Public Instance Methods ------------------------------------------------
-
- public function __construct($input) {
- $this->input = str_replace("\r\n", "\n", $input);
- $this->inputLength = strlen($this->input);
- }
-
- // -- Protected Instance Methods ---------------------------------------------
-
- protected function action($d) {
- switch($d) {
- case 1:
- $this->output .= $this->a;
-
- case 2:
- $this->a = $this->b;
-
- if ($this->a === "'" || $this->a === '"') {
- for (;;) {
- $this->output .= $this->a;
- $this->a = $this->get();
-
- if ($this->a === $this->b) {
- break;
- }
-
- if (ord($this->a) <= self::ORD_LF) {
- throw new JSMinException('Unterminated string literal.');
- }
-
- if ($this->a === '\\') {
- $this->output .= $this->a;
- $this->a = $this->get();
- }
- }
- }
-
- case 3:
- $this->b = $this->next();
-
- if ($this->b === '/' && (
- $this->a === '(' || $this->a === ',' || $this->a === '=' ||
- $this->a === ':' || $this->a === '[' || $this->a === '!' ||
- $this->a === '&' || $this->a === '|' || $this->a === '?')) {
-
- $this->output .= $this->a . $this->b;
-
- for (;;) {
- $this->a = $this->get();
-
- if ($this->a === '/') {
- break;
- } elseif ($this->a === '\\') {
- $this->output .= $this->a;
- $this->a = $this->get();
- } elseif (ord($this->a) <= self::ORD_LF) {
- throw new JSMinException('Unterminated regular expression '.
- 'literal.');
- }
-
- $this->output .= $this->a;
- }
-
- $this->b = $this->next();
- }
- }
- }
-
- protected function get() {
- $c = $this->lookAhead;
- $this->lookAhead = null;
-
- if ($c === null) {
- if ($this->inputIndex < $this->inputLength) {
- $c = $this->input[$this->inputIndex];
- $this->inputIndex += 1;
- } else {
- $c = null;
- }
- }
-
- if ($c === "\r") {
- return "\n";
- }
-
- if ($c === null || $c === "\n" || ord($c) >= self::ORD_SPACE) {
- return $c;
- }
-
- return ' ';
- }
-
- protected function isAlphaNum($c) {
- return ord($c) > 126 || $c === '\\' || preg_match('/^[\w\$]$/', $c) === 1;
- }
-
- protected function min() {
- $this->a = "\n";
- $this->action(3);
-
- while ($this->a !== null) {
- switch ($this->a) {
- case ' ':
- if ($this->isAlphaNum($this->b)) {
- $this->action(1);
- } else {
- $this->action(2);
- }
- break;
-
- case "\n":
- switch ($this->b) {
- case '{':
- case '[':
- case '(':
- case '+':
- case '-':
- $this->action(1);
- break;
-
- case ' ':
- $this->action(3);
- break;
-
- default:
- if ($this->isAlphaNum($this->b)) {
- $this->action(1);
- }
- else {
- $this->action(2);
- }
- }
- break;
-
- default:
- switch ($this->b) {
- case ' ':
- if ($this->isAlphaNum($this->a)) {
- $this->action(1);
- break;
- }
-
- $this->action(3);
- break;
-
- case "\n":
- switch ($this->a) {
- case '}':
- case ']':
- case ')':
- case '+':
- case '-':
- case '"':
- case "'":
- $this->action(1);
- break;
-
- default:
- if ($this->isAlphaNum($this->a)) {
- $this->action(1);
- }
- else {
- $this->action(3);
- }
- }
- break;
-
- default:
- $this->action(1);
- break;
- }
- }
- }
-
- return $this->output;
- }
-
- protected function next() {
- $c = $this->get();
-
- if ($c === '/') {
- switch($this->peek()) {
- case '/':
- for (;;) {
- $c = $this->get();
-
- if (ord($c) <= self::ORD_LF) {
- return $c;
- }
- }
-
- case '*':
- $this->get();
-
- for (;;) {
- switch($this->get()) {
- case '*':
- if ($this->peek() === '/') {
- $this->get();
- return ' ';
- }
- break;
-
- case null:
- throw new JSMinException('Unterminated comment.');
- }
- }
-
- default:
- return $c;
- }
- }
-
- return $c;
- }
-
- protected function peek() {
- $this->lookAhead = $this->get();
- return $this->lookAhead;
- }
-}
-
-/**
- * @package JSMin
- */
-class JSMinException extends Exception {}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMinTask.php b/buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMinTask.php
deleted file mode 100644
index 26202942..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/jsmin/JsMinTask.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-/*
- * $Id: 4a9a75fcd969cfc4e26a7f2c78836389e8be7864 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/jsmin/JsMin.php';
-
-/**
- * Task to minify javascript files.
- *
- * Requires JSMin which can be found at http://code.google.com/p/jsmin-php/ but
- * is bundled with Phing so no additional install of JsMin is required.
- *
- * @author Frank Kleine <mikey@stubbles.net>
- * @version $Id: 4a9a75fcd969cfc4e26a7f2c78836389e8be7864 $
- * @package phing.tasks.ext
- * @since 2.3.0
- */
-class JsMinTask extends Task
-{
- /**
- * the source files
- *
- * @var FileSet
- */
- protected $filesets = array();
- /**
- * Whether the build should fail, if
- * errors occured
- *
- * @var boolean
- */
- protected $failonerror = false;
-
- /**
- * Define if the target should use or not a suffix -min
- *
- * @var boolean
- */
- protected $suffix = '-min';
-
- /**
- * directory to put minified javascript files into
- *
- * @var string
- */
- protected $targetDir;
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- */
- public function createFileSet()
- {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num - 1];
- }
-
- /**
- * Whether the build should fail, if an error occured.
- *
- * @param boolean $value
- */
- public function setFailonerror($value)
- {
- $this->failonerror = $value;
- }
-
- /**
- * Define if the task should or not use a suffix (-min is the default)
- *
- * @param string $value
- */
- public function setSuffix($value)
- {
- $this->suffix = $value;
- }
-
- /**
- * sets the directory where minified javascript files should be put inot
- *
- * @param string $targetDir
- */
- public function setTargetDir($targetDir)
- {
- $this->targetDir = $targetDir;
- }
-
- /**
- * The init method: Do init steps.
- */
- public function init()
- {
- return true;
- }
-
- /**
- * The main entry point method.
- */
- public function main()
- {
- foreach ($this->filesets as $fs) {
- try {
- $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
- $fullPath = realpath($fs->getDir($this->project));
- foreach ($files as $file) {
- $this->log('Minifying file ' . $file);
- try {
- $target = $this->targetDir . '/' . str_replace($fullPath, '', str_replace('.js', $this->suffix . '.js', $file));
- if (file_exists(dirname($target)) === false) {
- mkdir(dirname($target), 0700, true);
- }
-
- file_put_contents($target, JSMin::minify(file_get_contents($fullPath . '/' . $file)));
- } catch (JSMinException $jsme) {
- $this->log("Could not minify file $file: " . $jsme->getMessage(), Project::MSG_ERR);
- }
- }
- } catch (BuildException $be) {
- // directory doesn't exist or is not readable
- if ($this->failonerror) {
- throw $be;
- } else {
- $this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/liquibase/AbstractLiquibaseTask.php b/buildscripts/phing/classes/phing/tasks/ext/liquibase/AbstractLiquibaseTask.php
deleted file mode 100755
index fbda3ecc..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/liquibase/AbstractLiquibaseTask.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2007-2011 bitExpert AG
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/system/ExecTask.php';
-
-/**
- * Abstract Liquibase task. Base class for all Liquibase Phing tasks.
- *
- * @author Stephan Hochdoerfer <S.Hochdoerfer@bitExpert.de>
- * @version $Id$
- * @since 2.4.10
- * @package phing.tasks.ext.liquibase
- */
-abstract class AbstractLiquibaseTask extends Task
-{
- protected $jar;
- protected $changeLogFile;
- protected $username;
- protected $password;
- protected $url;
- protected $classpathref;
-
-
- /**
- * Sets the absolute path to liquibase jar.
- *
- * @param string the absolute path to the liquibase jar.
- */
- public function setJar($jar)
- {
- $this->jar = $jar;
- }
-
-
- /**
- * Sets the absolute path to the changelog file to use.
- *
- * @param string the absolute path to the changelog file
- */
- public function setChangeLogFile($changelogFile)
- {
- $this->changeLogFile = $changelogFile;
- }
-
-
- /**
- * Sets the username to connect to the database.
- *
- * @param string the username
- */
- public function setUsername($username)
- {
- $this->username = $username;
- }
-
-
- /**
- * Sets the password to connect to the database.
- *
- * @param string the password
- */
- public function setPassword($password)
- {
- $this->password = $password;
- }
-
-
- /**
- * Sets the url to connect to the database in jdbc style, e.g.
- * <code>
- * jdbc:postgresql://psqlhost/mydatabase
- * </code>
- *
- * @param string jdbc connection string
- */
- public function setUrl($url)
- {
- $this->url = $url;
- }
-
-
- /**
- * Sets the Java classpathref.
- *
- * @param string A reference to the classpath that contains the database
- * driver, liquibase.jar, and the changelog.xml file
- */
- public function setclasspathref($classpathref)
- {
- $this->classpathref = $classpathref;
- }
-
-
- /**
- * Ensure that correct parameters were passed in.
- *
- * @return void
- */
- protected function checkParams()
- {
- if((null === $this->jar) or !file_exists($this->jar))
- {
- throw new BuildException(
- sprintf(
- 'Specify the name of the LiquiBase.jar. "%s" does not exist!',
- $this->jar
- )
- );
- }
-
- if((null === $this->changeLogFile) or !file_exists($this->changeLogFile))
- {
- throw new BuildException(
- sprintf(
- 'Specify the name of the Changelog file. "%s" does not exist!',
- $this->changeLogFile
- )
- );
- }
-
- if(null === $this->classpathref)
- {
- throw new BuildException('Please provide a classpath!');
- }
-
- if(null === $this->username)
- {
- throw new BuildException('Please provide a username for database acccess!');
- }
-
- if(null === $this->password)
- {
- throw new BuildException('Please provide a password for database acccess!');
- }
-
- if(null === $this->url)
- {
- throw new BuildException('Please provide a url for database acccess!');
- }
- }
-
-
- /**
- * Executes the given command and returns the output.
- *
- * @param string the command to execute
- * @param string additional parameters
- * @return string the output of the executed command
- */
- protected function execute($lbcommand, $lbparams = '')
- {
- $command = sprintf(
- 'java -jar %s --changeLogFile=%s --url=%s --username=%s --password=%s --classpath=%s %s %s',
- escapeshellarg($this->jar),
- escapeshellarg($this->changeLogFile),
- escapeshellarg($this->url),
- escapeshellarg($this->username),
- escapeshellarg($this->password),
- escapeshellarg($this->classpathref),
- escapeshellarg($lbcommand),
- $lbparams
- );
-
- passthru($command);
-
- return;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseChangeLogTask.php b/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseChangeLogTask.php
deleted file mode 100755
index 77fb97d2..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseChangeLogTask.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2007-2011 bitExpert AG
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-require_once 'phing/tasks/ext/liquibase/AbstractLiquibaseTask.php';
-
-/**
- * Task to create a changelog file.
- *
- * @author Stephan Hochdoerfer <S.Hochdoerfer@bitExpert.de>
- * @version $Id$
- * @since 2.4.10
- * @package phing.tasks.ext.liquibase
- */
-class LiquibaseChangeLogTask extends AbstractLiquibaseTask
-{
- /**
- * @see Task::main()
- */
- public function main()
- {
- $this->checkParams();
- $this->execute('generateChangeLog');
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDbDocTask.php b/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDbDocTask.php
deleted file mode 100755
index e79fae92..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDbDocTask.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2007-2011 bitExpert AG
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-require_once 'phing/tasks/ext/liquibase/AbstractLiquibaseTask.php';
-
-/**
- * Task to create a javadoc-like documentation based on current database and
- * changelog.
- *
- * @author Stephan Hochdoerfer <S.Hochdoerfer@bitExpert.de>
- * @version $Id$
- * @since 2.4.10
- * @package phing.tasks.ext.liquibase
- */
-class LiquibaseDbDocTask extends AbstractLiquibaseTask
-{
- protected $outputDir;
-
-
- /**
- * Sets the output directory where the documentation gets generated to.
- *
- * @param string the output directory
- */
- public function setOutputDir($outputDir)
- {
- $this->outputDir = $outputDir;
- }
-
-
- /**
- * @see AbstractTask::checkParams()
- */
- protected function checkParams()
- {
- parent::checkParams();
-
- if((null === $this->outputDir) or !is_dir($this->outputDir))
- {
- if(!mkdir($this->outputDir, 0777, true))
- {
- throw new BuildException(
- sprintf(
- 'The directory "%s" does not exist and could not be created!',
- $this->outputDir
- )
- );
- }
- }
-
- if(!is_writable($this->outputDir))
- {
- throw new BuildException(
- sprintf(
- 'The directory "%s" is not writable!',
- $this->outputDir
- )
- );
- }
- }
-
-
- /**
- * @see Task::main()
- */
- public function main()
- {
- $this->checkParams();
- $this->execute('dbdoc', escapeshellarg($this->outputDir));
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDiffTask.php b/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDiffTask.php
deleted file mode 100755
index 847f1401..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseDiffTask.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2007-2011 bitExpert AG
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-require_once 'phing/tasks/ext/liquibase/AbstractLiquibaseTask.php';
-
-/**
- * Task to create the diff between two databases. Will output the changes needed
- * to convert the reference database to the database.
- *
- * @author Stephan Hochdoerfer <S.Hochdoerfer@bitExpert.de>
- * @version $Id$
- * @since 2.4.10
- * @package phing.tasks.ext.liquibase
- */
-class LiquibaseDiffTask extends AbstractLiquibaseTask
-{
- protected $referenceUsername;
- protected $referencePassword;
- protected $referenceUrl;
-
-
- /**
- * Sets the username to connect to the reference database.
- *
- * @param string the username
- */
- public function setReferenceUsername($username)
- {
- $this->referenceUsername = $username;
- }
-
-
- /**
- * Sets the password to connect to the refernce database.
- *
- * @param string the password
- */
- public function setReferencePassword($password)
- {
- $this->referencePassword = $password;
- }
-
-
- /**
- * Sets the url to connect to the reference database in jdbc style, e.g.
- * <code>
- * jdbc:postgresql://psqlhost/myrefdatabase
- * </code>
- *
- * @param string jdbc connection string
- */
- public function setReferenceUrl($url)
- {
- $this->referenceUrl = $url;
- }
-
-
- /**
- * @see AbstractTask::checkParams()
- */
- protected function checkParams()
- {
- parent::checkParams();
-
- if(null === $this->referenceUsername)
- {
- throw new BuildException('Please provide a username for the reference database acccess!');
- }
-
- if(null === $this->referencePassword)
- {
- throw new BuildException('Please provide a password for the reference database acccess!');
- }
-
- if(null === $this->referenceUrl)
- {
- throw new BuildException('Please provide a url for the reference database acccess!');
- }
- }
-
-
- /**
- * @see Task::main()
- */
- public function main()
- {
- $this->checkParams();
-
- $refparams = sprintf(
- '--referenceUsername=%s --referencePassword=%s --referenceUrl=%s',
- escapeshellarg($this->referenceUsername),
- escapeshellarg($this->referencePassword),
- escapeshellarg($this->referenceUrl)
- );
-
- // save main changelog file
- $changelogFile = $this->changeLogFile;
-
- // set the name of the new generated changelog file
- $this->setChangeLogFile(dirname($changelogFile).'/diffs/'.date('YmdHis').'.xml');
- if(!is_dir(dirname($changelogFile).'/diffs/'))
- {
- mkdir(dirname($changelogFile).'/diffs/', 0777, true);
- }
- $this->execute('diffChangeLog', $refparams);
-
- $xmlFile = new DOMDocument();
- $xmlFile->load($changelogFile);
-
- // create the new node
- $rootNode = $xmlFile->getElementsByTagName('databaseChangeLog')->item(0);
- $includeNode = $rootNode->appendChild($xmlFile->createElement('include'));
-
- // set the attributes for the new node
- $includeNode->setAttribute('file', str_replace(dirname($changelogFile).'/', '', $this->changeLogFile));
- $includeNode->setAttribute('relativeToChangelogFile', 'true');
- file_put_contents($changelogFile, $xmlFile->saveXML());
-
- $this->setChangeLogFile($changelogFile);
- $this->execute('markNextChangeSetRan');
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseRollbackTask.php b/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseRollbackTask.php
deleted file mode 100755
index ec5584e6..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseRollbackTask.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2007-2011 bitExpert AG
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-require_once 'phing/tasks/ext/liquibase/AbstractLiquibaseTask.php';
-
-/**
- * Rollbacks the database changes.
- *
- * @author Stephan Hochdoerfer <S.Hochdoerfer@bitExpert.de>
- * @version $Id$
- * @since 2.4.10
- * @package phing.tasks.ext.liquibase
- */
-class LiquibaseRollbackTask extends AbstractLiquibaseTask
-{
- protected $rollbackTag;
-
-
- /**
- * Sets the name of the tag to roll back to.
- *
- * @param string the name to roll back to
- */
- public function setRollbackTag($rollbackTag)
- {
- $this->rollbackTag = $rollbackTag;
- }
-
-
- /**
- * @see AbstractTask::checkParams()
- */
- protected function checkParams()
- {
- parent::checkParams();
-
- if(null === $this->rollbackTag)
- {
- throw new BuildException(
- sprintf(
- 'Please specify the tag to rollback to!',
- $this->rollbackTag
- )
- );
- }
- }
-
-
- /**
- * @see Task::main()
- */
- public function main()
- {
- $this->checkParams();
- $this->execute('rollback', escapeshellarg($this->rollbackTag));
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseTagTask.php b/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseTagTask.php
deleted file mode 100755
index 07b0e72e..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseTagTask.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2007-2011 bitExpert AG
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-require_once 'phing/tasks/ext/liquibase/AbstractLiquibaseTask.php';
-
-/**
- * Task to tag the current database state. In case you tag the database multiple
- * times without applying a new changelog before, the tags will overwrite each
- * other!
- *
- * @author Stephan Hochdoerfer <S.Hochdoerfer@bitExpert.de>
- * @version $Id$
- * @since 2.4.10
- * @package phing.tasks.ext.liquibase
- */
-class LiquibaseTagTask extends AbstractLiquibaseTask
-{
- protected $tag;
-
-
- /**
- * Sets the name of tag which is used to mark the database state for
- * possible future rollback.
- *
- * @param string the name to tag the database with
- */
- public function setTag($tag)
- {
- $this->tag = $tag;
- }
-
-
- /**
- * @see AbstractTask::checkParams()
- */
- protected function checkParams()
- {
- parent::checkParams();
-
- if(null === $this->tag)
- {
- throw new BuildException(
- sprintf(
- 'Please specify the tag!',
- $this->tag
- )
- );
- }
- }
-
-
- /**
- * @see Task::main()
- */
- public function main()
- {
- $this->checkParams();
- $this->execute('tag', escapeshellarg($this->tag));
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseUpdateTask.php b/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseUpdateTask.php
deleted file mode 100755
index 35162e4d..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/liquibase/LiquibaseUpdateTask.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/**
- * Copyright (c) 2007-2011 bitExpert AG
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-require_once 'phing/tasks/ext/liquibase/AbstractLiquibaseTask.php';
-
-/**
- * Task to update the database to latest version of the changelog file.
- *
- * @author Stephan Hochdoerfer <S.Hochdoerfer@bitExpert.de>
- * @version $Id$
- * @since 2.4.10
- * @package phing.tasks.ext.liquibase
- */
-class LiquibaseUpdateTask extends AbstractLiquibaseTask
-{
- /**
- * @see Task::main()
- */
- public function main()
- {
- $this->checkParams();
- $this->execute('update');
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependAnalyzerElement.php b/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependAnalyzerElement.php
deleted file mode 100644
index 53286f46..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependAnalyzerElement.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/**
- * $Id: f3a492fa25b203d3263e3463c1ab522c61bd0a9c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Analyzer element for the PhpDependTask
- *
- * @package phing.tasks.ext.pdepend
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: f3a492fa25b203d3263e3463c1ab522c61bd0a9c $
- * @since 2.4.1
- */
-class PhpDependAnalyzerElement
-{
- /**
- * The type of the analyzer
- *
- * @var string
- */
- protected $_type = '';
-
- /**
- * The value(s) for the analyzer option
- *
- * @var array
- */
- protected $_value = array();
-
- /**
- * Sets the analyzer type
- *
- * @param string $type Type of the analyzer
- *
- * @return void
- */
- public function setType($type)
- {
- $this->_type = $type;
-
- switch ($this->_type) {
- case 'coderank-mode':
- break;
-
- default:
- throw new BuildException(
- "Analyzer '" . $this->_type . "' not implemented"
- );
- }
- }
-
- /**
- * Get the analyzer type
- *
- * @return string
- */
- public function getType()
- {
- return $this->_type;
- }
-
- /**
- * Sets the value for the analyzer
- *
- * @param string $value Value for the analyzer
- *
- * @return void
- */
- public function setValue($value)
- {
- $this->_value = array();
-
- $token = ' ,;';
- $values = strtok($value, $token);
-
- while ($values !== false) {
- $this->_value[] = $values;
- $values = strtok($token);
- }
- }
-
- /**
- * Get the analyzer value
- *
- * @return string
- */
- public function getValue()
- {
- return $this->_value;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependLoggerElement.php b/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependLoggerElement.php
deleted file mode 100644
index 619f7377..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependLoggerElement.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/**
- * $Id: 6aa728f12c6a9b89fb93cfd39908918937a6d5f9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Logger element for the PhpDependTask.
- *
- * @package phing.tasks.ext.pdepend
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 6aa728f12c6a9b89fb93cfd39908918937a6d5f9 $
- * @since 2.4.1
- */
-class PhpDependLoggerElement
-{
- /**
- * The type of the logger.
- *
- * @var string
- */
- protected $_type = '';
-
- /**
- * Output file for logger.
- *
- * @var PhingFile
- */
- protected $_outfile = null;
-
- /**
- * Sets the logger type.
- *
- * @param string $type Type of the logger
- *
- * @return void
- */
- public function setType($type)
- {
- $this->_type = $type;
-
- switch ($this->_type) {
- case 'jdepend-chart':
- case 'jdepend-xml':
- case 'overview-pyramid':
- case 'phpunit-xml':
- case 'summary-xml':
- break;
-
- default:
- throw new BuildException(
- "Logger '" . $this->_type . "' not implemented"
- );
- }
- }
-
- /**
- * Get the logger type
- *
- * @return string
- */
- public function getType()
- {
- return $this->_type;
- }
-
- /**
- * Sets the output file for the logger results.
- *
- * @param PhingFile $outfile The output file
- *
- * @return void
- */
- public function setOutfile(PhingFile $outfile)
- {
- $this->_outfile = $outfile;
- }
-
- /**
- * Get the output file.
- *
- * @return PhingFile
- */
- public function getOutfile()
- {
- return $this->_outfile;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependTask.php b/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependTask.php
deleted file mode 100644
index c42575b7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdepend/PhpDependTask.php
+++ /dev/null
@@ -1,506 +0,0 @@
-<?php
-/**
- * $Id: 572bbfe2e542b864211a85de9990f5cbfe31a4cd $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Runs the PHP_Depend software analyzer and metric tool.
- * Performs static code analysis on a given source base.
- *
- * @package phing.tasks.ext.pdepend
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 572bbfe2e542b864211a85de9990f5cbfe31a4cd $
- * @since 2.4.1
- */
-class PhpDependTask extends Task
-{
- /**
- * A php source code filename or directory
- *
- * @var PhingFile
- */
- protected $_file = null;
-
- /**
- * All fileset objects assigned to this task
- *
- * @var array<FileSet>
- */
- protected $_filesets = array();
-
- /**
- * List of allowed file extensions. Default file extensions are <b>php</b>
- * and <p>php5</b>.
- *
- * @var array<string>
- */
- protected $_allowedFileExtensions = array('php', 'php5');
-
- /**
- * List of exclude directories. Default exclude dirs are <b>.git</b>,
- * <b>.svn</b> and <b>CVS</b>.
- *
- * @var array<string>
- */
- protected $_excludeDirectories = array('.git', '.svn', 'CVS');
-
- /**
- * List of exclude packages
- *
- * @var array<string>
- */
- protected $_excludePackages = array();
-
- /**
- * Should the parse ignore doc comment annotations?
- *
- * @var boolean
- */
- protected $_withoutAnnotations = false;
-
- /**
- * Should PHP_Depend treat <b>+global</b> as a regular project package?
- *
- * @var boolean
- */
- protected $_supportBadDocumentation = false;
-
- /**
- * Flag for enable/disable debugging
- *
- * @var boolean
- */
- protected $_debug = false;
-
- /**
- * PHP_Depend configuration file
- *
- * @var PhingFile
- */
- protected $_configFile = null;
-
- /**
- * Logger elements
- *
- * @var array<PhpDependLoggerElement>
- */
- protected $_loggers = array();
-
- /**
- * Analyzer elements
- *
- * @var array<PhpDependAnalyzerElement>
- */
- protected $_analyzers = array();
-
- /**
- * Holds the PHP_Depend runner instance
- *
- * @var PHP_Depend_TextUI_Runner
- */
- protected $_runner = null;
-
- /**
- * Flag that determines whether to halt on error
- *
- * @var boolean
- */
- protected $_haltonerror = false;
-
- /**
- * Load the necessary environment for running PHP_Depend
- *
- * @return void
- * @throws BuildException
- */
- public function init()
- {
- /**
- * Determine PHP_Depend installation
- */
- @include_once 'PHP/Depend/TextUI/Runner.php';
-
- if (! class_exists('PHP_Depend_TextUI_Runner')) {
- throw new BuildException(
- 'PhpDependTask depends on PHP_Depend being installed '
- . 'and on include_path',
- $this->getLocation()
- );
- }
-
- /**
- * Other dependencies that should only be loaded
- * when class is actually used
- */
- require_once 'phing/tasks/ext/pdepend/PhpDependLoggerElement.php';
- require_once 'phing/tasks/ext/pdepend/PhpDependAnalyzerElement.php';
- require_once 'PHP/Depend/Autoload.php';
- }
-
- /**
- * Set the input source file or directory
- *
- * @param PhingFile $file The input source file or directory
- *
- * @return void
- */
- public function setFile(PhingFile $file)
- {
- $this->_file = $file;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute)
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet()
- {
- $num = array_push($this->_filesets, new FileSet());
- return $this->_filesets[$num-1];
- }
-
- /**
- * Sets a list of filename extensions for valid php source code files
- *
- * @param string $fileExtensions List of valid file extensions
- *
- * @return void
- */
- public function setAllowedFileExtensions($fileExtensions)
- {
- $this->_allowedFileExtensions = array();
-
- $token = ' ,;';
- $ext = strtok($fileExtensions, $token);
-
- while ($ext !== false) {
- $this->_allowedFileExtensions[] = $ext;
- $ext = strtok($token);
- }
- }
-
- /**
- * Sets a list of exclude directories
- *
- * @param string $excludeDirectories List of exclude directories
- *
- * @return void
- */
- public function setExcludeDirectories($excludeDirectories)
- {
- $this->_excludeDirectories = array();
-
- $token = ' ,;';
- $pattern = strtok($excludeDirectories, $token);
-
- while ($pattern !== false) {
- $this->_excludeDirectories[] = $pattern;
- $pattern = strtok($token);
- }
- }
-
- /**
- * Sets a list of exclude packages
- *
- * @param string $excludePackages Exclude packages
- *
- * @return void
- */
- public function setExcludePackages($excludePackages)
- {
- $this->_excludePackages = array();
-
- $token = ' ,;';
- $pattern = strtok($excludePackages, $token);
-
- while ($pattern !== false) {
- $this->_excludePackages[] = $pattern;
- $pattern = strtok($token);
- }
- }
-
- /**
- * Should the parser ignore doc comment annotations?
- *
- * @param boolean $withoutAnnotations
- *
- * @return void
- */
- public function setWithoutAnnotations($withoutAnnotations)
- {
- $this->_withoutAnnotations = StringHelper::booleanValue(
- $withoutAnnotations
- );
- }
-
- /**
- * Should PHP_Depend support projects with a bad documentation. If this
- * option is set to <b>true</b>, PHP_Depend will treat the default package
- * <b>+global</b> as a regular project package.
- *
- * @param boolean $supportBadDocumentation
- *
- * @return void
- */
- public function setSupportBadDocumentation($supportBadDocumentation)
- {
- $this->_supportBadDocumentation = StringHelper::booleanValue(
- $supportBadDocumentation
- );
- }
-
- /**
- * Set debugging On/Off
- *
- * @param boolean $debug
- *
- * @return void
- */
- public function setDebug($debug)
- {
- $this->_debug = StringHelper::booleanValue($debug);
- }
-
- /**
- * Set halt on error
- *
- * @param boolean $haltonerror
- *
- * @return void
- */
- public function setHaltonerror($haltonerror)
- {
- $this->_haltonerror = StringHelper::booleanValue($haltonerror);
- }
-
- /**
- * Set the configuration file
- *
- * @param PhingFile $configFile The configuration file
- *
- * @return void
- */
- public function setConfigFile(PhingFile $configFile)
- {
- $this->_configFile = $configFile;
- }
-
- /**
- * Create object for nested logger element
- *
- * @return PhpDependLoggerElement
- */
- public function createLogger()
- {
- $num = array_push($this->_loggers, new PhpDependLoggerElement());
- return $this->_loggers[$num-1];
- }
-
- /**
- * Create object for nested analyzer element
- *
- * @return PhpDependAnalyzerElement
- */
- public function createAnalyzer()
- {
- $num = array_push($this->_analyzers, new PhpDependAnalyzerElement());
- return $this->_analyzers[$num-1];
- }
-
- /**
- * Executes PHP_Depend_TextUI_Runner against PhingFile or a FileSet
- *
- * @return void
- * @throws BuildException
- */
- public function main()
- {
- $autoload = new PHP_Depend_Autoload();
- $autoload->register();
-
- if (!isset($this->_file) and count($this->_filesets) == 0) {
- throw new BuildException(
- "Missing either a nested fileset or attribute 'file' set"
- );
- }
-
- if (count($this->_loggers) == 0) {
- throw new BuildException("Missing nested 'logger' element");
- }
-
- $this->validateLoggers();
- $this->validateAnalyzers();
-
- $filesToParse = array();
-
- if ($this->_file instanceof PhingFile) {
- $filesToParse[] = $this->_file->__toString();
- } else {
- // append any files in filesets
- foreach ($this->_filesets as $fs) {
- $files = $fs->getDirectoryScanner($this->project)
- ->getIncludedFiles();
-
- foreach ($files as $filename) {
- $f = new PhingFile($fs->getDir($this->project), $filename);
- $filesToParse[] = $f->getAbsolutePath();
- }
- }
- }
-
- $this->_runner = new PHP_Depend_TextUI_Runner();
- $this->_runner->addProcessListener(new PHP_Depend_TextUI_ResultPrinter());
-
- $configurationFactory = new PHP_Depend_Util_Configuration_Factory();
- $configuration = $configurationFactory->createDefault();
- $this->_runner->setConfiguration($configuration);
-
- $this->_runner->setSourceArguments($filesToParse);
-
- foreach ($this->_loggers as $logger) {
- // Register logger
- $this->_runner->addLogger(
- $logger->getType(),
- $logger->getOutfile()->__toString()
- );
- }
-
- foreach ($this->_analyzers as $analyzer) {
- // Register additional analyzer
- $this->_runner->addOption(
- $analyzer->getType(),
- $analyzer->getValue()
- );
- }
-
- // Disable annotation parsing
- if ($this->_withoutAnnotations) {
- $this->_runner->setWithoutAnnotations();
- }
-
- // Enable bad documentation support
- if ($this->_supportBadDocumentation) {
- $this->_runner->setSupportBadDocumentation();
- }
-
- // Check for suffix
- if (count($this->_allowedFileExtensions) > 0) {
- $this->_runner->setFileExtensions($this->_allowedFileExtensions);
- }
-
- // Check for ignore directories
- if (count($this->_excludeDirectories) > 0) {
- $this->_runner->setExcludeDirectories($this->_excludeDirectories);
- }
-
- // Check for exclude packages
- if (count($this->_excludePackages) > 0) {
- $this->_runner->setExcludePackages($this->_excludePackages);
- }
-
- // Check for configuration option
- if ($this->_configFile instanceof PhingFile) {
- if (file_exists($this->_configFile->__toString()) === false) {
- throw new BuildException(
- 'The configuration file "'
- . $this->_configFile->__toString() . '" doesn\'t exist.'
- );
- }
-
- // Load configuration file
- $config = new PHP_Depend_Util_Configuration(
- $this->_configFile->__toString(),
- null,
- true
- );
-
- // Store in config registry
- PHP_Depend_Util_ConfigurationInstance::set($config);
- }
-
- if ($this->_debug) {
- require_once 'PHP/Depend/Util/Log.php';
- // Enable debug logging
- PHP_Depend_Util_Log::setSeverity(PHP_Depend_Util_Log::DEBUG);
- }
-
- $this->_runner->run();
-
- if ($this->_runner->hasParseErrors() === true) {
- $this->log('Following errors occurred:');
-
- foreach ($this->_runner->getParseErrors() as $error) {
- $this->log($error);
- }
-
- if ($this->_haltonerror === true) {
- throw new BuildException('Errors occurred during parse process');
- }
- }
- }
-
- /**
- * Validates the available loggers
- *
- * @return void
- * @throws BuildException
- */
- protected function validateLoggers()
- {
- foreach ($this->_loggers as $logger) {
- if ($logger->getType() === '') {
- throw new BuildException(
- "Logger missing required 'type' attribute"
- );
- }
-
- if ($logger->getOutfile() === null) {
- throw new BuildException(
- "Logger requires 'outfile' attribute"
- );
- }
- }
- }
-
- /**
- * Validates the available analyzers
- *
- * @return void
- * @throws BuildException
- */
- protected function validateAnalyzers()
- {
- foreach ($this->_analyzers as $analyzer) {
- if ($analyzer->getType() === '') {
- throw new BuildException(
- "Analyzer missing required 'type' attribute"
- );
- }
-
- if (count($analyzer->getValue()) === 0) {
- throw new BuildException(
- "Analyzer missing required 'value' attribute"
- );
- }
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/DefaultPDOQuerySplitter.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/DefaultPDOQuerySplitter.php
deleted file mode 100755
index 41f296f7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/DefaultPDOQuerySplitter.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/**
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- *
- * @version SVN: $Id: dacfd46938db28930888f57a6924be642ec1b3d7 $
- * @package phing.tasks.ext.pdo
- */
-
-require_once 'phing/tasks/ext/pdo/PDOQuerySplitter.php';
-
-/**
- * Splits SQL source into queries using simple regular expressions
- *
- * Extracted from PDOSQLExecTask::runStatements()
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Alexey Borzov <avb@php.net>
- * @package phing.tasks.ext.pdo
- * @version $Id$
- */
-class DefaultPDOQuerySplitter extends PDOQuerySplitter
-{
- /**
- * Delimiter type, one of PDOSQLExecTask::DELIM_ROW or PDOSQLExecTask::DELIM_NORMAL
- * @var string
- */
- private $delimiterType;
-
- /**
- * Leftover SQL from previous line
- * @var string
- */
- private $sqlBacklog = '';
-
- /**
- * Constructor, sets the parent task, reader with SQL source and delimiter type
- *
- * @param PDOSQLExecTask $parent
- * @param Reader $reader
- * @param string $delimiterType
- */
- public function __construct(PDOSQLExecTask $parent, Reader $reader, $delimiterType = PDOSQLExecTask::DELIM_NORMAL)
- {
- parent::__construct($parent, $reader);
- $this->delimiterType = $delimiterType;
- }
-
- /**
- * Returns next query from SQL source, null if no more queries left
- *
- * In case of "row" delimiter type this searches for strings containing only
- * delimiters. In case of "normal" delimiter type, this uses simple regular
- * expression logic to search for delimiters.
- *
- * @return string|null
- */
- public function nextQuery()
- {
- $sql = "";
- $hasQuery = false;
-
- while (($line = $this->sqlReader->readLine()) !== null) {
- $delimiter = $this->parent->getDelimiter();
- $project = $this->parent->getOwningTarget()->getProject();
- $line = ProjectConfigurator::replaceProperties(
- $project, trim($line), $project->getProperties()
- );
-
- if (($line != $delimiter) && (
- StringHelper::startsWith("//", $line) ||
- StringHelper::startsWith("--", $line) ||
- StringHelper::startsWith("#", $line))) {
- continue;
- }
-
- if (strlen($line) > 4
- && strtoupper(substr($line,0, 4)) == "REM ") {
- continue;
- }
-
- // MySQL supports defining new delimiters
- if (preg_match('/DELIMITER [\'"]?([^\'" $]+)[\'"]?/i', $line, $matches)) {
- $this->parent->setDelimiter($matches[1]);
- continue;
- }
-
- if ($this->sqlBacklog !== "") {
- $sql = $this->sqlBacklog;
- $this->sqlBacklog = "";
- }
-
- $sql .= " " . $line . "\n";
-
- // SQL defines "--" as a comment to EOL
- // and in Oracle it may contain a hint
- // so we cannot just remove it, instead we must end it
- if (strpos($line, "--") !== false) {
- $sql .= "\n";
- }
-
- // DELIM_ROW doesn't need this (as far as i can tell)
- if ($this->delimiterType == PDOSQLExecTask::DELIM_NORMAL) {
-
- $reg = "#((?:\"(?:\\\\.|[^\"])*\"?)+|'(?:\\\\.|[^'])*'?|" . preg_quote($delimiter) . ")#";
-
- $sqlParts = preg_split($reg, $sql, 0, PREG_SPLIT_DELIM_CAPTURE);
- $this->sqlBacklog = "";
- foreach ($sqlParts as $sqlPart) {
- // we always want to append, even if it's a delim (which will be stripped off later)
- $this->sqlBacklog .= $sqlPart;
-
- // we found a single (not enclosed by ' or ") delimiter, so we can use all stuff before the delim as the actual query
- if ($sqlPart === $delimiter) {
- $sql = $this->sqlBacklog;
- $this->sqlBacklog = "";
- $hasQuery = true;
- }
- }
- }
-
- if ($hasQuery || ($this->delimiterType == PDOSQLExecTask::DELIM_ROW && $line == $delimiter)) {
- // this assumes there is always a delimter on the end of the SQL statement.
- $sql = StringHelper::substring($sql, 0, strlen($sql) - strlen($delimiter)
- - ($this->delimiterType == PDOSQLExecTask::DELIM_ROW ? 2 : 1));
- return $sql;
- }
- }
-
- // Catch any statements not followed by ;
- if ($sql !== "") {
- return $sql;
- }
-
- return null;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOQuerySplitter.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOQuerySplitter.php
deleted file mode 100755
index 60a9d436..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOQuerySplitter.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/**
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- *
- * @version $Id: e84ada3cdb7a04da60158c7a352fbb06f17f2ca7 $
- * @package phing.tasks.ext.pdo
- */
-
-/**
- * Base class for classes that split SQL source into separate queries
- *
- * @author Alexey Borzov <avb@php.net>
- * @package phing.tasks.ext.pdo
- * @version $Id$
- */
-abstract class PDOQuerySplitter
-{
- /**
- * Task that uses the splitter
- * @var PDOSQLExecTask
- */
- protected $parent;
-
- /**
- * Reader with SQL source
- * @var BufferedReader
- */
- protected $sqlReader;
-
- /**
- * Constructor, sets the parent task and reader with SQL source
- *
- * @param PDOSQLExecTask $parent
- * @param Reader $reader
- */
- public function __construct(PDOSQLExecTask $parent, Reader $reader)
- {
- $this->parent = $parent;
- $this->sqlReader = new BufferedReader($reader);
- }
-
- /**
- * Returns next query from SQL source, null if no more queries left
- *
- * @return string|null
- */
- abstract public function nextQuery();
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOResultFormatter.php
deleted file mode 100644
index 82a90ca4..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOResultFormatter.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * $Id: a3237522d22494bbfaf0521ebb8f091d448f3614 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * Abstract
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.tasks.ext.pdo
- * @since 2.3.0
- */
-abstract class PDOResultFormatter
-{
- /**
- * Output writer.
- *
- * @var Writer
- */
- protected $out;
-
- /**
- * Sets the output writer.
- *
- * @param Writer $out
- */
- public function setOutput(Writer $out) {
- $this->out = $out;
- }
-
- /**
- * Gets the output writer.
- *
- * @return Writer
- */
- public function getOutput() {
- return $this->out;
- }
-
- /**
- * Gets the preferred output filename for this formatter.
- * @return string
- */
- abstract public function getPreferredOutfile();
-
- /**
- * Perform any initialization.
- */
- public function initialize() {
-
- }
-
- /**
- * Processes a specific row from PDO result set.
- *
- * @param array $row Row of PDO result set.
- */
- abstract public function processRow($row);
-
- /**
- * Perform any final tasks and Close the writer.
- */
- public function close() {
- $this->out->close();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php
deleted file mode 100644
index bc657604..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php
+++ /dev/null
@@ -1,313 +0,0 @@
-<?php
-/**
- * $Id: a3ca52c2b277a8cbc0d2802b75f2bea18701b636 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/tasks/ext/pdo/PlainPDOResultFormatter.php';
-require_once 'phing/tasks/ext/pdo/XMLPDOResultFormatter.php';
-require_once 'phing/util/LogWriter.php';
-
-/**
- * A class to represent the nested <formatter> element for PDO SQL results.
- *
- * This class is inspired by the similarly-named class in the PHPUnit tasks.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.tasks.ext.pdo
- * @since 2.3.0
- */
-class PDOSQLExecFormatterElement
-{
- /**
- * @var PDOResultFormatter
- */
- private $formatter;
-
- /**
- * The type of the formatter (used for built-in formatter classes).
- * @var string
- */
- private $type = "";
-
- /**
- * Whether to use file (or write output to phing log).
- * @var boolean
- */
- private $useFile = true;
-
- /**
- * Output file for formatter.
- * @var PhingFile
- */
- private $outfile;
-
- /**
- * Print header columns.
- * @var boolean
- */
- private $showheaders = true;
-
- /**
- * Whether to format XML output.
- * @var boolean
- */
- private $formatoutput = true;
-
- /**
- * Encoding for XML output.
- * @var string
- */
- private $encoding;
-
- /**
- * Column delimiter.
- * Defaults to ','
- * @var string
- */
- private $coldelimiter = ",";
-
- /**
- * Row delimiter.
- * Defaults to PHP_EOL.
- * @var string
- */
- private $rowdelimiter = PHP_EOL;
-
- /**
- * Append to an existing file or overwrite it?
- * @var boolean
- */
- private $append = false;
-
- /**
- * Parameters for a custom formatter.
- * @var array Parameter[]
- */
- private $formatterParams = array();
-
- /**
- * @var PDOSQLExecTask
- */
- private $parentTask;
-
- /**
- * Construct a new PDOSQLExecFormatterElement with parent task.
- * @param PDOSQLExecTask $parentTask
- */
- public function __construct(PDOSQLExecTask $parentTask)
- {
- $this->parentTask = $parentTask;
- }
-
- /**
- * Supports nested <param> element (for custom formatter classes).
- * @return Parameter
- */
- public function createParam() {
- $num = array_push($this->parameters, new Parameter());
- return $this->parameters[$num-1];
- }
-
- /**
- * Gets a configured output writer.
- * @return Writer
- */
- private function getOutputWriter()
- {
- if ($this->useFile) {
- $of = $this->getOutfile();
- if (!$of) {
- $of = new PhingFile($this->formatter->getPreferredOutfile());
- }
- return new FileWriter($of, $this->append);
- } else {
- return $this->getDefaultOutput();
- }
- }
-
- /**
- * Configures wrapped formatter class with any attributes on this element.
- */
- public function prepare() {
-
- if (!$this->formatter) {
- throw new BuildException("No formatter specified (use type or classname attribute)", $this->getLocation());
- }
-
- $out = $this->getOutputWriter();
-
- $this->parentTask->log("Setting output writer to: " . get_class($out), Project::MSG_VERBOSE);
- $this->formatter->setOutput($out);
-
- if ($this->formatter instanceof PlainPDOResultFormatter) {
- // set any options that apply to the plain formatter
- $this->formatter->setShowheaders($this->showheaders);
- $this->formatter->setRowdelim($this->rowdelimiter);
- $this->formatter->setColdelim($this->coldelimiter);
- } elseif ($this->formatter instanceof XMLPDOResultFormatter) {
- // set any options that apply to the xml formatter
- $this->formatter->setEncoding($this->encoding);
- $this->formatter->setFormatOutput($this->formatoutput);
- }
-
- foreach($this->formatterParams as $param) {
- $param = new Parameter();
- $method = 'set' . $param->getName();
- if (!method_exists($this->formatter, $param->getName())) {
- throw new BuildException("Formatter " . get_class($this->formatter) . " does not have a $method method.", $this->getLocation());
- }
- call_user_func(array($this->formatter, $method), $param->getValue());
- }
- }
-
- /**
- * Sets the formatter type.
- * @param string $type
- */
- function setType($type) {
- $this->type = $type;
- if ($this->type == "xml") {
- $this->formatter = new XMLPDOResultFormatter();
- } elseif ($this->type == "plain") {
- $this->formatter = new PlainPDOResultFormatter();
- } else {
- throw new BuildException("Formatter '" . $this->type . "' not implemented");
- }
- }
-
- /**
- * Set classname for a custom formatter (must extend PDOResultFormatter).
- * @param string $className
- */
- function setClassName($className) {
- $classNameNoDot = Phing::import($className);
- $this->formatter = new $classNameNoDot();
- }
-
- /**
- * Set whether to write formatter results to file.
- * @param boolean $useFile
- */
- function setUseFile($useFile) {
- $this->useFile = (boolean) $useFile;
- }
-
- /**
- * Return whether to write formatter results to file.
- * @return boolean
- */
- function getUseFile() {
- return $this->useFile;
- }
-
- /**
- * Sets the output file for the formatter results.
- * @param PhingFile $outFile
- */
- function setOutfile(PhingFile $outfile) {
- $this->outfile = $outfile;
- }
-
- /**
- * Get the output file.
- * @return PhingFile
- */
- function getOutfile() {
- return $this->outfile;
- /*
- } else {
- return new PhingFile($this->formatter->getPreferredOutfile());
- }*/
- }
-
- /**
- * whether output should be appended to or overwrite
- * an existing file. Defaults to false.
- * @param boolean $append
- */
- public function setAppend($append) {
- $this->append = (boolean) $append;
- }
-
- /**
- * Whether output should be appended to file.
- * @return boolean
- */
- public function getAppend() {
- return $this->append;
- }
-
- /**
- * Print headers for result sets from the
- * statements; optional, default true.
- * @param boolean $showheaders
- */
- public function setShowheaders($showheaders) {
- $this->showheaders = (boolean) $showheaders;
- }
-
- /**
- * Sets the column delimiter.
- * @param string $v
- */
- public function setColdelim($v) {
- $this->coldelimiter = $v;
- }
-
- /**
- * Sets the row delimiter.
- * @param string $v
- */
- public function setRowdelim($v) {
- $this->rowdelimiter = $v;
- }
-
- /**
- * Set the DOM document encoding.
- * @param string $v
- */
- public function setEncoding($v) {
- $this->encoding = $v;
- }
-
- /**
- * @param boolean $v
- */
- public function setFormatOutput($v) {
- $this->formatOutput = (boolean) $v;
- }
-
- /**
- * Gets a default output writer for this task.
- * @return Writer
- */
- private function getDefaultOutput()
- {
- return new LogWriter($this->parentTask);
- }
-
- /**
- * Gets the formatter that has been configured based on this element.
- * @return PDOResultFormatter
- */
- function getFormatter() {
- return $this->formatter;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecTask.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecTask.php
deleted file mode 100755
index 3837d7ff..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOSQLExecTask.php
+++ /dev/null
@@ -1,606 +0,0 @@
-<?php
-/*
- * $Id: 8b5a8e4f80b46f8a797b058dbb9a240a1185c12b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/pdo/PDOTask.php';
-include_once 'phing/system/io/StringReader.php';
-include_once 'phing/tasks/ext/pdo/PDOSQLExecFormatterElement.php';
-
-/**
- * Executes a series of SQL statements on a database using PDO.
- *
- * <p>Statements can
- * either be read in from a text file using the <i>src</i> attribute or from
- * between the enclosing SQL tags.</p>
- *
- * <p>Multiple statements can be provided, separated by semicolons (or the
- * defined <i>delimiter</i>). Individual lines within the statements can be
- * commented using either --, // or REM at the start of the line.</p>
- *
- * <p>The <i>autocommit</i> attribute specifies whether auto-commit should be
- * turned on or off whilst executing the statements. If auto-commit is turned
- * on each statement will be executed and committed. If it is turned off the
- * statements will all be executed as one transaction.</p>
- *
- * <p>The <i>onerror</i> attribute specifies how to proceed when an error occurs
- * during the execution of one of the statements.
- * The possible values are: <b>continue</b> execution, only show the error;
- * <b>stop</b> execution and commit transaction;
- * and <b>abort</b> execution and transaction and fail task.</p>
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Jeff Martin <jeff@custommonkey.org> (Ant)
- * @author Michael McCallum <gholam@xtra.co.nz> (Ant)
- * @author Tim Stephenson <tim.stephenson@sybase.com> (Ant)
- * @package phing.tasks.ext.pdo
- * @version $Id: 8b5a8e4f80b46f8a797b058dbb9a240a1185c12b $
- */
-class PDOSQLExecTask extends PDOTask {
-
- /**
- * Count of how many statements were executed successfully.
- * @var int
- */
- private $goodSql = 0;
-
- /**
- * Count of total number of SQL statements.
- * @var int
- */
- private $totalSql = 0;
-
- const DELIM_ROW = "row";
- const DELIM_NORMAL = "normal";
-
- /**
- * Database connection
- * @var PDO
- */
- private $conn = null;
-
- /**
- * Files to load
- * @var array FileSet[]
- */
- private $filesets = array();
-
- /**
- * Files to load
- * @var array FileList[]
- */
- private $filelists = array();
-
- /**
- * Formatter elements.
- * @var array PDOSQLExecFormatterElement[]
- */
- private $formatters = array();
-
- /**
- * SQL statement
- * @var PDOStatement
- */
- private $statement;
-
- /**
- * SQL input file
- * @var PhingFile
- */
- private $srcFile;
-
- /**
- * SQL input command
- * @var string
- */
- private $sqlCommand = "";
-
- /**
- * SQL transactions to perform
- */
- private $transactions = array();
-
- /**
- * SQL Statement delimiter (for parsing files)
- * @var string
- */
- private $delimiter = ";";
-
- /**
- * The delimiter type indicating whether the delimiter will
- * only be recognized on a line by itself
- */
- private $delimiterType = "normal"; // can't use constant just defined
-
- /**
- * Action to perform if an error is found
- **/
- private $onError = "abort";
-
- /**
- * Encoding to use when reading SQL statements from a file
- */
- private $encoding = null;
-
- /**
- * Fetch mode for PDO select queries.
- * @var int
- */
- private $fetchMode;
-
- /**
- * Set the name of the SQL file to be run.
- * Required unless statements are enclosed in the build file
- */
- public function setSrc(PhingFile $srcFile) {
- $this->srcFile = $srcFile;
- }
-
- /**
- * Set an inline SQL command to execute.
- * NB: Properties are not expanded in this text.
- */
- public function addText($sql) {
- $this->sqlCommand .= $sql;
- }
-
- /**
- * Adds a set of files (nested fileset attribute).
- */
- public function addFileset(FileSet $set) {
- $this->filesets[] = $set;
- }
-
- /**
- * Adds a set of files (nested filelist attribute).
- */
- public function addFilelist(FileList $list) {
- $this->filelists[] = $list;
- }
-
- /**
- * Creates a new PDOSQLExecFormatterElement for <formatter> element.
- * @return PDOSQLExecFormatterElement
- */
- public function createFormatter()
- {
- $fe = new PDOSQLExecFormatterElement($this);
- $this->formatters[] = $fe;
- return $fe;
- }
-
- /**
- * Add a SQL transaction to execute
- */
- public function createTransaction() {
- $t = new PDOSQLExecTransaction($this);
- $this->transactions[] = $t;
- return $t;
- }
-
- /**
- * Set the file encoding to use on the SQL files read in
- *
- * @param encoding the encoding to use on the files
- */
- public function setEncoding($encoding) {
- $this->encoding = $encoding;
- }
-
- /**
- * Set the statement delimiter.
- *
- * <p>For example, set this to "go" and delimitertype to "ROW" for
- * Sybase ASE or MS SQL Server.</p>
- *
- * @param delimiter
- */
- public function setDelimiter($delimiter)
- {
- $this->delimiter = $delimiter;
- }
-
- /**
- * Get the statement delimiter.
- *
- * @return string
- */
- public function getDelimiter()
- {
- return $this->delimiter;
- }
-
- /**
- * Set the Delimiter type for this sql task. The delimiter type takes two
- * values - normal and row. Normal means that any occurence of the delimiter
- * terminate the SQL command whereas with row, only a line containing just
- * the delimiter is recognized as the end of the command.
- *
- * @param string $delimiterType
- */
- public function setDelimiterType($delimiterType)
- {
- $this->delimiterType = $delimiterType;
- }
-
- /**
- * Action to perform when statement fails: continue, stop, or abort
- * optional; default &quot;abort&quot;
- */
- public function setOnerror($action) {
- $this->onError = $action;
- }
-
- /**
- * Sets the fetch mode to use for the PDO resultset.
- * @param mixed $mode The PDO fetchmode integer or constant name.
- */
- public function setFetchmode($mode) {
- if (is_numeric($mode)) {
- $this->fetchMode = (int) $mode;
- } else {
- if (defined($mode)) {
- $this->fetchMode = constant($mode);
- } else {
- throw new BuildException("Invalid PDO fetch mode specified: " . $mode, $this->getLocation());
- }
- }
- }
-
- /**
- * Gets a default output writer for this task.
- * @return Writer
- */
- private function getDefaultOutput()
- {
- return new LogWriter($this);
- }
-
- /**
- * Load the sql file and then execute it
- * @throws BuildException
- */
- public function main() {
-
- // Set a default fetchmode if none was specified
- // (We're doing that here to prevent errors loading the class is PDO is not available.)
- if ($this->fetchMode === null) {
- $this->fetchMode = PDO::FETCH_ASSOC;
- }
-
- // Initialize the formatters here. This ensures that any parameters passed to the formatter
- // element get passed along to the actual formatter object
- foreach($this->formatters as $fe) {
- $fe->prepare();
- }
-
- $savedTransaction = array();
- for($i=0,$size=count($this->transactions); $i < $size; $i++) {
- $savedTransaction[] = clone $this->transactions[$i];
- }
-
- $savedSqlCommand = $this->sqlCommand;
-
- $this->sqlCommand = trim($this->sqlCommand);
-
- try {
- if ($this->srcFile === null && $this->sqlCommand === ""
- && empty($this->filesets) && empty($this->filelists)
- && count($this->transactions) === 0) {
- throw new BuildException("Source file or fileset/filelist, "
- . "transactions or sql statement "
- . "must be set!", $this->location);
- }
-
- if ($this->srcFile !== null && !$this->srcFile->exists()) {
- throw new BuildException("Source file does not exist!", $this->location);
- }
-
- // deal with the filesets
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($this->project);
- $srcDir = $fs->getDir($this->project);
- $srcFiles = $ds->getIncludedFiles();
- // Make a transaction for each file
- foreach($srcFiles as $srcFile) {
- $t = $this->createTransaction();
- $t->setSrc(new PhingFile($srcDir, $srcFile));
- }
- }
-
- // process filelists
- foreach($this->filelists as $fl) {
- $srcDir = $fl->getDir($this->project);
- $srcFiles = $fl->getFiles($this->project);
- // Make a transaction for each file
- foreach($srcFiles as $srcFile) {
- $t = $this->createTransaction();
- $t->setSrc(new PhingFile($srcDir, $srcFile));
- }
- }
-
- // Make a transaction group for the outer command
- $t = $this->createTransaction();
- if ($this->srcFile) $t->setSrc($this->srcFile);
- $t->addText($this->sqlCommand);
- $this->conn = $this->getConnection();
-
- try {
-
- $this->statement = null;
-
- // Initialize the formatters.
- $this->initFormatters();
-
- try {
-
- // Process all transactions
- for ($i=0,$size=count($this->transactions); $i < $size; $i++) {
- if (!$this->isAutocommit()) {
- $this->log("Beginning transaction", Project::MSG_VERBOSE);
- $this->conn->beginTransaction();
- }
- $this->transactions[$i]->runTransaction();
- if (!$this->isAutocommit()) {
- $this->log("Commiting transaction", Project::MSG_VERBOSE);
- $this->conn->commit();
- }
- }
- } catch (Exception $e) {
- $this->closeConnection();
- throw $e;
- }
- } catch (IOException $e) {
- if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") {
- try {
- $this->conn->rollback();
- } catch (PDOException $ex) {}
- }
- $this->closeConnection();
- throw new BuildException($e->getMessage(), $this->location);
- } catch (PDOException $e){
- if (!$this->isAutocommit() && $this->conn !== null && $this->onError == "abort") {
- try {
- $this->conn->rollback();
- } catch (PDOException $ex) {}
- }
- $this->closeConnection();
- throw new BuildException($e->getMessage(), $this->location);
- }
-
- // Close the formatters.
- $this->closeFormatters();
-
- $this->log($this->goodSql . " of " . $this->totalSql .
- " SQL statements executed successfully");
-
- } catch (Exception $e) {
- $this->transactions = $savedTransaction;
- $this->sqlCommand = $savedSqlCommand;
- $this->closeConnection();
- throw $e;
- }
- // finally {
- $this->transactions = $savedTransaction;
- $this->sqlCommand = $savedSqlCommand;
- $this->closeConnection();
- }
-
-
- /**
- * read in lines and execute them
- * @throws PDOException, IOException
- */
- public function runStatements(Reader $reader) {
-
- if (self::DELIM_NORMAL == $this->delimiterType && 0 === strpos($this->getUrl(), 'pgsql:')) {
- require_once 'phing/tasks/ext/pdo/PgsqlPDOQuerySplitter.php';
- $splitter = new PgsqlPDOQuerySplitter($this, $reader);
- } else {
- require_once 'phing/tasks/ext/pdo/DefaultPDOQuerySplitter.php';
- $splitter = new DefaultPDOQuerySplitter($this, $reader, $this->delimiterType);
- }
-
- try {
- while (null !== ($query = $splitter->nextQuery())) {
- $this->log("SQL: " . $query, Project::MSG_VERBOSE);
- $this->execSQL($query);
- }
-
- } catch (PDOException $e) {
- throw $e;
- }
- }
-
- /**
- * Whether the passed-in SQL statement is a SELECT statement.
- * This does a pretty simple match, checking to see if statement starts with
- * 'select' (but not 'select into').
- *
- * @param string $sql
- * @return boolean Whether specified SQL looks like a SELECT query.
- */
- protected function isSelectSql($sql)
- {
- $sql = trim($sql);
- return (stripos($sql, 'select') === 0 && stripos($sql, 'select into ') !== 0);
- }
-
- /**
- * Exec the sql statement.
- * @throws PDOException
- */
- protected function execSQL($sql) {
-
- // Check and ignore empty statements
- if (trim($sql) == "") {
- return;
- }
-
- try {
- $this->totalSql++;
-
- $this->statement = $this->conn->prepare($sql);
- $this->statement->execute();
- $this->log($this->statement->rowCount() . " rows affected", Project::MSG_VERBOSE);
-
- // only call processResults() for statements that return actual data (such as 'select')
- if ($this->statement->columnCount() > 0)
- {
- $this->processResults();
- }
-
- $this->statement->closeCursor();
- $this->statement = null;
-
- $this->goodSql++;
-
- } catch (PDOException $e) {
- $this->log("Failed to execute: " . $sql, Project::MSG_ERR);
- if ($this->onError != "continue") {
- throw new BuildException("Failed to execute SQL", $e);
- }
- $this->log($e->getMessage(), Project::MSG_ERR);
- }
- }
-
- /**
- * Returns configured PDOResultFormatter objects (which were created from PDOSQLExecFormatterElement objects).
- * @return array PDOResultFormatter[]
- */
- protected function getConfiguredFormatters()
- {
- $formatters = array();
- foreach ($this->formatters as $fe) {
- $formatters[] = $fe->getFormatter();
- }
- return $formatters;
- }
-
- /**
- * Initialize the formatters.
- */
- protected function initFormatters() {
- $formatters = $this->getConfiguredFormatters();
- foreach ($formatters as $formatter) {
- $formatter->initialize();
- }
-
- }
-
- /**
- * Run cleanup and close formatters.
- */
- protected function closeFormatters() {
- $formatters = $this->getConfiguredFormatters();
- foreach ($formatters as $formatter) {
- $formatter->close();
- }
- }
-
- /**
- * Passes results from query to any formatters.
- * @throws PDOException
- */
- protected function processResults() {
-
- try {
-
- $this->log("Processing new result set.", Project::MSG_VERBOSE);
-
- $formatters = $this->getConfiguredFormatters();
-
- while ($row = $this->statement->fetch($this->fetchMode)) {
- foreach ($formatters as $formatter) {
- $formatter->processRow($row);
- }
- }
-
- } catch (Exception $x) {
- $this->log("Error processing reults: " . $x->getMessage(), Project::MSG_ERR);
- foreach ($formatters as $formatter) {
- $formatter->close();
- }
- throw $x;
- }
-
- }
-
- /**
- * Closes current connection
- */
- protected function closeConnection()
- {
- if ($this->conn) {
- unset($this->conn);
- }
- }
-}
-
-/**
- * "Inner" class that contains the definition of a new transaction element.
- * Transactions allow several files or blocks of statements
- * to be executed using the same JDBC connection and commit
- * operation in between.
- *
- * @package phing.tasks.ext.pdo
- */
-class PDOSQLExecTransaction {
-
- private $tSrcFile = null;
- private $tSqlCommand = "";
- private $parent;
-
- function __construct($parent)
- {
- // Parent is required so that we can log things ...
- $this->parent = $parent;
- }
-
- public function setSrc(PhingFile $src)
- {
- $this->tSrcFile = $src;
- }
-
- public function addText($sql)
- {
- $this->tSqlCommand .= $sql;
- }
-
- /**
- * @throws IOException, PDOException
- */
- public function runTransaction()
- {
- if (!empty($this->tSqlCommand)) {
- $this->parent->log("Executing commands", Project::MSG_INFO);
- $this->parent->runStatements(new StringReader($this->tSqlCommand));
- }
-
- if ($this->tSrcFile !== null) {
- $this->parent->log("Executing file: " . $this->tSrcFile->getAbsolutePath(),
- Project::MSG_INFO);
- $reader = new FileReader($this->tSrcFile);
- $this->parent->runStatements($reader);
- $reader->close();
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOTask.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOTask.php
deleted file mode 100755
index 93feaa6d..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/PDOTask.php
+++ /dev/null
@@ -1,215 +0,0 @@
-<?php
-
-/*
- * $Id: de478f3e51714db7d9163b6bbc3fa64de27549cb $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/types/Reference.php';
-
-/**
- * Handles PDO configuration needed by SQL type tasks.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Nick Chalko <nick@chalko.com> (Ant)
- * @author Jeff Martin <jeff@custommonkey.org> (Ant)
- * @author Michael McCallum <gholam@xtra.co.nz> (Ant)
- * @author Tim Stephenson <tim.stephenson@sybase.com> (Ant)
- * @version $Id$
- * @package phing.tasks.system
- */
-abstract class PDOTask extends Task {
-
- private $caching = true;
-
- /**
- * Autocommit flag. Default value is false
- */
- private $autocommit = false;
-
- /**
- * DB url.
- */
- private $url;
-
- /**
- * User name.
- */
- private $userId;
-
- /**
- * Password
- */
- private $password;
-
- /**
- * RDBMS Product needed for this SQL.
- **/
- private $rdbms;
-
- /**
- * Initialize CreoleTask.
- * This method includes any necessary Creole libraries and triggers
- * appropriate error if they cannot be found. This is not done in header
- * because we may want this class to be loaded w/o triggering an error.
- */
- function init() {
- if (!class_exists('PDO')) {
- throw new Exception("PDOTask depends on PDO feature being included in PHP.");
- }
- }
-
- /**
- * Caching loaders / driver. This is to avoid
- * getting an OutOfMemoryError when calling this task
- * multiple times in a row; default: true
- * @param $enable
- */
- public function setCaching($enable) {
- $this->caching = $enable;
- }
-
- /**
- * Sets the database connection URL; required.
- * @param url The url to set
- */
- public function setUrl($url) {
- $this->url = $url;
- }
-
- /**
- * Sets the password; required.
- * @param password The password to set
- */
- public function setPassword($password) {
- $this->password = $password;
- }
-
- /**
- * Auto commit flag for database connection;
- * optional, default false.
- * @param autocommit The autocommit to set
- */
- public function setAutocommit($autocommit) {
- $this->autocommit = $autocommit;
- }
-
- /**
- * Sets the version string, execute task only if
- * rdbms version match; optional.
- * @param version The version to set
- */
- public function setVersion($version) {
- $this->version = $version;
- }
-
- protected function getLoaderMap() {
- return self::$loaderMap;
- }
-
-
- /**
- * Creates a new Connection as using the driver, url, userid and password specified.
- * The calling method is responsible for closing the connection.
- * @return Connection the newly created connection.
- * @throws BuildException if the UserId/Password/Url is not set or there is no suitable driver or the driver fails to load.
- */
- protected function getConnection() {
-
- if ($this->url === null) {
- throw new BuildException("Url attribute must be set!", $this->location);
- }
-
- try {
-
- $this->log("Connecting to " . $this->getUrl(), Project::MSG_VERBOSE);
-
- $user = null;
- $pass = null;
-
- if ($this->userId) {
- $user = $this->getUserId();
- }
-
- if ($this->password) {
- $pass = $this->getPassword();
- }
-
- $conn = new PDO($this->getUrl(), $user, $pass);
- $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-
- try {
- $conn->setAttribute(PDO::ATTR_AUTOCOMMIT, $this->autocommit);
- } catch (PDOException $pe) {
- $this->log("Unable to enable auto-commit for this database: " . $pe->getMessage(), Project::MSG_VERBOSE);
- }
-
- return $conn;
-
- } catch (SQLException $e) {
- throw new BuildException($e->getMessage(), $this->location);
- }
-
- }
-
- public function isCaching($value) {
- $this->caching = $value;
- }
-
- /**
- * Gets the autocommit.
- * @return Returns a boolean
- */
- public function isAutocommit() {
- return $this->autocommit;
- }
-
- /**
- * Gets the url.
- * @return Returns a String
- */
- public function getUrl() {
- return $this->url;
- }
-
- /**
- * Gets the userId.
- * @return Returns a String
- */
- public function getUserId() {
- return $this->userId;
- }
-
- /**
- * Set the user name for the connection; required.
- * @param userId The userId to set
- */
- public function setUserid($userId) {
- $this->userId = $userId;
- }
-
- /**
- * Gets the password.
- * @return Returns a String
- */
- public function getPassword() {
- return $this->password;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/PgsqlPDOQuerySplitter.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/PgsqlPDOQuerySplitter.php
deleted file mode 100755
index b99ac624..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/PgsqlPDOQuerySplitter.php
+++ /dev/null
@@ -1,291 +0,0 @@
-<?php
-
-/**
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- *
- * @version SVN: $Id: 0e3570c0e594f4396d833d77e841294855b297d9 $
- * @package phing.tasks.ext.pdo
- */
-
-require_once 'phing/tasks/ext/pdo/PDOQuerySplitter.php';
-
-/**
- * Splits PostgreSQL's dialect of SQL into separate queries
- *
- * Unlike DefaultPDOQuerySplitter this uses a lexer instead of regular
- * expressions. This allows handling complex constructs like C-style comments
- * (including nested ones) and dollar-quoted strings.
- *
- * @author Alexey Borzov <avb@php.net>
- * @package phing.tasks.ext.pdo
- * @version $Id: 0e3570c0e594f4396d833d77e841294855b297d9 $
- * @link http://www.phing.info/trac/ticket/499
- * @link http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING
- */
-class PgsqlPDOQuerySplitter extends PDOQuerySplitter
-{
- /**#@+
- * Lexer states
- */
- const STATE_NORMAL = 0;
- const STATE_SINGLE_QUOTED = 1;
- const STATE_DOUBLE_QUOTED = 2;
- const STATE_DOLLAR_QUOTED = 3;
- const STATE_COMMENT_LINEEND = 4;
- const STATE_COMMENT_MULTILINE = 5;
- const STATE_BACKSLASH = 6;
- /**#@-*/
-
- /**
- * Nesting depth of current multiline comment
- * @var int
- */
- protected $commentDepth = 0;
-
- /**
- * Current dollar-quoting "tag"
- * @var string
- */
- protected $quotingTag = '';
-
- /**
- * Current lexer state, one of STATE_* constants
- * @var int
- */
- protected $state = self::STATE_NORMAL;
-
- /**
- * Whether a backslash was just encountered in quoted string
- * @var bool
- */
- protected $escape = false;
-
- /**
- * Current source line being examined
- * @var string
- */
- protected $line = '';
-
- /**
- * Position in current source line
- * @var int
- */
- protected $inputIndex;
-
- /**
- * Gets next symbol from the input, false if at end
- *
- * @return string|bool
- */
- public function getc()
- {
- if (!strlen($this->line) || $this->inputIndex >= strlen($this->line)) {
- if (null === ($line = $this->sqlReader->readLine())) {
- return false;
- }
- $project = $this->parent->getOwningTarget()->getProject();
- $this->line = ProjectConfigurator::replaceProperties(
- $project, $line, $project->getProperties()
- ) . "\n";
- $this->inputIndex = 0;
- }
- return $this->line[$this->inputIndex++];
- }
-
- /**
- * Bactracks one symbol on the input
- *
- * NB: we don't need ungetc() at the start of the line, so this case is
- * not handled.
- */
- public function ungetc()
- {
- $this->inputIndex--;
- }
-
- /**
- * Checks whether symbols after $ are a valid dollar-quoting tag
- *
- * @return string|bool Dollar-quoting "tag" if it is present, false otherwise
- */
- protected function checkDollarQuote()
- {
- $ch = $this->getc();
- if ('$' == $ch) {
- // empty tag
- return '';
-
- } elseif (!ctype_alpha($ch) && '_' != $ch) {
- // not a delimiter
- $this->ungetc();
- return false;
-
- } else {
- $tag = $ch;
- while (false !== ($ch = $this->getc())) {
- if ('$' == $ch) {
- return $tag;
-
- } elseif (ctype_alnum($ch) || '_' == $ch) {
- $tag .= $ch;
-
- } else {
- for ($i = 0; $i < strlen($tag); $i++) {
- $this->ungetc();
- }
- return false;
- }
- }
- }
- }
-
- public function nextQuery()
- {
- $sql = '';
- $delimiter = $this->parent->getDelimiter();
- $openParens = 0;
-
- while (false !== ($ch = $this->getc())) {
- switch ($this->state) {
- case self::STATE_NORMAL:
- switch ($ch) {
- case '-':
- if ('-' == $this->getc()) {
- $this->state = self::STATE_COMMENT_LINEEND;
- } else {
- $this->ungetc();
- }
- break;
- case '"':
- $this->state = self::STATE_DOUBLE_QUOTED;
- break;
- case "'":
- $this->state = self::STATE_SINGLE_QUOTED;
- break;
- case '/':
- if ('*' == $this->getc()) {
- $this->state = self::STATE_COMMENT_MULTILINE;
- $this->commentDepth = 1;
- } else {
- $this->ungetc();
- }
- break;
- case '$':
- if (false !== ($tag = $this->checkDollarQuote())) {
- $this->state = self::STATE_DOLLAR_QUOTED;
- $this->quotingTag = $tag;
- $sql .= '$' . $tag . '$';
- continue 3;
- }
- break;
- case '(':
- $openParens++;
- break;
- case ')':
- $openParens--;
- break;
- // technically we can use e.g. psql's \g command as delimiter
- case $delimiter[0]:
- // special case to allow "create rule" statements
- // http://www.postgresql.org/docs/current/interactive/sql-createrule.html
- if (';' == $delimiter && 0 < $openParens) {
- break;
- }
- $hasQuery = true;
- for ($i = 1; $i < strlen($delimiter); $i++) {
- if ($delimiter[$i] != $this->getc()) {
- $hasQuery = false;
- }
- }
- if ($hasQuery) {
- return $sql;
- } else {
- for ($j = 1; $j < $i; $j++) {
- $this->ungetc();
- }
- }
- }
- break;
-
- case self::STATE_COMMENT_LINEEND:
- if ("\n" == $ch) {
- $this->state = self::STATE_NORMAL;
- }
- break;
-
- case self::STATE_COMMENT_MULTILINE:
- switch ($ch) {
- case '/':
- if ('*' != $this->getc()) {
- $this->ungetc();
- } else {
- $this->commentDepth++;
- }
- break;
-
- case '*':
- if ('/' != $this->getc()) {
- $this->ungetc();
- } else {
- $this->commentDepth--;
- if (0 == $this->commentDepth) {
- $this->state = self::STATE_NORMAL;
- continue 3;
- }
- }
- }
-
- case self::STATE_SINGLE_QUOTED:
- case self::STATE_DOUBLE_QUOTED:
- if ($this->escape) {
- $this->escape = false;
- break;
- }
- $quote = $this->state == self::STATE_SINGLE_QUOTED ? "'" : '"';
- switch ($ch) {
- case '\\':
- $this->escape = true;
- break;
- case $quote:
- if ($quote == $this->getc()) {
- $sql .= $quote;
- } else {
- $this->ungetc();
- $this->state = self::STATE_NORMAL;
- }
- }
-
- case self::STATE_DOLLAR_QUOTED:
- if ('$' == $ch && false !== ($tag = $this->checkDollarQuote())) {
- if ($tag == $this->quotingTag) {
- $this->state = self::STATE_NORMAL;
- }
- $sql .= '$' . $tag . '$';
- continue 2;
- }
- }
-
- if ($this->state != self::STATE_COMMENT_LINEEND && $this->state != self::STATE_COMMENT_MULTILINE) {
- $sql .= $ch;
- }
- }
- if ('' !== $sql) {
- return $sql;
- }
- return null;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/PlainPDOResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/PlainPDOResultFormatter.php
deleted file mode 100644
index 3aad8ec8..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/PlainPDOResultFormatter.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-/**
- * $Id: 0b899576769e68651a8847db8db8941aa4d784a2 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/tasks/ext/pdo/PDOResultFormatter.php';
-
-/**
- * Plain text formatter for PDO results.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.tasks.ext.pdo
- * @since 2.3.0
- */
-class PlainPDOResultFormatter extends PDOResultFormatter
-{
- /**
- * Have column headers been printed?
- * @var boolean
- */
- private $colsprinted = false;
-
- /**
- * Whether to show headers.
- * @var boolean
- */
- private $showheaders = true;
-
- /**
- * Column delimiter.
- * Defaults to ','
- * @var string
- */
- private $coldelimiter = ",";
-
- /**
- * Row delimiter.
- * Defaults to PHP_EOL.
- * @var string
- */
- private $rowdelimiter = PHP_EOL;
-
- /**
- * Set the showheaders attribute.
- * @param boolean $v
- */
- public function setShowheaders($v) {
- $this->showheaders = StringHelper::booleanValue($v);
- }
-
- /**
- * Sets the column delimiter.
- * @param string $v
- */
- public function setColdelim($v) {
- $this->coldelimiter = $v;
- }
-
- /**
- * Sets the row delimiter.
- * @param string $v
- */
- public function setRowdelim($v) {
- $this->rowdelimiter = $v;
- }
-
- /**
- * Processes a specific row from PDO result set.
- *
- * @param array $row Row of PDO result set.
- */
- public function processRow($row) {
-
- if (!$this->colsprinted && $this->showheaders) {
- $first = true;
- foreach($row as $fieldName => $ignore) {
- if ($first) $first = false; else $line .= ",";
- $line .= $fieldName;
- }
-
- $this->out->write($line);
- $this->out->write(PHP_EOL);
-
- $line = "";
- $colsprinted = true;
- } // if show headers
-
- $first = true;
- foreach($row as $columnValue) {
-
- if ($columnValue != null) {
- $columnValue = trim($columnValue);
- }
-
- if ($first) {
- $first = false;
- } else {
- $line .= $this->coldelimiter;
- }
- $line .= $columnValue;
- }
-
- $this->out->write($line);
- $this->out->write($this->rowdelimiter);
-
- }
-
- public function getPreferredOutfile()
- {
- return new PhingFile('results.txt');
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pdo/XMLPDOResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/pdo/XMLPDOResultFormatter.php
deleted file mode 100644
index 435ae6e7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pdo/XMLPDOResultFormatter.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-/**
- * $Id: e5c24c7ac3cd665f7877d66f64218be584429581 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/tasks/ext/pdo/PDOResultFormatter.php';
-
-/**
- * XML formatter for PDO results.
- *
- * This class reprsents the output of a query using a simple XML schema.
- *
- * <results>
- * <row>
- * <col name="id">value</col>
- * <col name="name">value2</col>
- * </row>
- * <row>
- * <col name="id">value</col>
- * <col name="name">value2</col>
- * </row>
- * </results>
- *
- * The actual names of the colums will depend on the fetchmode that was used
- * with PDO.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.tasks.ext.pdo
- * @since 2.3.0
- */
-class XMLPDOResultFormatter extends PDOResultFormatter {
-
- /**
- * The XML document being created.
- * @var DOMDocument
- */
- private $doc;
-
- /**
- * @var DOMElement
- */
- private $rootNode;
-
- /**
- * XML document encoding
- *
- * @var string
- */
- private $encoding;
-
- /**
- * @var boolean
- */
- private $formatOutput = true;
-
- /**
- * Set the DOM document encoding.
- * @param string $v
- */
- public function setEncoding($v) {
- $this->encoding = $v;
- }
-
- /**
- * @param boolean $v
- */
- public function setFormatOutput($v) {
- $this->formatOutput = (boolean) $v;
- }
-
- public function initialize() {
- $this->doc = new DOMDocument("1.0", $this->encoding);
- $this->rootNode = $this->doc->createElement('results');
- $this->doc->appendChild($this->rootNode);
- $this->doc->formatOutput = $this->formatOutput;
- }
-
- /**
- * Processes a specific row from PDO result set.
- *
- * @param array $row Row of PDO result set.
- */
- public function processRow($row) {
-
- $rowNode = $this->doc->createElement('row');
- $this->rootNode->appendChild($rowNode);
-
- foreach($row as $columnName => $columnValue) {
-
- $colNode = $this->doc->createElement('column');
- $colNode->setAttribute('name', $columnName);
-
- if ($columnValue != null) {
- $columnValue = trim($columnValue);
- $colNode->nodeValue = $columnValue;
- }
- $rowNode->appendChild($colNode);
- }
-
- }
-
- /**
- * Gets a preferred filename for an output file.
- *
- * If no filename is specified, this is where the results will be placed
- * (unless usefile=false).
- *
- * @return string
- */
- public function getPreferredOutfile()
- {
- return new PhingFile('results.xml');
- }
-
- /**
- * Write XML to file and free the DOM objects.
- */
- public function close() {
- $this->out->write($this->doc->saveXML());
- $this->rootNode = null;
- $this->doc = null;
- parent::close();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/pearpackage/Fileset.php b/buildscripts/phing/classes/phing/tasks/ext/pearpackage/Fileset.php
deleted file mode 100755
index 23a0e4c6..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/pearpackage/Fileset.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-/*
- * $Id: 7016dea93483cc99ad17a638e30f5ff57c37c78b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-
-/**
- * Builds list of files for PEAR_PackageFileManager using a Phing FileSet.
- *
- * Some code here is taken from PEAR_PackageFileManager_File -- getting results from flat
- * array into the assoc array expected from getFileList().
- *
- * @author Greg Beaver
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.tasks.ext.pearpackage
- * @version $Id$
- */
-class PEAR_PackageFileManager_Fileset {
-
- /**
- * Curent Phing Project.
- * @var Project
- */
- private $project;
-
- /**
- * FileSets to use.
- * @var array FileSet[]
- */
- private $filesets = array();
-
- /**
- * Set up the FileSet filelist generator
- *
- * 'project' and 'filesets' are the only options that this class uses.
- *
- * @param PEAR_PackageFileManager
- * @param array
- */
- function __construct($options)
- {
- if (!is_array($options)) {
- $options = $options->getOptions();
- }
-
- $this->project = $options['phing_project'];
- $this->filesets = $options['phing_filesets'];
- }
-
- /**
- * Generate the <filelist></filelist> section
- * of the package file.
- *
- * This function performs the backend generation of the array
- * containing all files in this package
- * @return array structure of all files to include
- */
- function getFileList() {
-
- $allfiles = array();
-
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($this->project);
-
- $files = $ds->getIncludedFiles();
-
- // We need to store these files keyed by the basedir from DirectoryScanner
- // so that we can resolve the fullpath of the file later.
- if (isset($allfiles[$ds->getBasedir()]))
- {
- $allfiles[$ds->getBasedir()] = array_merge($allfiles[$ds->getBasedir()], $files);
- }
- else
- {
- $allfiles[$ds->getBasedir()] = $files;
- }
- }
-
- $struc = array();
-
- foreach($allfiles as $basedir => $files) {
-
- foreach($files as $file) {
-
- // paths are relative to $basedir above
- $path = strtr(dirname($file), DIRECTORY_SEPARATOR, '/');
-
- if (!$path || $path == '.') {
- $path = '/'; // for array index
- }
-
- $parts = explode('.', basename($file));
- $ext = array_pop($parts);
- if (strlen($ext) == strlen($file)) {
- $ext = '';
- }
-
- $f = new PhingFile($basedir, $file);
-
- $struc[$path][] = array('file' => basename($file),
- 'ext' => $ext,
- 'path' => (($path == '/') ? basename($file) : $path . '/' . basename($file)),
- 'fullpath' => $f->getAbsolutePath());
- }
- }
-
- uksort($struc,'strnatcasecmp');
- foreach($struc as $key => $ind) {
- usort($ind, array($this, 'sortfiles'));
- $struc[$key] = $ind;
- }
-
- $tempstruc = $struc;
- $struc = array('/' => $tempstruc['/']);
- $bv = 0;
- foreach($tempstruc as $key => $ind) {
- $save = $key;
- if ($key != '/') {
- $struc['/'] = $this->setupDirs($struc['/'], explode('/', $key), $tempstruc[$key]);
- }
- }
- uksort($struc['/'], array($this, 'mystrucsort'));
-
- return $struc;
- }
-
- /**
- * 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,...)))
- */
- private function setupDirs($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] = $this->setDir($contents[$c], $this->setupDirs(array(), $b, $a));
- } else {
- $contents[$c] = $this->setupDirs(array(), $b, $a);
- }
- }
- }
- }
- return $contents;
- }
- $me = array_shift($dir);
- if (!isset($struc[$me])) {
- $struc[$me] = array();
- }
- $struc[$me] = $this->setupDirs($struc[$me], $dir, $contents);
- return $struc;
- }
-
- /**
- * Recursively add all the subdirectories of $contents to $dir without erasing anything in
- * $dir
- * @param array
- * @param array
- * @return array processed $dir
- */
- function setDir($dir, $contents)
- {
- while(list($one,$two) = each($contents)) {
- if (isset($dir[$one])) {
- $dir[$one] = $this->setDir($dir[$one], $contents[$one]);
- } else {
- $dir[$one] = $two;
- }
- }
- return $dir;
- }
-
- /**
- * Sorting functions for the file list
- * @param string
- * @param string
- * @access private
- */
- function sortfiles($a, $b)
- {
- return strnatcasecmp($a['file'],$b['file']);
- }
-
- function 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);
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadata.php b/buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadata.php
deleted file mode 100644
index 1f7a263c..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadata.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/*
- * $Id: fae81ee47ae75fc98d7848a22da93bfd4afb7a1b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phar/PharMetadataElement.php';
-
-/**
- * @package phing.tasks.ext.phar
- * @author Alexey Shockov <alexey@shockov.com>
- * @since 2.4.0
- */
-class PharMetadata
-{
- /**
- * @var array
- */
- protected $elements = array();
- /**
- * @return PharMetadataElement
- */
- public function createElement()
- {
- return ($this->elements[] = new PharMetadataElement());
- }
- /**
- * @return array
- */
- public function toArray()
- {
- $metadata = array();
-
- foreach ($this->elements as $element) {
- $metadata[$element->getName()] = $element->toArray();
- }
-
- return $metadata;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadataElement.php b/buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadataElement.php
deleted file mode 100644
index c40f68f1..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phar/PharMetadataElement.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- * $Id: 4c70deae6a6f273d55f504077a3941ad926ad325 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phar/PharMetadata.php';
-
-/**
- * @package phing.tasks.ext.phar
- * @author Alexey Shockov <alexey@shockov.com>
- * @since 2.4.0
- */
-class PharMetadataElement
- extends PharMetadata
-{
- /**
- * @var string
- */
- private $name;
- /**
- * @var string
- */
- private $value;
- /**
- * @param string $value
- */
- public function setValue($value)
- {
- $this->value = $value;
- }
- /**
- * @param string $name
- */
- public function setName($name)
- {
- $this->name = $name;
- }
- /**
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
- /**
- * Return array of
- *
- * @return string|array
- */
- public function getValue()
- {
- /*
- * Elements first!
- */
- return (empty($this->elements) ? $this->value : $this->elements);
- }
- /**
- * @return string|array
- */
- public function toArray()
- {
- return (empty($this->elements) ? $this->value : parent::toArray());
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phar/PharPackageTask.php b/buildscripts/phing/classes/phing/tasks/ext/phar/PharPackageTask.php
deleted file mode 100644
index 76a4215a..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phar/PharPackageTask.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-/*
- * $Id: 0396ab9c461e7d7655f12c9ed3a613fe6e69f973 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/MatchingTask.php';
-require_once 'phing/types/IterableFileSet.php';
-require_once 'phing/tasks/ext/phar/PharMetadata.php';
-
-/**
- * Package task for {@link http://ru.php.net/manual/en/book.phar.php Phar technology}.
- *
- * @package phing.tasks.ext
- * @author Alexey Shockov <alexey@shockov.com>
- * @since 2.4.0
- */
-class PharPackageTask
- extends MatchingTask
-{
- /**
- * @var PhingFile
- */
- private $destinationFile;
- /**
- * @var int
- */
- private $compression = Phar::NONE;
- /**
- * Base directory, from where local package paths will be calculated.
- *
- * @var PhingFile
- */
- private $baseDirectory;
- /**
- * @var PhingFile
- */
- private $cliStubFile;
- /**
- * @var PhingFile
- */
- private $webStubFile;
- /**
- * @var string
- */
- private $stubPath;
- /**
- * Private key the Phar will be signed with.
- *
- * @var PhingFile
- */
- private $key;
- /**
- * Password for the private key.
- *
- * @var string
- */
- private $keyPassword = '';
- /**
- * @var int
- */
- private $signatureAlgorithm = Phar::SHA1;
- /**
- * @var array
- */
- private $filesets = array();
- /**
- * @var PharMetadata
- */
- private $metadata = null;
- /**
- * @var string
- */
- private $alias;
- /**
- * @return PharMetadata
- */
- public function createMetadata()
- {
- return ($this->metadata = new PharMetadata());
- }
- /**
- * @return FileSet
- */
- public function createFileSet()
- {
- $this->fileset = new IterableFileSet();
- $this->filesets[] = $this->fileset;
- return $this->fileset;
- }
- /**
- * @param string $algorithm
- */
- public function setSignature($algorithm)
- {
- /*
- * If we don't support passed algprithm, leave old one.
- */
- switch ($algorithm) {
- case 'md5':
- $this->signatureAlgorithm = Phar::MD5;
- break;
- case 'sha1':
- $this->signatureAlgorithm = Phar::SHA1;
- break;
- case 'sha256':
- $this->signatureAlgorithm = Phar::SHA256;
- break;
- case 'sha512':
- $this->signatureAlgorithm = Phar::SHA512;
- break;
- case 'openssl':
- $this->signatureAlgorithm = Phar::OPENSSL;
- break;
- default:
- break;
- }
- }
- /**
- * @param string $compression
- */
- public function setCompression($compression)
- {
- /*
- * If we don't support passed compression, leave old one.
- */
- switch ($compression) {
- case 'gzip':
- $this->compression = Phar::GZ;
- break;
- case 'bzip2':
- $this->compression = Phar::BZ2;
- break;
- default:
- break;
- }
- }
- /**
- * @param PhingFile $destinationFile
- */
- public function setDestFile(PhingFile $destinationFile)
- {
- $this->destinationFile = $destinationFile;
- }
- /**
- * @param PhingFile $baseDirectory
- */
- public function setBaseDir(PhingFile $baseDirectory)
- {
- $this->baseDirectory = $baseDirectory;
- }
- /**
- * @param PhingFile $stubFile
- */
- public function setCliStub(PhingFile $stubFile)
- {
- $this->cliStubFile = $stubFile;
- }
- /**
- * @param PhingFile $stubFile
- */
- public function setWebStub(PhingFile $stubFile)
- {
- $this->webStubFile = $stubFile;
- }
- /**
- * @param string $stubPath
- */
- public function setStub($stubPath)
- {
- $this->stubPath = $stubPath;
- }
- /**
- * @param $alias
- */
- public function setAlias($alias)
- {
- $this->alias = $alias;
- }
- /**
- * Sets the private key to use to sign the Phar with.
- *
- * @param PhingFile $key Private key to sign the Phar with.
- */
- public function setKey(PhingFile $key)
- {
- $this->key = $key;
- }
- /**
- * Password for the private key.
- *
- * @param string $keyPassword
- */
- public function setKeyPassword($keyPassword)
- {
- $this->keyPassword = $keyPassword;
- }
- /**
- * @throws BuildException
- */
- public function main()
- {
- $this->checkPreconditions();
-
- try {
- $this->log(
- 'Building package: '.$this->destinationFile->__toString(),
- Project::MSG_INFO
- );
-
- /*
- * Delete old package, if exists.
- */
- if ($this->destinationFile->exists()) {
- /*
- * TODO Check operation for errors...
- */
- $this->destinationFile->delete();
- }
-
- $phar = $this->buildPhar();
- $phar->startBuffering();
-
- $baseDirectory = realpath($this->baseDirectory->getPath());
-
- foreach ($this->filesets as $fileset) {
- $this->log(
- 'Adding specified files in ' . $fileset->getDir($this->project) . ' to package',
- Project::MSG_VERBOSE
- );
-
- $phar->buildFromIterator($fileset, $baseDirectory);
- }
-
- $phar->stopBuffering();
-
- /*
- * File compression, if needed.
- */
- if (Phar::NONE != $this->compression) {
- $phar->compressFiles($this->compression);
- }
- } catch (Exception $e) {
- throw new BuildException(
- 'Problem creating package: '.$e->getMessage(),
- $e,
- $this->getLocation()
- );
- }
- }
- /**
- * @throws BuildException
- */
- private function checkPreconditions()
- {
- if (is_null($this->destinationFile)) {
- throw new BuildException("destfile attribute must be set!", $this->getLocation());
- }
-
- if ($this->destinationFile->exists() && $this->destinationFile->isDirectory()) {
- throw new BuildException("destfile is a directory!", $this->getLocation());
- }
-
- if (!$this->destinationFile->canWrite()) {
- throw new BuildException("Can not write to the specified destfile!", $this->getLocation());
- }
- if (!is_null($this->baseDirectory)) {
- if (!$this->baseDirectory->exists()) {
- throw new BuildException("basedir '" . (string) $this->baseDirectory . "' does not exist!", $this->getLocation());
- }
- }
- if ($this->signatureAlgorithm == Phar::OPENSSL) {
-
- if (!extension_loaded('openssl')) {
- throw new BuildException("PHP OpenSSL extension is required for OpenSSL signing of Phars!", $this->getLocation());
- }
-
- if (is_null($this->key)) {
- throw new BuildException("key attribute must be set for OpenSSL signing!", $this->getLocation());
- }
-
- if (!$this->key->exists()) {
- throw new BuildException("key '" . (string) $this->key . "' does not exist!", $this->getLocation());
- }
-
- if (!$this->key->canRead()) {
- throw new BuildException("key '" . (string) $this->key . "' cannot be read!", $this->getLocation());
- }
- }
- }
- /**
- * Build and configure Phar object.
- *
- * @return Phar
- */
- private function buildPhar()
- {
- $phar = new Phar($this->destinationFile);
-
- if ($this->signatureAlgorithm == Phar::OPENSSL) {
-
- // Load up the contents of the key
- $keyContents = file_get_contents($this->key);
-
- // Setup an OpenSSL resource using the private key and tell the Phar
- // to sign it using that key.
- $private = openssl_pkey_get_private($keyContents, $this->keyPassword);
- $phar->setSignatureAlgorithm(Phar::OPENSSL, $private);
-
- // Get the details so we can get the public key and write that out
- // alongside the phar.
- $details = openssl_pkey_get_details($private);
- file_put_contents($this->destinationFile . '.pubkey', $details['key']);
-
- } else {
- $phar->setSignatureAlgorithm($this->signatureAlgorithm);
- }
-
- if (isset($this->stubPath)) {
- $phar->setStub(file_get_contents($this->stubPath));
- } else {
- if (!empty($this->cliStubFile)) {
- $cliStubFile = $this->cliStubFile->getPathWithoutBase($this->baseDirectory);
- } else {
- $cliStubFile = null;
- }
-
- if (!empty($this->webStubFile)) {
- $webStubFile = $this->webStubFile->getPathWithoutBase($this->baseDirectory);
- } else {
- $webStubFile = null;
- }
-
- $phar->setDefaultStub($cliStubFile, $webStubFile);
- }
-
- if ($metadata = $this->metadata->toArray()) {
- $phar->setMetadata($metadata);
- }
-
- if(!empty($this->alias)){
- $phar->setAlias($this->alias);
- }
-
- return $phar;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageTask.php b/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageTask.php
deleted file mode 100644
index 80da93fa..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageTask.php
+++ /dev/null
@@ -1,248 +0,0 @@
-<?php
-/**
- * $Id: 5029881915d6a9e95320ba6e7f463f38af66cd93 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/phk/PhkPackageWebAccess.php';
-
-/**
- * See {@link http://phk.tekwire.net/} for more information about PHK.
- *
- * @author Alexey Shockov <alexey@shockov.com>
- * @package phing.tasks.ext.phk
- */
-class PhkPackageTask extends Task
-{
- /**
- * @var string
- */
- private $outputFile;
- /**
- * @var string
- */
- private $inputDirectory;
- /**
- * @var string
- */
- private $phkCreatorPath;
- /**
- * @var PhkPackageWebAccess
- */
- private $webAccess;
- /**
- * @var array
- */
- private $modifiers = array();
- /**
- * @var array
- */
- private $options = array();
- /**
- * @return PhkPackageWebAccess
- */
- public function createWebAccess()
- {
- return ($this->webAccess = new PhkPackageWebAccess());
- }
- /**
- * @param string $crcCheck
- */
- public function setCrcCheck($crcCheck)
- {
- $this->options['crc_check'] = ('true' == $crcCheck ? true : false);
- }
- /**
- * @param string $webRunScript
- */
- public function setWebRunScript($webRunScript)
- {
- $this->options['web_run_script'] = $webRunScript;
- }
- /**
- * @param string $cliRunScript
- */
- public function setCliRunScript($cliRunScript)
- {
- $this->options['cli_run_script'] = $cliRunScript;
- }
- /**
- * @param string $libRunScript
- */
- public function setLibRunScript($libRunScript)
- {
- $this->options['lib_run_script'] = $libRunScript;
- }
- /**
- * @param string $name
- */
- public function setName($name)
- {
- $this->options['name'] = $name;
- }
- /**
- * @param string $webMainRedirect
- */
- public function setWebMainRedirect($webMainRedirect)
- {
- $this->options['web_main_redirect'] = ('true' == $webMainRedirect ? true : false);
- }
- /**
- * @param string $pluginClass
- */
- public function setPluginClass($pluginClass)
- {
- $this->options['plugin_class'] = $pluginClass;
- }
- /**
- * @param string $version
- */
- public function setVersion($version)
- {
- $this->options['version'] = $version;
- }
- /**
- * @param string $summary
- */
- public function setSummary($summary)
- {
- $this->options['summary'] = $summary;
- }
- /**
- * @param string $inputDirectory
- */
- public function setInputDirectory($inputDirectory)
- {
- $this->inputDirectory = $inputDirectory;
- }
- /**
- * @param string $outputFile
- */
- public function setOutputFile($outputFile)
- {
- $this->outputFile = $outputFile;
- }
- /**
- * May be none, gzip or bzip2.
- *
- * @param string $compress
- */
- public function setCompress($compress)
- {
- $this->modifiers['compress'] = $compress;
- }
- /**
- * True or false.
- *
- * @param srting $strip
- */
- public function setStrip($strip)
- {
- $this->modifiers['strip'] = $strip;
- }
- /**
- * Path to PHK_Creator.phk file.
- *
- * @param srting $path
- */
- public function setPhkCreatorPath($path)
- {
- $this->phkCreatorPath = $path;
- }
- /**
- *
- */
- public function init()
- {
-
- }
- /**
- * Main method...
- */
- public function main()
- {
- /*
- * Check for empty first - speed ;)
- */
- if (!is_file($this->phkCreatorPath)) {
- throw new BuildException('You must specify the "phkcreatorpath" attribute for PHK task.');
- }
- if (empty($this->inputDirectory)) {
- throw new BuildException('You must specify the "inputdirectory" attribute for PHK task.');
- }
- if (empty($this->outputFile)) {
- throw new BuildException('You must specify the "outputfile" attribute for PHK task.');
- }
-
- require_once $this->phkCreatorPath;
-
- $mountPoint = PHK_Mgr::mount($this->outputFile, PHK::F_CREATOR);
- $phkManager = PHK_Mgr::instance($mountPoint);
-
- /*
- * Add files.
- */
- $phkManager->ftree()->merge_file_tree('/', $this->inputDirectory, $this->modifiers);
-
- /*
- * Add web_access to options, if present.
- */
- if (!is_null($this->webAccess)) {
- $webAccessPaths = $this->webAccess->getPaths();
- if (!empty($webAccessPaths)) {
- $this->options['web_access'] = $webAccessPaths;
- }
- }
-
- $phkManager->set_options($this->options);
-
- /*
- * Intercept output (in PHP we can't intercept stream).
- */
- ob_start();
- /*
- * Create file...
- */
- $phkManager->dump();
- /*
- * Print with Phing log...
- */
- $output = trim(ob_get_clean());
- $output = explode("\n", $output);
- foreach ($output as $line) {
- /*
- * Delete all '--- *' lines. Bluh!
- */
- /*
- * TODO Change preg_math to more faster alternative.
- */
- if (preg_match('/^---/', $line)) {
- continue;
- }
-
- $this->log($line);
- }
-
- /*
- * Set rights for generated file... Don't use umask() - see
- * notes in official documentation for this function.
- */
- chmod($this->outputFile, 0644);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccess.php b/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccess.php
deleted file mode 100644
index 9634d899..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccess.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * $Id: b6ea3e7df3c43498e8c6e105bedfd0b6e99e055a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phk/PhkPackageWebAccessPath.php';
-
-/**
- * @author Alexey Shockov <alexey@shockov.com>
- * @package phing.tasks.ext.phk
- */
-class PhkPackageWebAccess
-{
- /**
- * @var array
- */
- private $paths = array();
- /**
- * @return PhkPackageWebAccessPath
- */
- public function createPath()
- {
- return ($this->paths[] = new PhkPackageWebAccessPath());
- }
- /**
- * @return array
- */
- public function getPaths()
- {
- /*
- * Get real paths...
- */
- $paths = array();
-
- foreach ($this->paths as $path) {
- $paths[] = $path->getPath();
- }
-
- return $paths;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccessPath.php b/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccessPath.php
deleted file mode 100644
index 730a8929..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phk/PhkPackageWebAccessPath.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * $Id: 755aeaf34726af2eb30c989914faad8d7aebd126 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * @author Alexey Shockov <alexey@shockov.com>
- * @package phing.tasks.ext.phk
- */
-class PhkPackageWebAccessPath
-{
- /**
- * @var string
- */
- private $path;
- /**
- * @param string $path
- */
- public function addText($path)
- {
- $this->path = trim($path);
- }
- /**
- * @return string
- */
- public function getPath()
- {
- return $this->path;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDFormatterElement.php b/buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDFormatterElement.php
deleted file mode 100644
index e650ca72..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDFormatterElement.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-/**
- * $Id: dece05e79e883b4d5e95f2215e36ce4f2f72ed2e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * A wrapper for the implementations of PHPCPDResultFormatter.
- *
- * @package phing.tasks.ext.phpcpd
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: dece05e79e883b4d5e95f2215e36ce4f2f72ed2e $
- */
-class PHPCPDFormatterElement
-{
- /**
- * The report result formatter.
- *
- * @var PHPCPDResultFormatter
- */
- protected $_formatter = null;
-
- /**
- * The type of the formatter.
- *
- * @var string
- */
- protected $_type = '';
-
- /**
- * Whether to use file (or write output to phing log).
- *
- * @var boolean
- */
- protected $_useFile = true;
-
- /**
- * Output file for formatter.
- *
- * @var PhingFile
- */
- protected $_outfile = null;
-
- /**
- * The parent task
- *
- * @var PHPCPDTask
- */
- private $_parentTask;
-
- /**
- * Construct a new PHPCPDFormatterElement with parent task.
- * @param PHPCPDTask $parentTask
- */
- public function __construct(PHPCPDTask $parentTask)
- {
- $this->_parentTask = $parentTask;
- }
-
- /**
- * Sets the formatter type.
- *
- * @param string $type Type of the formatter
- *
- * @return void
- */
- public function setType($type)
- {
- $this->_type = $type;
-
- switch ($this->_type) {
- case 'pmd':
- if ($this->_useFile === false) {
- throw new BuildException(
- "Formatter '" . $this->_type
- . "' can only print the result to an file"
- );
- }
-
- include_once 'phing/tasks/ext/phpcpd/formatter/PMDPHPCPDResultFormatter.php';
- $this->_formatter = new PMDPHPCPDResultFormatter();
- break;
-
- case 'default':
- include_once 'phing/tasks/ext/phpcpd/formatter/DefaultPHPCPDResultFormatter.php';
- $this->_formatter = new DefaultPHPCPDResultFormatter();
- break;
-
- default:
- throw new BuildException(
- "Formatter '" . $this->_type . "' not implemented"
- );
- }
- }
-
- /**
- * Get the formatter type
- *
- * @return string
- */
- public function getType()
- {
- return $this->_type;
- }
-
- /**
- * Set whether to write formatter results to file or not.
- *
- * @param boolean $useFile True or false.
- *
- * @return void
- */
- public function setUseFile($useFile)
- {
- $this->_useFile = StringHelper::booleanValue($useFile);
- }
-
- /**
- * Return whether to write formatter results to file or not.
- *
- * @return boolean
- */
- public function getUseFile()
- {
- return $this->_useFile;
- }
-
- /**
- * Sets the output file for the formatter results.
- *
- * @param PhingFile $outfile The output file
- *
- * @return void
- */
- public function setOutfile(PhingFile $outfile)
- {
- $this->_outfile = $outfile;
- }
-
- /**
- * Get the output file.
- *
- * @return PhingFile
- */
- public function getOutfile()
- {
- return $this->_outfile;
- }
-
- /**
- * Returns the report formatter.
- *
- * @throws BuildException When the specified renderer does not exist.
- * @return PHPCPDResultFormatter
- */
- public function getFormatter()
- {
- return $this->_formatter;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDTask.php b/buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDTask.php
deleted file mode 100644
index 31f76154..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/PHPCPDTask.php
+++ /dev/null
@@ -1,312 +0,0 @@
-<?php
-/**
- * $Id: 8fbff39b2ca68e97afd59d5dc6d5a37c3678624e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Runs PHP Copy & Paste Detector. Checking PHP files for duplicated code.
- * Refactored original PhpCpdTask provided by
- * Timo Haberkern <timo.haberkern@fantastic-bits.de>
- *
- * @package phing.tasks.ext.phpcpd
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 8fbff39b2ca68e97afd59d5dc6d5a37c3678624e $
- */
-class PHPCPDTask extends Task
-{
- /**
- * A php source code filename or directory
- *
- * @var PhingFile
- */
- protected $_file = null;
-
- /**
- * All fileset objects assigned to this task
- *
- * @var array<FileSet>
- */
- protected $_filesets = array();
-
- /**
- * Minimum number of identical lines.
- *
- * @var integer
- */
- protected $_minLines = 5;
-
- /**
- * Minimum number of identical tokens.
- *
- * @var integer
- */
- protected $_minTokens = 70;
-
- /**
- * List of valid file extensions for analyzed files.
- *
- * @var array
- */
- protected $_allowedFileExtensions = array('php');
-
- /**
- * List of exclude directory patterns.
- *
- * @var array
- */
- protected $_ignorePatterns = array('.git', '.svn', 'CVS', '.bzr', '.hg');
-
- /**
- * The format for the report
- *
- * @var string
- */
- protected $_format = 'default';
-
- /**
- * Formatter elements.
- *
- * @var array<PHPCPDFormatterElement>
- */
- protected $_formatters = array();
-
- /**
- * Load the necessary environment for running PHPCPD.
- *
- * @throws BuildException - if the phpcpd classes can't be loaded.
- */
- public function init()
- {
- /**
- * Determine PHPCPD installation
- */
- @include_once 'PHPCPD/Autoload.php';
-
- if (! class_exists('PHPCPD_TextUI_Command')) {
- throw new BuildException(
- 'PHPCPDTask depends on PHPCPD being installed '
- . 'and on include_path.',
- $this->getLocation()
- );
- }
-
- // Other dependencies that should only be loaded
- // when class is actually used
- require_once 'phing/tasks/ext/phpcpd/PHPCPDFormatterElement.php';
- }
-
- /**
- * Set the input source file or directory.
- *
- * @param PhingFile $file The input source file or directory.
- *
- * @return void
- */
- public function setFile(PhingFile $file)
- {
- $this->_file = $file;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- *
- * @param FileSet $fs List of files to scan
- *
- * @return void
- */
- public function addFileSet(FileSet $fs)
- {
- $this->_filesets[] = $fs;
- }
-
- /**
- * Sets the minimum number of identical lines (default: 5).
- *
- * @param integer $minLines Minimum number of identical lines
- *
- * @return void
- */
- public function setMinLines($minLines)
- {
- $this->_minLines = $minLines;
- }
-
- /**
- * Sets the minimum number of identical tokens (default: 70).
- *
- * @param integer $minTokens Minimum number of identical tokens
- */
- public function setMinTokens($minTokens)
- {
- $this->_minTokens = $minTokens;
- }
-
- /**
- * Sets a list of filename extensions for valid php source code files.
- *
- * @param string $fileExtensions List of valid file extensions.
- *
- * @return void
- */
- public function setAllowedFileExtensions($fileExtensions)
- {
- $this->_allowedFileExtensions = array();
-
- $token = ' ,;';
- $ext = strtok($fileExtensions, $token);
-
- while ($ext !== false) {
- $this->_allowedFileExtensions[] = $ext;
- $ext = strtok($token);
- }
- }
-
- /**
- * Sets a list of ignore patterns that is used to exclude directories from
- * the source analysis.
- *
- * @param string $ignorePatterns List of ignore patterns.
- *
- * @return void
- */
- public function setIgnorePatterns($ignorePatterns)
- {
- $this->_ignorePatterns = array();
-
- $token = ' ,;';
- $pattern = strtok($ignorePatterns, $token);
-
- while ($pattern !== false) {
- $this->_ignorePatterns[] = $pattern;
- $pattern = strtok($token);
- }
- }
-
- /**
- * Sets the output format
- *
- * @param string $format Format of the report
- */
- public function setFormat($format)
- {
- $this->_format = $format;
- }
-
- /**
- * Create object for nested formatter element.
- *
- * @return PHPCPDFormatterElement
- */
- public function createFormatter()
- {
- $num = array_push(
- $this->_formatters,
- new PHPCPDFormatterElement($this)
- );
- return $this->_formatters[$num-1];
- }
-
- /**
- * Executes PHPCPD against PhingFile or a FileSet
- *
- * @return void
- */
- public function main()
- {
- if (!isset($this->_file) and count($this->_filesets) == 0) {
- throw new BuildException(
- "Missing either a nested fileset or attribute 'file' set"
- );
- }
-
- if (count($this->_formatters) == 0) {
- // turn legacy format attribute into formatter
- $fmt = new PHPCPDFormatterElement($this);
- $fmt->setType($this->_format);
- $fmt->setUseFile(false);
- $this->_formatters[] = $fmt;
- }
-
- $this->validateFormatters();
-
- $filesToParse = array();
-
- if ($this->_file instanceof PhingFile) {
- $filesToParse[] = $this->_file->getPath();
- } else {
- // append any files in filesets
- foreach ($this->_filesets as $fs) {
- $files = $fs->getDirectoryScanner($this->project)
- ->getIncludedFiles();
-
- foreach ($files as $filename) {
- $f = new PhingFile($fs->getDir($this->project), $filename);
- $filesToParse[] = $f->getAbsolutePath();
- }
- }
- }
-
- $this->log('Processing files...');
-
- $detector = new PHPCPD_Detector(new PHPCPD_Detector_Strategy_Default());
- $clones = $detector->copyPasteDetection(
- $filesToParse,
- $this->_minLines,
- $this->_minTokens
- );
-
- $this->log('Finished copy/paste detection');
-
- foreach ($this->_formatters as $fe) {
- $formatter = $fe->getFormatter();
- $formatter->processClones(
- $clones,
- $this->project,
- $fe->getUseFile(),
- $fe->getOutfile()
- );
- }
- }
-
- /**
- * Validates the available formatters
- *
- * @throws BuildException
- * @return void
- */
- protected function validateFormatters()
- {
- foreach ($this->_formatters as $fe) {
- if ($fe->getType() == '') {
- throw new BuildException(
- "Formatter missing required 'type' attribute."
- );
- }
-
- if ($fe->getUsefile() && $fe->getOutfile() === null) {
- throw new BuildException(
- "Formatter requires 'outfile' attribute "
- . "when 'useFile' is true."
- );
- }
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/DefaultPHPCPDResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/DefaultPHPCPDResultFormatter.php
deleted file mode 100644
index b84da547..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/DefaultPHPCPDResultFormatter.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * $Id: a4825de14746285d97af9d435215ec8400406fa7 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'PHPCPD/TextUI/ResultPrinter.php';
-require_once 'phing/tasks/ext/phpcpd/formatter/PHPCPDResultFormatter.php';
-
-/**
- * Prints plain text output of phpcpd run
- *
- * @package phing.tasks.ext.phpcpd.formatter
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: a4825de14746285d97af9d435215ec8400406fa7 $
- */
-class DefaultPHPCPDResultFormatter extends PHPCPDResultFormatter
-{
-
- /**
- * Processes a list of clones.
- *
- * @param PHPCPD_CloneMap $clones
- * @param Project $project
- * @param boolean $useFile
- * @param PhingFile|null $outfile
- */
- public function processClones(PHPCPD_CloneMap $clones, Project $project, $useFile = false, $outFile = null)
- {
- $logger = new PHPCPD_TextUI_ResultPrinter();
- // default format goes to logs, no buffering
- ob_start();
- $logger->printResult($clones, $project->getBaseDir(), true);
- $output = ob_get_contents();
- ob_end_clean();
-
- if (!$useFile || empty($outFile)) {
- echo $output;
- } else {
- file_put_contents($outFile->getPath(), $output);
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PHPCPDResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PHPCPDResultFormatter.php
deleted file mode 100644
index 0cdab194..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PHPCPDResultFormatter.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/**
- * $Id: 478d7a823945aa4706befb0059b2fab28743fb07 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * This abstract class describes classes that format the results of a PHPCPD run.
- *
- * @package phing.tasks.ext.phpcpd.formatter
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 478d7a823945aa4706befb0059b2fab28743fb07 $
- */
-abstract class PHPCPDResultFormatter
-{
- /**
- * Processes a list of clones.
- *
- * @param PHPCPD_CloneMap $clones
- * @param Project $project
- * @param boolean $useFile
- * @param PhingFile|null $outfile
- */
- abstract public function processClones(PHPCPD_CloneMap $clones, Project $project, $useFile = false, $outFile = null);
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PMDPHPCPDResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PMDPHPCPDResultFormatter.php
deleted file mode 100644
index 33c24407..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpcpd/formatter/PMDPHPCPDResultFormatter.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * $Id: a336822b8c54702ba2b0590e5a812c779e5c221b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'PHPCPD/Log/XML/PMD.php';
-require_once 'phing/tasks/ext/phpcpd/formatter/PHPCPDResultFormatter.php';
-
-/**
- * Prints PMD-XML output of phpcpd run
- *
- * @package phing.tasks.ext.phpcpd.formatter
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: a336822b8c54702ba2b0590e5a812c779e5c221b $
- */
-class PMDPHPCPDResultFormatter extends PHPCPDResultFormatter
-{
- /**
- * Processes a list of clones.
- *
- * @param PHPCPD_CloneMap $clones
- * @param Project $project
- * @param boolean $useFile
- * @param PhingFile|null $outfile
- */
- public function processClones(PHPCPD_CloneMap $clones, Project $project, $useFile = false, $outFile = null)
- {
- if (!$useFile || empty($outFile)) {
- throw new BuildException("Output filename required for this formatter");
- }
-
- $logger = new PHPCPD_Log_XML_PMD($outFile);
- $logger->processClones($clones);
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorErrorTracker.php b/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorErrorTracker.php
deleted file mode 100644
index 462b1d99..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorErrorTracker.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * $Id: 73c919ab2044bf6582f52bd7ccb0184019d52f53 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'PhpDocumentor/phpDocumentor/Errors.inc';
-
-/**
- * Phing subclass of the ErrorTracker class provided with PhpDocumentor to work around limitations in PhpDocumentor API.
- *
- * This class is necessary because PhpDocumentor does directly output errors and
- * warnings occured during testing for undocumented elements to stdout.
- * This class is injected globally to force PhpDocumentor to use phing's logging
- * mechanism.
- *
- * Obviously this is far from ideal, but there's also no solution given the inflexibility of the
- * PhpDocumentor design.
- *
- * @author Timo A. Hummel <privat@timohummel.com> @author felicitus
- * @version $Id: 73c919ab2044bf6582f52bd7ccb0184019d52f53 $
- * @package phing.tasks.ext.phpdoc
- */
-class PhingPhpDocumentorErrorTracker extends ErrorTracker {
-
- /*
- * @var object Reference to the task we're called with
- */
- private $task;
-
- /**
- * Outputs a warning. This is an almost 1:1 copy from PhpDocumentor,
- * we're just processing the warning text and send it to phing's logger.
- *
- * @param $num integer Number of parameters
- * @return nothing
- */
- 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);
- }
- }
-
- $message = sprintf($GLOBALS['phpDocumentor_warning_descrip'][$num], $a[0], $a[1], $a[2], $a[3]);
- $this->task->log($message, Project::MSG_WARN);
-
- }
-
- /**
- * Outputs an error. This is an almost 1:1 copy from PhpDocumentor,
- * we're just processing the error text and send it to phing's logger.
- *
- * @param $num integer Number of parameters
- * @return nothing
- */
-
- 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);
- }
- }
-
- $message = sprintf($GLOBALS['phpDocumentor_error_descrip'][$num], $a[0], $a[1], $a[2], $a[3]);
- $this->task->log($message, Project::MSG_ERR);
-
- }
-
- /**
- * Sets the task we're working with. This is necessary since we need to be
- * able to call the method "log".
- *
- * @param object $task The task we're working with
- * @return nothing
- */
- public function setTask ($task) {
- $this->task = $task;
- }
-
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php b/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php
deleted file mode 100644
index 62662b0b..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-/**
- * $Id: cde99d501839daf8c9dd9df61ee6cce7caad6b3e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'PhpDocumentor/phpDocumentor/Setup.inc.php';
-
-/**
- * Phing subclass of the phpDocumentor_setup class provided with PhpDocumentor to work around limitations in PhpDocumentor API.
- *
- * This class is necessary because phpDocumentor_setup does not expose a complete API for setting configuration options. Because
- * this class must directly modify some "private" GLOBAL(!) configuration variables, it is liable to break if the PhpDocumentor
- * internal implementation changes. Obviously this is far from ideal, but there's also no solution given the inflexibility of the
- * PhpDocumentor design.
- *
- * @author Hans Lellelid <hans@xmpl.org>@author hans
- * @version $Id: cde99d501839daf8c9dd9df61ee6cce7caad6b3e $
- * @package phing.tasks.ext.phpdoc
- */
-class PhingPhpDocumentorSetup extends phpDocumentor_setup {
-
- /**
- * Constructs a new PhingPhpDocumentorSetup.
- *
- * @param string $configDir Directory in which to look for configuration files.
- * @param object $task The task we're working with, so we can pass it on to the ErrorTracker
- */
- public function __construct($configdir = null, $task) {
- global $_phpDocumentor_cvsphpfile_exts, $_phpDocumentor_setting, $_phpDocumentor_phpfile_exts;
-
- $this->setup = new Io();
- $this->render = new phpDocumentor_IntermediateParser("Default Title");
-
- $GLOBALS['_phpDocumentor_install_dir'] = $configdir;
- $this->parseIni();
-
- // These redundant-looking lines seem to actually make a difference.
- // See: http://phing.info/trac/ticket/150
- $_phpDocumentor_phpfile_exts = $GLOBALS['_phpDocumentor_phpfile_exts'];
- $_phpDocumentor_cvsphpfile_exts = $GLOBALS['_phpDocumentor_cvsphpfile_exts'];
-
- if (tokenizer_ext) {
- $this->parse = new phpDocumentorTParser();
- } else {
- $this->parse = new Parser();
- }
-
- $this->setMemoryLimit();
-
- include_once 'phing/tasks/ext/phpdoc/PhingPhpDocumentorErrorTracker.php';
-
- // Inject our own error tracker to PhpDocumentor
- $GLOBALS['phpDocumentor_errors'] = new PhingPhpDocumentorErrorTracker;
- $GLOBALS['phpDocumentor_errors']->setTask($task);
-
- }
-
- /**
- * Set whether to generate sourcecode for each file parsed.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param bool $b
- */
- public function setGenerateSourcecode($b) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['sourcecode'] = (boolean) $b;
- }
-
- /**
- * Set an array of README/INSTALL/CHANGELOG file paths.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param array $files Absolute paths to files.
- */
- public function setRicFiles($files) {
- global $_phpDocumentor_RIC_files;
- $_phpDocumentor_RIC_files = $files;
- }
-
- /**
- * Set comma-separated list of tags to ignore.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $tags
- */
- public function setIgnoreTags($tags) {
- global $_phpDocumentor_setting;
- $ignoretags = explode(',', $tags);
- $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;
- }
-
- /**
- * Set whether to parse dirs as PEAR repos.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param bool $b
- */
- public function setPear($b) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['pear'] = (boolean) $b;
- }
-
- /**
- * Set fullpath to directory to look in for examples.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $dir
- */
- public function setExamplesDir($dir) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['examplesdir'] = $dir;
- }
-
- /**
- * Sets the default package name.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $name
- */
- public function setDefaultPackageName($name) {
- $GLOBALS['phpDocumentor_DefaultPackageName'] = trim($name);
- }
-
- /**
- * Sets the default category name.
- *
- * This method exists as a hack because there is no API exposed for this in PhpDocumentor.
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- * @param string $name
- */
- public function setDefaultCategoryName($name) {
- $GLOBALS['phpDocumentor_DefaultCategoryName'] = trim($name);
- }
-
- /**
- * Enables quiet mode.
- *
- * This method exists as a hack because the API exposed for this method in PhpDocumentor
- * doesn't work correctly.
- *
- * Note that because we are setting a "private" GLOBAL(!!) config var with this value, this
- * is subject to break if PhpDocumentor internals changes.
- *
- */
- public function setQuietMode() {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['quiet'] = true;
- parent::setQuietMode();
- }
-
- /**
- * Control whether or not warnings will be shown for undocumented elements.
- * Useful for identifying classes and methods that haven't yet been
- * documented.
- *
- * @param bool $bEnable
- */
- public function setUndocumentedelements($bEnable) {
- $this->render->setUndocumentedElementWarningsMode($bEnable);
- }
-
- /**
- * custom tags, will be recognized and put in tags[] instead of
- * unknowntags[]
- *
- * This method exists as a hack because the API exposed for this method in
- * PhpDocumentor doesn't work correctly.
- *
- * Note that because we are setting a "private" GLOBAL(!!) config var with
- * this value, this is subject to break if PhpDocumentor internals changes.
- *
- * @param string $sCustomtags
- */
- public function setCustomtags($sCustomtags) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['customtags'] = $sCustomtags;
- }
-
- /**
- * Files to ignore
- *
- * @param string $sIgnore
- */
- public function setIgnore($sIgnore) {
- global $_phpDocumentor_setting;
- $_phpDocumentor_setting['ignore'] = $sIgnore;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentor2Task.php b/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentor2Task.php
deleted file mode 100755
index 70fcc9e2..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentor2Task.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-/*
- * $Id: eaa494390770adc752097a412d63fb863482fd5d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/FileOutputStream.php';
-
-/**
- * PhpDocumentor2 Task (http://www.phpdoc.org)
- * Based on the DocBlox Task
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: eaa494390770adc752097a412d63fb863482fd5d $
- * @since 2.4.10
- * @package phing.tasks.ext.phpdoc
- */
-class PhpDocumentor2Task extends Task
-{
- /**
- * List of filesets
- * @var FileSet[]
- */
- private $filesets = array();
-
- /**
- * Destination/target directory
- * @var PhingFile
- */
- private $destDir = null;
-
- /**
- * name of the template to use
- * @var string
- */
- private $template = "responsive";
-
- /**
- * Title of the project
- * @var string
- */
- private $title = "";
-
- /**
- * Force phpDocumentor to be quiet
- * @var boolean
- */
- private $quiet = true;
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- *
- * @return FileSet
- */
- public function createFileSet()
- {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Sets destination/target directory
- * @param PhingFile $destDir
- */
- public function setDestDir(PhingFile $destDir)
- {
- $this->destDir = $destDir;
- }
-
- /**
- * Convenience setter (@see setDestDir)
- * @param PhingFile $output
- */
- public function setOutput(PhingFile $output)
- {
- $this->destDir = $output;
- }
-
- /**
- * Sets the template to use
- * @param strings $template
- */
- public function setTemplate($template)
- {
- $this->template = (string) $template;
- }
-
- /**
- * Sets the title of the project
- * @param strings $title
- */
- public function setTitle($title)
- {
- $this->title = (string) $title;
- }
-
- /**
- * Forces phpDocumentor to be quiet
- * @param boolean $quiet
- */
- public function setQuiet($quiet)
- {
- $this->quiet = (boolean) $quiet;
- }
-
- /**
- * Finds and initializes the phpDocumentor installation
- */
- private function initializePhpDocumentor()
- {
- $phpDocumentorPath = null;
-
- foreach (explode(PATH_SEPARATOR, get_include_path()) as $path) {
- $testPhpDocumentorPath = $path . DIRECTORY_SEPARATOR . 'phpDocumentor' . DIRECTORY_SEPARATOR . 'src';
-
- if (file_exists($testPhpDocumentorPath)) {
- $phpDocumentorPath = $testPhpDocumentorPath;
- }
- }
-
- if (empty($phpDocumentorPath)) {
- throw new BuildException("Please make sure PhpDocumentor 2 is installed and on the include_path.", $this->getLocation());
- }
-
- set_include_path($phpDocumentorPath . PATH_SEPARATOR . get_include_path());
-
- require_once $phpDocumentorPath . '/phpDocumentor/Bootstrap.php';
-
- $bootstrap = phpDocumentor_Bootstrap::createInstance();
-
- $autoloader = $bootstrap->registerAutoloader();
-
- if ($this->quiet) {
- phpDocumentor_Core_Abstract::config()->logging->level = 'quiet';
- } else {
- phpDocumentor_Core_Abstract::config()->logging->level = 'debug';
- }
-
- $bootstrap->registerPlugins($autoloader);
- }
-
- /**
- * Build a list of files (from the fileset elements)
- * and call the phpDocumentor parser
- *
- * @return string
- */
- private function parseFiles()
- {
- $parser = new phpDocumentor_Parser();
-
- //Only initialize the dispatcher when not already done
- if (is_null(phpDocumentor_Parser_Abstract::$event_dispatcher)) {
- phpDocumentor_Parser_Abstract::$event_dispatcher = new sfEventDispatcher();
- }
- $parser->setTitle($this->title);
-
- $paths = array();
-
- // filesets
- foreach ($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($this->project);
- $dir = $fs->getDir($this->project);
- $srcFiles = $ds->getIncludedFiles();
-
- foreach ($srcFiles as $file) {
- $paths[] = $dir . FileSystem::getFileSystem()->getSeparator() . $file;
- }
- }
-
- $this->log("Will parse " . count($paths) . " file(s)", Project::MSG_VERBOSE);
-
- $files = new phpDocumentor_Parser_Files();
- $files->addFiles($paths);
-
- $parser->setPath($files->getProjectRoot());
-
- return $parser->parseFiles($files);
- }
-
- /**
- * Task entry point
- * @see Task::main()
- */
- public function main()
- {
- if (empty($this->destDir)) {
- throw new BuildException("You must supply the 'destdir' attribute", $this->getLocation());
- }
-
- if (empty($this->filesets)) {
- throw new BuildException("You have not specified any files to include (<fileset>)", $this->getLocation());
- }
-
- $this->initializePhpDocumentor();
-
- $xml = $this->parseFiles();
-
- $this->log("Transforming...", Project::MSG_VERBOSE);
-
- $transformer = new phpDocumentor_Transformer();
- $transformer->setTemplatesPath(phpDocumentor_Core_Abstract::config()->paths->templates);
- $transformer->setTemplates($this->template);
- $transformer->setSource($xml);
- $transformer->setTarget($this->destDir->getAbsolutePath());
- $transformer->execute();
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php b/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php
deleted file mode 100755
index fb2a0b2b..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorExternalTask.php
+++ /dev/null
@@ -1,265 +0,0 @@
-<?php
-
-/**
- * $Id: 6a6c740651bb91c9854fcdf0cb1d7e768b84f805 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phpdoc/PhpDocumentorTask.php';
-
-/**
- * Task to run phpDocumentor with an external process
- *
- * This classes uses the commandline phpdoc script to build documentation.
- * Use this task instead of the PhpDocumentorTask when you've a clash with the
- * Smarty libraries.
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Markus Fischer <markus@fischer.name>
- * @version $Id: 6a6c740651bb91c9854fcdf0cb1d7e768b84f805 $
- * @package phing.tasks.ext.phpdoc
- */
-class PhpDocumentorExternalTask extends PhpDocumentorTask
-{
- /**
- * The path to the executable for phpDocumentor
- */
- protected $programPath = 'phpdoc';
-
- protected $sourcepath = NULL;
-
- /**
- * @var bool ignore symlinks to other files or directories
- */
- protected $ignoresymlinks = false;
-
- /**
- * Sets the path to the phpDocumentor executable
- */
- public function setProgramPath($programPath)
- {
- $this->programPath = $programPath;
- }
-
- /**
- * Returns the path to the phpDocumentor executable
- */
- public function getProgramPath()
- {
- return $this->programPath;
- }
-
- /**
- * Set the source path. A directory or a comma separate list of directories.
- */
- public function setSourcepath($sourcepath)
- {
- $this->sourcepath = $sourcepath;
- }
-
- /**
- * Ignore symlinks to other files or directories.
- *
- * @param bool $bSet
- */
- public function setIgnoresymlinks($bSet) {
- $this->ignoresymlinks = $bSet;
- }
-
- /**
- * Main entrypoint of the task
- */
- public function main()
- {
- $this->validate();
- $arguments = join(' ', $this->constructArguments());
-
- $this->log("Running phpDocumentor...");
-
- exec($this->programPath . " " . $arguments, $output, $return);
-
- if ($return != 0)
- {
- throw new BuildException("Could not execute phpDocumentor: " . implode(' ', $output));
- }
-
- foreach($output as $line)
- {
- if(strpos($line, 'ERROR') !== false)
- {
- $this->log($line, Project::MSG_ERR);
- continue;
- }
-
- $this->log($line, Project::MSG_VERBOSE);
- }
- }
-
- /**
- * Constructs an argument string for phpDocumentor
- * @return array
- */
- protected function constructArguments()
- {
- $aArgs = array();
- if ($this->title)
- {
- $aArgs[] = '--title "' . $this->title . '"';
- }
-
- if ($this->destdir)
- {
- $aArgs[] = '--target "' . $this->destdir->getAbsolutePath() . '"';
- }
-
- if ($this->sourcepath)
- {
- $aArgs[] = '--directory "' . $this->sourcepath . '"';
- }
-
- if ($this->output)
- {
- $aArgs[] = '--output ' . $this->output;
- }
-
- if ($this->linksource)
- {
- $aArgs[] = '--sourcecode on';
- }
-
- if ($this->parseprivate)
- {
- $aArgs[] = '--parseprivate on';
- }
-
- if ($this->ignore)
- {
- $aArgs[] = '--ignore ' . $this->ignore;
- }
-
- // append any files in filesets
- $filesToParse = array();
- foreach($this->filesets as $fs) {
- $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
- foreach($files as $filename) {
- $f = new PhingFile($fs->getDir($this->project), $filename);
- $filesToParse[] = $f->getAbsolutePath();
- }
- }
- if (count($filesToParse) > 0) {
- $aArgs[] = '--filename "' . join(',', $filesToParse) . '"';
- }
-
- // append any files in filesets
- $ricFiles = array();
- foreach($this->projDocFilesets as $fs) {
- $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
- foreach($files as $filename) {
- $f = new PhingFile($fs->getDir($this->project), $filename);
- $ricFiles[] = $f->getAbsolutePath();
- }
- }
- if (count($ricFiles) > 0) {
- $aArgs[] = '--readmeinstallchangelog "' .
- join(',', $ricFiles) . '"';
- }
-
- if ($this->javadocDesc) {
- $aArgs[] = '--javadocdesc on';
- }
-
- if ($this->quiet) {
- $aArgs[] = '--quiet on';
- }
-
- if ($this->packages) {
- $aArgs[] = '--packageoutput "' . $this->packages . '"';
- }
-
- if ($this->ignoreTags) {
- $aArgs[] = '--ignore-tags "' . $this->ignoreTags . '"';
- }
-
- if ($this->defaultCategoryName) {
- $aArgs[] = '--defaultcategoryname "' . $this->defaultCategoryName .
- '"';
- }
-
- if ($this->examplesDir) {
- $aArgs[] = '--examplesdir "' . $this->examplesDir->getAbsolutePath()
- . '"';
- }
-
- if ($this->templateBase) {
- $aArgs[] = '--templatebase "' . $this->templateBase->getAbsolutePath()
- . '"';
- }
-
- if ($this->pear) {
- $aArgs[] = '--pear on';
- }
-
- if ($this->undocumentedelements) {
- $aArgs[] = '--undocumentedelements on';
- }
-
- if ($this->customtags) {
- $aArgs[] = '--customtags "' . $this->customtags . '"';
- }
-
- if ($this->ignoresymlinks) {
- $aArgs[] = '--ignoresymlinks on';
- }
-
- return $aArgs;
- }
-
- /**
- * Override PhpDocumentorTask::init() because they're specific to the phpdoc
- * API which we don't use.
- */
- public function init() {
- }
-
- /**
- * Validates that necessary minimum options have been set. Based on
- * PhpDocumentorTask::validate().
- */
- protected function validate() {
- if (!$this->destdir) {
- throw new BuildException("You must specify a destdir for phpdoc.",
- $this->getLocation());
- }
- if (!$this->output) {
- throw new BuildException("You must specify an output format for " .
- "phpdoc (e.g. HTML:frames:default).", $this->getLocation());
- }
- if (empty($this->filesets) && !$this->sourcepath) {
- throw new BuildException("You have not specified any files to " .
- "include (<fileset> or sourcepath attribute) for phpdoc.",
- $this->getLocation());
- }
- if ($this->configdir) {
- $this->log('Ignoring unsupported configdir-Attribute',
- Project::MSG_VERBOSE);
- }
- }
-};
-
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorTask.php b/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorTask.php
deleted file mode 100755
index e4ae363a..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpdoc/PhpDocumentorTask.php
+++ /dev/null
@@ -1,480 +0,0 @@
-<?php
-
-/**
- * $Id: 23a04ddae9cad46198e15081a0fb44354135b1c8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Task to run PhpDocumentor.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 23a04ddae9cad46198e15081a0fb44354135b1c8 $
- * @package phing.tasks.ext.phpdoc
- */
-class PhpDocumentorTask extends Task
-{
-
- /**
- * @var string Title for browser window / package index.
- */
- protected $title;
-
- /**
- * @var PhingFile The target directory for output files.
- */
- protected $destdir;
-
- /**
- * @var array FileSet[] Filesets for files to parse.
- */
- protected $filesets = array();
-
- /**
- * @var array FileSet[] Project documentation (README/INSTALL/CHANGELOG) files.
- */
- protected $projDocFilesets = array();
-
- /**
- * @var string Package output format.
- */
- protected $output;
-
- /**
- * @var boolean Whether to generate sourcecode for each file parsed.
- */
- protected $linksource = false;
-
- /**
- * @var boolean Whether to parse private members.
- */
- protected $parsePrivate = false;
-
- /**
- * @var boolean Whether to use javadoc descriptions (more primitive).
- */
- protected $javadocDesc = false;
-
- /**
- * @var PhingFile Base directory for locating template files.
- */
- protected $templateBase;
-
- /**
- * @var boolean Wheter to suppress output.
- */
- protected $quiet = false;
-
- /**
- * @var string Comma-separated list of packages to output.
- */
- protected $packages;
-
- /**
- * @var string Comma-separated list of tags to ignore.
- */
- protected $ignoreTags;
-
- /**
- * @var string Default package name.
- */
- protected $defaultPackageName;
-
- /**
- * @var string Default category name.
- */
- protected $defaultCategoryName;
-
- /**
- * @var PhingFile Directory in which to look for examples.
- */
- protected $examplesDir;
-
- /**
- * @var PhingFile Directory in which to look for configuration files.
- */
- protected $configDir;
-
- /**
- * @var boolean Whether to parse as a PEAR repository.
- */
- protected $pear = false;
-
- /**
- * @var boolean Control whether or not warnings will be shown for
- * undocumented elements. Useful for identifying classes and
- * methods that haven't yet been documented.
- */
- protected $undocumentedelements = false;
-
- /**
- * @var string custom tags, will be recognized and put in tags[] instead of
- * unknowntags[].
- */
- protected $customtags = '';
-
- /**
- * @var string files to ignore
- */
- protected $ignore = '';
-
- /**
- * Set the title for the generated documentation
- */
- public function setTitle($title) {
- $this->title = $title;
- }
-
- /**
- * Set the destination directory for the generated documentation
- */
- public function setDestdir(PhingFile $destdir) {
- $this->destdir = $destdir;
- }
-
- /**
- * Alias for {@link setDestdir()}.
- * @see setDestdir()
- */
- public function setTarget(PhingFile $destdir) {
- $this->setDestdir($destdir);
- }
-
- /**
- * Set the output format (e.g. HTML:Smarty:PHP).
- * @param string $output
- */
- public function setOutput($output) {
- $this->output = $output;
- }
-
- /**
- * Set whether to generate sourcecode for each file parsed
- * @param boolean
- */
- public function setSourcecode($b) {
- $this->setLinksource($b);
- }
-
- /**
- * Set whether to generate sourcecode for each file parsed
- * @param boolean
- */
- public function setLinksource($b) {
- $this->linksource = $b;
- }
-
- /**
- * Set whether to suppress output.
- * @param boolean $b
- */
- public function setQuiet($b) {
- $this->quiet = $b;
- }
-
- /**
- * Should private members/classes be documented
- * @param boolean
- */
- public function setParseprivate($parseprivate) {
- $this->parsePrivate = $parseprivate;
- }
-
- /**
- * Whether to use javadoc descriptions (more primitive).
- * @param boolean
- */
- public function setJavadocdesc($javadoc) {
- $this->javadocDesc = $javadoc;
- }
-
- /**
- * Set (comma-separated) list of packages to output.
- *
- * @param string $packages
- */
- public function setPackageoutput($packages) {
- $this->packages = $packages;
- }
-
- /**
- * Set (comma-separated) list of tags to ignore.
- *
- * @param string $tags
- */
- public function setIgnoretags($tags) {
- $this->ignoreTags = $tags;
- }
-
- /**
- * Set a directory to search for examples in.
- * @param PhingFile $d
- */
- public function setExamplesdir(PhingFile $d) {
- $this->examplesDir = $d;
- }
-
- /**
- * Set a directory to search for configuration files in.
- * @param PhingFile $d
- */
- public function setConfigdir(PhingFile $d) {
- $this->configDir = $d;
- }
-
- /**
- * Sets the default package name.
- * @param string $name
- */
- public function setDefaultpackagename($name) {
- $this->defaultPackageName = $name;
- }
-
- /**
- * Sets the default category name.
- * @param string $name
- */
- public function setDefaultcategoryname($name) {
- $this->defaultCategoryName = $name;
- }
-
- /**
- * Set whether to parse as PEAR repository.
- * @param boolean $b
- */
- public function setPear($b) {
- $this->pear = $b;
- }
-
- /**
- * Creates a FileSet.
- * @return FileSet
- */
- public function createFileset() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Creates a readme/install/changelog fileset.
- * @return FileSet
- */
- public function createProjdocfileset() {
- $num = array_push($this->projDocFilesets, new FileSet());
- return $this->projDocFilesets[$num-1];
- }
-
- /**
- * Control whether or not warnings will be shown for undocumented elements.
- * Useful for identifying classes and methods that haven't yet been
- * documented.
- * @param boolean $b
- */
- public function setUndocumentedelements($b) {
- $this->undocumentedelements = $b;
- }
-
- /**
- * custom tags, will be recognized and put in tags[] instead of
- * unknowntags[].
- *
- * @param string $sCustomtags
- */
- public function setCustomtags($sCustomtags) {
- $this->customtags = $sCustomtags;
- }
-
- /**
- * Set base location of all templates for this parse.
- *
- * @param PhingFile $destdir
- */
- public function setTemplateBase(PhingFile $oTemplateBase) {
- $this->templateBase = $oTemplateBase;
- }
-
- /**
- * Set files to ignore
- * @param string $sIgnore
- */
- public function setIgnore($sIgnore) {
- $this->ignore = $sIgnore;
- }
-
- /**
- * Searches include_path for PhpDocumentor install and adjusts include_path appropriately.
- * @throws BuildException - if unable to find PhpDocumentor on include_path
- */
- protected function findPhpDocumentorInstall()
- {
- $found = null;
- foreach(explode(PATH_SEPARATOR, get_include_path()) as $path) {
- $testpath = $path . DIRECTORY_SEPARATOR . 'PhpDocumentor';
- if (file_exists($testpath)) {
- $found = $testpath;
- break;
- }
- }
- if (!$found) {
- throw new BuildException("PhpDocumentor task depends on PhpDocumentor being installed and on include_path.", $this->getLocation());
- }
- // otherwise, adjust the include_path to path to include the PhpDocumentor directory ...
- set_include_path(get_include_path() . PATH_SEPARATOR . $found);
- include_once ("phpDocumentor/Setup.inc.php");
- if (!class_exists('phpDocumentor_setup')) {
- throw new BuildException("Error including PhpDocumentor setup class file.");
- }
- }
-
- /**
- * Main entrypoint of the task
- * Loads the necessary environment for running PhpDoc, then runs PhpDoc
- *
- * @throws BuildException - if the phpdoc classes can't be loaded.
- */
- function main()
- {
- $this->findPhpDocumentorInstall();
- include_once 'phing/tasks/ext/phpdoc/PhingPhpDocumentorSetup.php';
-
- $this->validate();
- $configdir = $this->configDir ? $this->configDir->getAbsolutePath() : null;
- $phpdoc = new PhingPhpDocumentorSetup($configdir, $this);
- $this->setPhpDocumentorOptions($phpdoc);
- //$phpdoc->readCommandLineSettings();
- $phpdoc->setupConverters($this->output);
- $phpdoc->createDocs();
- }
-
- /**
- * Validates that necessary minimum options have been set.
- * @throws BuildException if validation doesn't pass
- */
- protected function validate()
- {
- if (!$this->destdir) {
- throw new BuildException("You must specify a destdir for phpdoc.", $this->getLocation());
- }
- if (!$this->output) {
- throw new BuildException("You must specify an output format for phpdoc (e.g. HTML:frames:default).", $this->getLocation());
- }
- if (empty($this->filesets)) {
- throw new BuildException("You have not specified any files to include (<fileset>) for phpdoc.", $this->getLocation());
- }
- }
-
- /**
- * Sets the options on the passed-in phpdoc setup object.
- * @param PhingPhpDocumentorSetup $phpdoc
- */
- protected function setPhpDocumentorOptions(PhingPhpDocumentorSetup $phpdoc)
- {
-
- // Title MUST be set first ... (because it re-initializes the internal state of the PhpDocu renderer)
- if ($this->title) {
- $phpdoc->setTitle($this->title);
- }
-
- if ($this->parsePrivate) {
- $phpdoc->setParsePrivate();
- }
-
- if ($this->javadocDesc) {
- $phpdoc->setJavadocDesc();
- }
-
- if ($this->quiet) {
- $phpdoc->setQuietMode();
- }
-
- if ($this->destdir) {
- $phpdoc->setTargetDir($this->destdir->getAbsolutePath());
- }
-
- if ($this->packages) {
- $phpdoc->setPackageOutput($this->packages);
- }
-
- if ($this->templateBase) {
- $phpdoc->setTemplateBase($this->templateBase->getAbsolutePath());
- }
-
- if ($this->linksource) {
- $phpdoc->setGenerateSourcecode($this->linksource);
- }
-
- if ($this->examplesDir) {
- $phpdoc->setExamplesDir($this->examplesDir->getAbsolutePath());
- }
-
- if ($this->ignoreTags) {
- $phpdoc->setIgnoreTags($this->ignoreTags);
- }
-
- if ($this->defaultPackageName) {
- $phpdoc->setDefaultPackageName($this->defaultPackageName);
- }
-
- if ($this->defaultCategoryName) {
- $phpdoc->setDefaultCategoryName($this->defaultCategoryName);
- }
-
- if ($this->pear) {
- $phpdoc->setPear($this->pear);
- }
-
- if ($this->ignore) {
- $phpdoc->setIgnore($this->ignore);
- }
-
- // append any files in filesets
- $filesToParse = array();
- foreach($this->filesets as $fs) {
- $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
- foreach($files as $filename) {
- $f = new PhingFile($fs->getDir($this->project), $filename);
- $filesToParse[] = $f->getAbsolutePath();
- }
- }
- //print_r(implode(",", $filesToParse));
- $phpdoc->setFilesToParse(implode(",", $filesToParse));
-
-
- // append any files in filesets
- $ricFiles = array();
- foreach($this->projDocFilesets as $fs) {
- $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
- foreach($files as $filename) {
- $f = new PhingFile($fs->getDir($this->project), $filename);
- $ricFiles[] = $f->getName();
- }
- }
- $phpdoc->setRicFiles($ricFiles);
-
- if ($this->undocumentedelements) {
- $phpdoc->setUndocumentedelements($this->undocumentedelements);
- }
-
- if ($this->customtags) {
- $phpdoc->setCustomtags($this->customtags);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDFormatterElement.php b/buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDFormatterElement.php
deleted file mode 100644
index c327e331..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDFormatterElement.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/**
- * $Id: 69fc758899446b96312ac12f26b461969eb41b6e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * A wrapper for the implementations of PHPMDResultFormatter.
- *
- * @package phing.tasks.ext.phpmd
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 69fc758899446b96312ac12f26b461969eb41b6e $
- * @since 2.4.1
- */
-class PHPMDFormatterElement
-{
- /**
- * @var PHPMDResultFormatter
- */
- protected $formatter = null;
-
- /**
- * The type of the formatter.
- *
- * @var string
- */
- protected $type = "";
-
- /**
- * Whether to use file (or write output to phing log).
- *
- * @var boolean
- */
- protected $useFile = true;
-
- /**
- * Output file for formatter.
- *
- * @var PhingFile
- */
- protected $outfile = null;
-
- /**
- * Sets the formatter type.
- *
- * @param string $type Type of the formatter
- *
- * @return void
- */
- public function setType($type)
- {
- $this->type = $type;
-
- switch ($this->type) {
- case 'xml':
- include_once 'PHP/PMD/Renderer/XMLRenderer.php';
- break;
-
- case 'html':
- include_once 'PHP/PMD/Renderer/HTMLRenderer.php';
- break;
-
- case 'text':
- include_once 'PHP/PMD/Renderer/TextRenderer.php';
- break;
-
- default:
- throw new BuildException("Formatter '" . $this->type . "' not implemented");
- }
- }
-
- /**
- * Get the formatter type
- *
- * @return string
- */
- public function getType()
- {
- return $this->type;
- }
-
- /**
- * Set whether to write formatter results to file or not.
- *
- * @param boolean $useFile True or false.
- *
- * @return void
- */
- public function setUseFile($useFile)
- {
- $this->useFile = (boolean) $useFile;
- }
-
- /**
- * Return whether to write formatter results to file or not.
- *
- * @return boolean
- */
- public function getUseFile()
- {
- return $this->useFile;
- }
-
- /**
- * Sets the output file for the formatter results.
- *
- * @param PhingFile $outfile The output file
- *
- * @return void
- */
- public function setOutfile(PhingFile $outfile)
- {
- $this->outfile = $outfile;
- }
-
- /**
- * Get the output file.
- *
- * @return PhingFile
- */
- public function getOutfile()
- {
- return $this->outfile;
- }
-
- /**
- * Creates a report renderer instance based on the formatter type.
- *
- * @return PHP_PMD_AbstractRenderer
- * @throws BuildException When the specified renderer does not exist.
- */
- public function getRenderer()
- {
- switch ($this->type) {
- case 'xml':
- $renderer = new PHP_PMD_Renderer_XMLRenderer();
- break;
-
- case 'html':
- $renderer = new PHP_PMD_Renderer_HTMLRenderer();
- break;
-
- case 'text':
- $renderer = new PHP_PMD_Renderer_TextRenderer();
- break;
-
- default:
- throw new BuildException("PHP_MD renderer '" . $this->type . "' not implemented");
- }
-
- // Create a report stream
- if ($this->getUseFile() === false || $this->getOutfile() === null) {
- $stream = STDOUT;
- } else {
- $stream = fopen($this->getOutfile()->getAbsoluteFile(), 'wb');
- }
-
- require_once 'PHP/PMD/Writer/Stream.php';
-
- $renderer->setWriter(new PHP_PMD_Writer_Stream($stream));
-
- return $renderer;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDTask.php b/buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDTask.php
deleted file mode 100644
index 1c4d34bf..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpmd/PHPMDTask.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-/**
- * $Id: 35668c2c6fbf1ca87fab21c26fd55ef630458fc7 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/phpmd/PHPMDFormatterElement.php';
-
-/**
- * Runs PHP Mess Detector. Checking PHP files for several potential problems
- * based on rulesets.
- *
- * @package phing.tasks.ext.phpmd
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 35668c2c6fbf1ca87fab21c26fd55ef630458fc7 $
- * @since 2.4.1
- */
-class PHPMDTask extends Task
-{
- /**
- * A php source code filename or directory
- *
- * @var PhingFile
- */
- protected $file = null;
-
- /**
- * All fileset objects assigned to this task
- *
- * @var array<FileSet>
- */
- protected $filesets = array();
-
- /**
- * The rule-set filenames or identifier.
- *
- * @var string
- */
- protected $rulesets = 'codesize,unusedcode';
-
- /**
- * The minimum priority for rules to load.
- *
- * @var integer
- */
- protected $minimumPriority = 0;
-
- /**
- * List of valid file extensions for analyzed files.
- *
- * @var array
- */
- protected $allowedFileExtensions = array('php');
-
- /**
- * List of exclude directory patterns.
- *
- * @var array
- */
- protected $ignorePatterns = array('.git', '.svn', 'CVS', '.bzr', '.hg');
-
- /**
- * The format for the report
- *
- * @var string
- */
- protected $format = 'text';
-
- /**
- * Formatter elements.
- *
- * @var array<PHPMDFormatterElement>
- */
- protected $formatters = array();
-
- /**
- * Set the input source file or directory.
- *
- * @param PhingFile $file The input source file or directory.
- *
- * @return void
- */
- public function setFile(PhingFile $file)
- {
- $this->file = $file;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- *
- * @return FileSet The created fileset object
- */
- public function createFileSet()
- {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Sets the minimum rule priority.
- *
- * @param integer $minimumPriority Minimum rule priority.
- *
- * @return void
- */
- public function setMinimumPriority($minimumPriority)
- {
- $this->minimumPriority = $minimumPriority;
- }
-
- /**
- * Sets the rule-sets.
- *
- * @param string $ruleSetFileNames Comma-separated string of rule-set filenames
- * or identifier.
- *
- * @return void
- */
- public function setRulesets($ruleSetFileNames)
- {
- $this->rulesets = $ruleSetFileNames;
- }
-
- /**
- * Sets a list of filename extensions for valid php source code files.
- *
- * @param string $fileExtensions List of valid file extensions without leading dot.
- *
- * @return void
- */
- public function setAllowedFileExtensions($fileExtensions)
- {
- $this->allowedFileExtensions = array();
-
- $token = ' ,;';
- $ext = strtok($fileExtensions, $token);
-
- while ($ext !== false) {
- $this->allowedFileExtensions[] = $ext;
- $ext = strtok($token);
- }
- }
-
- /**
- * Sets a list of ignore patterns that is used to exclude directories from
- * the source analysis.
- *
- * @param string $ignorePatterns List of ignore patterns.
- *
- * @return void
- */
- public function setIgnorePatterns($ignorePatterns)
- {
- $this->ignorePatterns = array();
-
- $token = ' ,;';
- $pattern = strtok($ignorePatterns, $token);
-
- while ($pattern !== false) {
- $this->ignorePatterns[] = $pattern;
- $pattern = strtok($token);
- }
- }
-
- /**
- * Create object for nested formatter element.
- *
- * @return PHPMDFormatterElement
- */
- public function createFormatter()
- {
- $num = array_push($this->formatters, new PHPMDFormatterElement());
- return $this->formatters[$num-1];
- }
-
- /**
- * Executes PHPMD against PhingFile or a FileSet
- *
- * @throws BuildException - if the phpmd classes can't be loaded.
- * @return void
- */
- public function main()
- {
- /**
- * Find PHPMD
- */
- @include_once 'PHP/PMD.php';
-
- if (! class_exists('PHP_PMD')) {
- throw new BuildException(
- 'PHPMDTask depends on PHPMD being installed and on include_path.',
- $this->getLocation()
- );
- }
-
- require_once 'PHP/PMD/AbstractRule.php';
-
- if (!$this->minimumPriority) {
- $this->minimumPriority = PHP_PMD_AbstractRule::LOWEST_PRIORITY;
- }
-
- if (!isset($this->file) and count($this->filesets) == 0) {
- throw new BuildException("Missing either a nested fileset or attribute 'file' set");
- }
-
- if (count($this->formatters) == 0) {
- // turn legacy format attribute into formatter
- $fmt = new PHPMDFormatterElement();
- $fmt->setType($this->format);
- $fmt->setUseFile(false);
- $this->formatters[] = $fmt;
- }
-
- $reportRenderers = array();
-
- foreach ($this->formatters as $fe) {
- if ($fe->getType() == '') {
- throw new BuildException("Formatter missing required 'type' attribute.");
- }
- if ($fe->getUsefile() && $fe->getOutfile() === null) {
- throw new BuildException("Formatter requires 'outfile' attribute when 'useFile' is true.");
- }
-
- $reportRenderers[] = $fe->getRenderer();
- }
-
- // Create a rule set factory
- $ruleSetFactory = new PHP_PMD_RuleSetFactory();
- $ruleSetFactory->setMinimumPriority($this->minimumPriority);
-
- $phpmd = new PHP_PMD();
-
- $phpmd->setFileExtensions($this->allowedFileExtensions);
- $phpmd->setIgnorePattern($this->ignorePatterns);
-
- $filesToParse = array();
-
- if ($this->file instanceof PhingFile) {
- $filesToParse[] = $this->file->getPath();
- } else {
- // append any files in filesets
- foreach ($this->filesets as $fs) {
- $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
- foreach ($files as $filename) {
- $f = new PhingFile($fs->getDir($this->project), $filename);
- $filesToParse[] = $f->getAbsolutePath();
- }
- }
- }
-
- if (count($filesToParse) > 0) {
- $inputPath = implode(',', $filesToParse);
-
- $this->log('Processing files...');
-
- $phpmd->processFiles(
- $inputPath,
- $this->rulesets,
- $reportRenderers,
- $ruleSetFactory
- );
-
- $this->log('Finished processing files');
- } else {
- $this->log('No files to process');
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/BatchTest.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/BatchTest.php
deleted file mode 100755
index 6a6cec24..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/BatchTest.php
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-/**
- * $Id: 4067d915614ff7a864c31f19549bcf6a96c0f92d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phpunit/PHPUnitUtil.php';
-require_once 'phing/types/FileSet.php';
-
-/**
- * Scans a list of files given by the fileset attribute, extracts valid test cases
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 4067d915614ff7a864c31f19549bcf6a96c0f92d $
- * @package phing.tasks.ext.phpunit
- * @since 2.1.0
- */
-class BatchTest
-{
- /** the list of filesets containing the testcase filename rules */
- private $filesets = array();
-
- /** the reference to the project */
- private $project = NULL;
-
- /** the classpath to use with Phing::__import() calls */
- private $classpath = NULL;
-
- /** names of classes to exclude */
- private $excludeClasses = array();
-
- /** name of the batchtest/suite */
- protected $name = "Phing Batchtest";
-
- /**
- * Create a new batchtest instance
- *
- * @param Project the project it depends on.
- */
- public function __construct(Project $project)
- {
- $this->project = $project;
- }
-
- /**
- * Sets the name of the batchtest/suite
- */
- public function setName($name)
- {
- $this->name = $name;
- }
-
- /**
- * Sets the classes to exclude
- */
- public function setExclude($exclude)
- {
- $this->excludeClasses = explode(" ", $exclude);
- }
-
- /**
- * Sets the classpath
- */
- public function setClasspath(Path $classpath)
- {
- if ($this->classpath === null)
- {
- $this->classpath = $classpath;
- }
- else
- {
- $this->classpath->append($classpath);
- }
- }
-
- /**
- * Creates a new Path object
- */
- public function createClasspath()
- {
- $this->classpath = new Path();
- return $this->classpath;
- }
-
- /**
- * Returns the classpath
- */
- public function getClasspath()
- {
- return $this->classpath;
- }
-
- /**
- * Add a new fileset containing the XML results to aggregate
- *
- * @param FileSet the new fileset containing XML results.
- */
- public function addFileSet(FileSet $fileset)
- {
- $this->filesets[] = $fileset;
- }
-
- /**
- * Iterate over all filesets and return the filename of all files.
- *
- * @return array an array of filenames
- */
- private function getFilenames()
- {
- $filenames = array();
-
- foreach ($this->filesets as $fileset)
- {
- $ds = $fileset->getDirectoryScanner($this->project);
- $ds->scan();
-
- $files = $ds->getIncludedFiles();
-
- foreach ($files as $file)
- {
- $filenames[] = $ds->getBaseDir() . "/" . $file;
- }
- }
-
- return $filenames;
- }
-
- /**
- * Checks wheter $input is a PHPUnit Test
- */
- private function isTestCase($input)
- {
- return is_subclass_of($input, 'PHPUnit_Framework_TestCase') || is_subclass_of($input, 'PHPUnit_Framework_TestSuite');
- }
-
- /**
- * Filters an array of classes, removes all classes that are not test cases or test suites,
- * or classes that are declared abstract
- */
- private function filterTests($input)
- {
- $reflect = new ReflectionClass($input);
-
- return $this->isTestCase($input) && (!$reflect->isAbstract());
- }
-
- /**
- * Returns an array of test cases and test suites that are declared
- * by the files included by the filesets
- *
- * @return array an array of tests.
- */
- protected function elements()
- {
- $filenames = $this->getFilenames();
-
- $declaredClasses = array();
-
- foreach ($filenames as $filename)
- {
- $definedClasses = PHPUnitUtil::getDefinedClasses($filename, $this->classpath);
-
- foreach($definedClasses as $definedClass) {
- $this->project->log("(PHPUnit) Adding $definedClass (from $filename) to tests.", Project::MSG_DEBUG);
- }
-
- $declaredClasses = array_merge($declaredClasses, $definedClasses);
- }
-
- $elements = array_filter($declaredClasses, array($this, "filterTests"));
-
- return $elements;
- }
-
- /**
- * Returns a testsuite containing all the tests in this batch
- *
- * @deprecated
- * @return PHPUnit_Framework_TestSuite
- */
- public function getTestSuite()
- {
- $suite = new PHPUnit_Framework_TestSuite($this->name);
-
- foreach ($this->elements() as $test)
- {
- $testClass = new $test();
- if (!($testClass instanceof PHPUnit_Framework_TestSuite))
- {
- $testClass = new ReflectionClass($test);
- }
-
- $suite->addTestSuite($testClass);
- }
-
- return $suite;
- }
-
- /**
- * Add the tests in this batchtest to a test suite
- * @param PHPUnit_Framework_TestSuite $suite
- */
- public function addToTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- foreach ($this->elements() as $element) {
- $testClass = new $element();
- if (!($testClass instanceof PHPUnit_Framework_TestSuite))
- {
- $testClass = new ReflectionClass($element);
- }
- $suite->addTestSuite($testClass);
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/FormatterElement.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/FormatterElement.php
deleted file mode 100755
index c220b79d..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/FormatterElement.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-/**
- * $Id: 296214ebac3a12e51bffed3dcc2c0bb93fb0754e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-
-/**
- * A wrapper for the implementations of PHPUnit2ResultFormatter.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 296214ebac3a12e51bffed3dcc2c0bb93fb0754e $
- * @package phing.tasks.ext.phpunit
- * @since 2.1.0
- */
-class FormatterElement
-{
- protected $formatter = NULL;
-
- protected $type = "";
-
- protected $useFile = true;
-
- protected $toDir = ".";
-
- protected $outfile = "";
-
- protected $parent = NULL;
-
- /**
- * Sets parent task
- * @param Task $parent Calling Task
- */
- public function setParent($parent)
- {
- $this->parent = $parent;
- }
-
- /**
- * Loads a specific formatter type
- * @param string $type
- */
- public function setType($type)
- {
- $this->type = $type;
-
- if ($this->type == "summary")
- {
- require_once 'phing/tasks/ext/phpunit/formatter/SummaryPHPUnitResultFormatter.php';
- $this->formatter = new SummaryPHPUnitResultFormatter($this->parent);
- }
- else
- if ($this->type == "clover")
- {
- require_once 'phing/tasks/ext/phpunit/formatter/CloverPHPUnitResultFormatter.php';
- $this->formatter = new CloverPHPUnitResultFormatter($this->parent);
- }
- else
- if ($this->type == "xml")
- {
- require_once 'phing/tasks/ext/phpunit/formatter/XMLPHPUnitResultFormatter.php';
- $this->formatter = new XMLPHPUnitResultFormatter($this->parent);
- }
- else
- if ($this->type == "plain")
- {
- require_once 'phing/tasks/ext/phpunit/formatter/PlainPHPUnitResultFormatter.php';
- $this->formatter = new PlainPHPUnitResultFormatter($this->parent);
- }
- else
- {
- throw new BuildException("Formatter '" . $this->type . "' not implemented");
- }
- }
-
- /**
- * Loads a specific formatter class
- */
- public function setClassName($className)
- {
- $classNameNoDot = Phing::import($className);
-
- $this->formatter = new $classNameNoDot();
- }
-
- /**
- * Sets whether to store formatting results in a file
- */
- public function setUseFile($useFile)
- {
- $this->useFile = $useFile;
- }
-
- /**
- * Returns whether to store formatting results in a file
- */
- public function getUseFile()
- {
- return $this->useFile;
- }
-
- /**
- * Sets output directory
- * @param string $toDir
- */
- public function setToDir($toDir)
- {
- $this->toDir = $toDir;
- }
-
- /**
- * Returns output directory
- * @return string
- */
- public function getToDir()
- {
- return $this->toDir;
- }
-
- /**
- * Sets output filename
- * @param string $outfile
- */
- public function setOutfile($outfile)
- {
- $this->outfile = $outfile;
- }
-
- /**
- * Returns output filename
- * @return string
- */
- public function getOutfile()
- {
- if ($this->outfile)
- {
- return $this->outfile;
- }
- else
- {
- return $this->formatter->getPreferredOutfile() . $this->getExtension();
- }
- }
-
- /**
- * Returns extension
- * @return string
- */
- public function getExtension()
- {
- return $this->formatter->getExtension();
- }
-
- /**
- * Returns formatter object
- * @return PHPUnitResultFormatter
- */
- public function getFormatter()
- {
- return $this->formatter;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitReportTask.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitReportTask.php
deleted file mode 100755
index 87338da7..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitReportTask.php
+++ /dev/null
@@ -1,248 +0,0 @@
-<?php
-/**
- * $Id: b88d6fa4ca4717177b562a0475c81d92c161d9b4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/FileWriter.php';
-require_once 'phing/util/ExtendedFileStream.php';
-
-/**
- * Transform a PHPUnit xml report using XSLT.
- * This transformation generates an html report in either framed or non-framed
- * style. The non-framed style is convenient to have a concise report via mail,
- * the framed report is much more convenient if you want to browse into
- * different packages or testcases since it is a Javadoc like report.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: b88d6fa4ca4717177b562a0475c81d92c161d9b4 $
- * @package phing.tasks.ext.phpunit
- * @since 2.1.0
- */
-class PHPUnitReportTask extends Task
-{
- private $format = "noframes";
- private $styleDir = "";
- private $toDir = "";
-
- /**
- * Whether to use the sorttable JavaScript library, defaults to false
- * See {@link http://www.kryogenix.org/code/browser/sorttable/)}
- *
- * @var boolean
- */
- private $useSortTable = false;
-
- /** the directory where the results XML can be found */
- private $inFile = "testsuites.xml";
-
- /**
- * Set the filename of the XML results file to use.
- */
- public function setInFile(PhingFile $inFile)
- {
- $this->inFile = $inFile;
- }
-
- /**
- * Set the format of the generated report. Must be noframes or frames.
- */
- public function setFormat($format)
- {
- $this->format = $format;
- }
-
- /**
- * Set the directory where the stylesheets are located.
- */
- public function setStyleDir($styleDir)
- {
- $this->styleDir = $styleDir;
- }
-
- /**
- * Set the directory where the files resulting from the
- * transformation should be written to.
- */
- public function setToDir(PhingFile $toDir)
- {
- $this->toDir = $toDir;
- }
-
- /**
- * Sets whether to use the sorttable JavaScript library, defaults to false
- * See {@link http://www.kryogenix.org/code/browser/sorttable/)}
- *
- * @param boolean $useSortTable
- */
- public function setUseSortTable($useSortTable)
- {
- $this->useSortTable = (boolean) $useSortTable;
- }
-
- /**
- * Returns the path to the XSL stylesheet
- */
- protected function getStyleSheet()
- {
- $xslname = "phpunit-" . $this->format . ".xsl";
-
- if ($this->styleDir)
- {
- $file = new PhingFile($this->styleDir, $xslname);
- }
- else
- {
- $path = Phing::getResourcePath("phing/etc/$xslname");
-
- if ($path === NULL)
- {
- $path = Phing::getResourcePath("etc/$xslname");
-
- if ($path === NULL)
- {
- throw new BuildException("Could not find $xslname in resource path");
- }
- }
-
- $file = new PhingFile($path);
- }
-
- if (!$file->exists())
- {
- throw new BuildException("Could not find file " . $file->getPath());
- }
-
- return $file;
- }
-
- /**
- * Transforms the DOM document
- */
- protected function transform(DOMDocument $document)
- {
- if (!$this->toDir->exists())
- {
- throw new BuildException("Directory '" . $this->toDir . "' does not exist");
- }
-
- $xslfile = $this->getStyleSheet();
-
- $xsl = new DOMDocument();
- $xsl->load($xslfile->getAbsolutePath());
-
- $proc = new XSLTProcessor();
- if (defined('XSL_SECPREF_WRITE_FILE'))
- {
- if (version_compare(PHP_VERSION,'5.4',"<"))
- {
- ini_set("xsl.security_prefs", XSL_SECPREF_WRITE_FILE | XSL_SECPREF_CREATE_DIRECTORY);
- }
- else
- {
- $proc->setSecurityPrefs(XSL_SECPREF_WRITE_FILE | XSL_SECPREF_CREATE_DIRECTORY);
- }
- }
-
- $proc->importStyleSheet($xsl);
- $proc->setParameter('', 'output.sorttable', $this->useSortTable);
-
- if ($this->format == "noframes")
- {
- $writer = new FileWriter(new PhingFile($this->toDir, "phpunit-noframes.html"));
- $writer->write($proc->transformToXML($document));
- $writer->close();
- }
- else
- {
- ExtendedFileStream::registerStream();
-
- $toDir = (string) $this->toDir;
-
- // urlencode() the path if we're on Windows
- if (FileSystem::getFileSystem()->getSeparator() == '\\') {
- $toDir = urlencode($toDir);
- }
-
- // no output for the framed report
- // it's all done by extension...
- $proc->setParameter('', 'output.dir', $toDir);
- $proc->transformToXML($document);
-
- ExtendedFileStream::unregisterStream();
- }
- }
-
- /**
- * Fixes DOM document tree:
- * - adds package="default" to 'testsuite' elements without
- * package attribute
- * - removes outer 'testsuite' container(s)
- */
- protected function fixDocument(DOMDocument $document)
- {
- $rootElement = $document->firstChild;
-
- $xp = new DOMXPath($document);
-
- $nodes = $xp->query("/testsuites/testsuite");
-
- foreach ($nodes as $node) {
- $children = $xp->query("./testsuite", $node);
-
- if ($children->length) {
- foreach ($children as $child) {
- if (!$child->hasAttribute('package'))
- {
- $child->setAttribute('package', 'default');
- }
- $rootElement->appendChild($child);
- }
-
- $rootElement->removeChild($node);
- }
- }
- }
-
- /**
- * Initialize the task
- */
- public function init()
- {
- if (!class_exists('XSLTProcessor')) {
- throw new BuildException("PHPUnitReportTask requires the XSL extension");
- }
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- public function main()
- {
- $testSuitesDoc = new DOMDocument();
- $testSuitesDoc->load((string) $this->inFile);
-
- $this->fixDocument($testSuitesDoc);
-
- $this->transform($testSuitesDoc);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTask.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTask.php
deleted file mode 100755
index 5b842b95..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTask.php
+++ /dev/null
@@ -1,378 +0,0 @@
-<?php
-/**
- * $Id: 4554fdd642b6ef7774cbb89c537ccba90f3ca972 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/Writer.php';
-require_once 'phing/util/LogWriter.php';
-
-/**
- * Runs PHPUnit tests.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 4554fdd642b6ef7774cbb89c537ccba90f3ca972 $
- * @package phing.tasks.ext.phpunit
- * @see BatchTest
- * @since 2.1.0
- */
-class PHPUnitTask extends Task
-{
- private $batchtests = array();
- private $formatters = array();
- private $bootstrap = "";
- private $haltonerror = false;
- private $haltonfailure = false;
- private $haltonincomplete = false;
- private $haltonskipped = false;
- private $errorproperty;
- private $failureproperty;
- private $incompleteproperty;
- private $skippedproperty;
- private $printsummary = false;
- private $testfailed = false;
- private $testfailuremessage = "";
- private $codecoverage = null;
- private $groups = array();
- private $excludeGroups = array();
- private $processIsolation = false;
- private $usecustomerrorhandler = true;
-
- /**
- * Initialize Task.
- * This method includes any necessary PHPUnit libraries and triggers
- * appropriate error if they cannot be found. This is not done in header
- * because we may want this class to be loaded w/o triggering an error.
- */
- public function init() {
- /**
- * Determine PHPUnit version number
- */
- @include_once 'PHPUnit/Runner/Version.php';
-
- if (!class_exists('PHPUnit_Runner_Version')) {
- throw new BuildException("PHPUnitTask requires PHPUnit to be installed", $this->getLocation());
- }
-
- $version = PHPUnit_Runner_Version::id();
-
- if (version_compare($version, '3.6.0') < 0)
- {
- throw new BuildException("PHPUnitTask requires PHPUnit version >= 3.6.0", $this->getLocation());
- }
-
- /**
- * Other dependencies that should only be loaded when class is actually used.
- */
- require_once 'phing/tasks/ext/phpunit/PHPUnitTestRunner.php';
- require_once 'phing/tasks/ext/phpunit/BatchTest.php';
- require_once 'phing/tasks/ext/phpunit/FormatterElement.php';
-
- /**
- * point PHPUnit_MAIN_METHOD define to non-existing method
- */
- if (!defined('PHPUnit_MAIN_METHOD'))
- {
- define('PHPUnit_MAIN_METHOD', 'PHPUnitTask::undefined');
- }
- }
-
- /**
- * Sets the name of a bootstrap file that is run before
- * executing the tests
- *
- * @param string $bootstrap the name of the bootstrap file
- */
- public function setBootstrap($bootstrap)
- {
- $this->bootstrap = $bootstrap;
- }
-
- public function setErrorproperty($value)
- {
- $this->errorproperty = $value;
- }
-
- public function setFailureproperty($value)
- {
- $this->failureproperty = $value;
- }
-
- public function setIncompleteproperty($value)
- {
- $this->incompleteproperty = $value;
- }
-
- public function setSkippedproperty($value)
- {
- $this->skippedproperty = $value;
- }
-
- public function setHaltonerror($value)
- {
- $this->haltonerror = $value;
- }
-
- public function setHaltonfailure($value)
- {
- $this->haltonfailure = $value;
- }
-
- public function getHaltonfailure()
- {
- return $this->haltonfailure;
- }
-
- public function setHaltonincomplete($value)
- {
- $this->haltonincomplete = $value;
- }
-
- public function getHaltonincomplete()
- {
- return $this->haltonincomplete;
- }
-
- public function setHaltonskipped($value)
- {
- $this->haltonskipped = $value;
- }
-
- public function getHaltonskipped()
- {
- return $this->haltonskipped;
- }
-
- public function setPrintsummary($printsummary)
- {
- $this->printsummary = $printsummary;
- }
-
- public function setCodecoverage($codecoverage)
- {
- $this->codecoverage = $codecoverage;
- }
-
- public function setProcessIsolation($processIsolation)
- {
- $this->processIsolation = $processIsolation;
- }
-
- public function setUseCustomErrorHandler($usecustomerrorhandler)
- {
- $this->usecustomerrorhandler = $usecustomerrorhandler;
- }
-
- public function setGroups($groups)
- {
- $token = ' ,;';
- $this->groups = array();
- $tok = strtok($groups, $token);
- while ($tok !== false) {
- $this->groups[] = $tok;
- $tok = strtok($token);
- }
- }
-
- public function setExcludeGroups($excludeGroups)
- {
- $token = ' ,;';
- $this->excludeGroups = array();
- $tok = strtok($excludeGroups, $token);
- while ($tok !== false) {
- $this->excludeGroups[] = $tok;
- $tok = strtok($token);
- }
- }
-
- /**
- * Add a new formatter to all tests of this task.
- *
- * @param FormatterElement formatter element
- */
- public function addFormatter(FormatterElement $fe)
- {
- $fe->setParent($this);
- $this->formatters[] = $fe;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- public function main()
- {
- if ($this->codecoverage && !extension_loaded('xdebug'))
- {
- throw new Exception("PHPUnitTask depends on Xdebug being installed to gather code coverage information.");
- }
-
- if ($this->printsummary)
- {
- $fe = new FormatterElement();
- $fe->setParent($this);
- $fe->setType("summary");
- $fe->setUseFile(false);
- $this->formatters[] = $fe;
- }
-
- $autoloadSave = spl_autoload_functions();
-
- if ($this->bootstrap)
- {
- require_once $this->bootstrap;
- }
-
- $suite = new PHPUnit_Framework_TestSuite('AllTests');
-
- foreach ($this->batchtests as $batchtest)
- {
- $batchtest->addToTestSuite($suite);
- }
-
- $this->execute($suite);
-
- if ($this->testfailed)
- {
- throw new BuildException($this->testfailuremessage);
- }
-
- $autoloadNew = spl_autoload_functions();
- foreach ($autoloadNew as $autoload) {
- spl_autoload_unregister($autoload);
- }
-
- foreach ($autoloadSave as $autoload) {
- spl_autoload_register($autoload);
- }
- }
-
- /**
- * @throws BuildException
- */
- protected function execute($suite)
- {
- $runner = new PHPUnitTestRunner($this->project, $this->groups, $this->excludeGroups, $this->processIsolation);
-
- if ($this->codecoverage) {
- /**
- * Add some defaults to the PHPUnit filter
- */
- $pwd = dirname(__FILE__);
- $path = realpath($pwd . '/../../../');
-
- $filter = new PHP_CodeCoverage_Filter();
- $filter->addDirectoryToBlacklist($path);
- $runner->setCodecoverage(new PHP_CodeCoverage(null, $filter));
- }
-
- $runner->setUseCustomErrorHandler($this->usecustomerrorhandler);
-
- foreach ($this->formatters as $fe)
- {
- $formatter = $fe->getFormatter();
-
- if ($fe->getUseFile())
- {
- $destFile = new PhingFile($fe->getToDir(), $fe->getOutfile());
-
- $writer = new FileWriter($destFile->getAbsolutePath());
-
- $formatter->setOutput($writer);
- }
- else
- {
- $formatter->setOutput($this->getDefaultOutput());
- }
-
- $runner->addFormatter($formatter);
-
- $formatter->startTestRun();
- }
-
- $runner->run($suite);
-
- foreach ($this->formatters as $fe)
- {
- $formatter = $fe->getFormatter();
- $formatter->endTestRun();
- }
-
- $retcode = $runner->getRetCode();
-
- if ($retcode == PHPUnitTestRunner::ERRORS) {
- if ($this->errorproperty) {
- $this->project->setNewProperty($this->errorproperty, true);
- }
- if ($this->haltonerror) {
- $this->testfailed = true;
- $this->testfailuremessage = $runner->getLastErrorMessage();
- }
- } elseif ($retcode == PHPUnitTestRunner::FAILURES) {
- if ($this->failureproperty) {
- $this->project->setNewProperty($this->failureproperty, true);
- }
-
- if ($this->haltonfailure) {
- $this->testfailed = true;
- $this->testfailuremessage = $runner->getLastFailureMessage();
- }
- } elseif ($retcode == PHPUnitTestRunner::INCOMPLETES) {
- if ($this->incompleteproperty) {
- $this->project->setNewProperty($this->incompleteproperty, true);
- }
-
- if ($this->haltonincomplete) {
- $this->testfailed = true;
- $this->testfailuremessage = $runner->getLastIncompleteMessage();
- }
- } elseif ($retcode == PHPUnitTestRunner::SKIPPED) {
- if ($this->skippedproperty) {
- $this->project->setNewProperty($this->skippedproperty, true);
- }
-
- if ($this->haltonskipped) {
- $this->testfailed = true;
- $this->testfailuremessage = $runner->getLastSkippedMessage();
- }
- }
- }
-
- protected function getDefaultOutput()
- {
- return new LogWriter($this);
- }
-
- /**
- * Adds a set of tests based on pattern matching.
- *
- * @return BatchTest a new instance of a batch test.
- */
- public function createBatchTest()
- {
- $batchtest = new BatchTest($this->getProject());
-
- $this->batchtests[] = $batchtest;
-
- return $batchtest;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTestRunner.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTestRunner.php
deleted file mode 100755
index 6c7e5e68..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitTestRunner.php
+++ /dev/null
@@ -1,312 +0,0 @@
-<?php
-/**
- * $Id: 5926dfc1177ec0c52ec275a8e542979c8deb6e6f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'PHPUnit/Autoload.php';
-require_once 'phing/tasks/ext/coverage/CoverageMerger.php';
-require_once 'phing/system/util/Timer.php';
-
-/**
- * Simple Testrunner for PHPUnit that runs all tests of a testsuite.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 5926dfc1177ec0c52ec275a8e542979c8deb6e6f $
- * @package phing.tasks.ext.phpunit
- * @since 2.1.0
- */
-class PHPUnitTestRunner extends PHPUnit_Runner_BaseTestRunner implements PHPUnit_Framework_TestListener
-{
- const SUCCESS = 0;
- const FAILURES = 1;
- const ERRORS = 2;
- const INCOMPLETES = 3;
- const SKIPPED = 4;
-
- private $retCode = 0;
- private $lastErrorMessage = '';
- private $lastFailureMessage = '';
- private $lastIncompleteMessage = '';
- private $lastSkippedMessage = '';
- private $formatters = array();
-
- private $codecoverage = null;
-
- private $project = NULL;
-
- private $groups = array();
- private $excludeGroups = array();
-
- private $processIsolation = false;
-
- private $useCustomErrorHandler = true;
-
- public function __construct(Project $project, $groups = array(), $excludeGroups = array(), $processIsolation = false)
- {
- $this->project = $project;
- $this->groups = $groups;
- $this->excludeGroups = $excludeGroups;
- $this->processIsolation = $processIsolation;
- $this->retCode = self::SUCCESS;
- }
-
- public function setCodecoverage($codecoverage)
- {
- $this->codecoverage = $codecoverage;
- }
-
- public function setUseCustomErrorHandler($useCustomErrorHandler)
- {
- $this->useCustomErrorHandler = $useCustomErrorHandler;
- }
-
- public function addFormatter($formatter)
- {
- $this->formatters[] = $formatter;
- }
-
- public function handleError($level, $message, $file, $line)
- {
- return PHPUnit_Util_ErrorHandler::handleError($level, $message, $file, $line);
- }
-
- /**
- * Run a test
- */
- public function run(PHPUnit_Framework_TestSuite $suite)
- {
- $res = new PHPUnit_Framework_TestResult();
-
- if ($this->codecoverage)
- {
- $whitelist = CoverageMerger::getWhiteList($this->project);
-
- $this->codecoverage->filter()->addFilesToWhiteList($whitelist);
-
- $res->setCodeCoverage($this->codecoverage);
- }
-
- $res->addListener($this);
-
- foreach ($this->formatters as $formatter)
- {
- $res->addListener($formatter);
- }
-
- /* Set PHPUnit error handler */
- if ($this->useCustomErrorHandler)
- {
- $oldErrorHandler = set_error_handler(array($this, 'handleError'), E_ALL | E_STRICT);
- }
-
- $suite->run($res, false, $this->groups, $this->excludeGroups, $this->processIsolation);
-
- foreach ($this->formatters as $formatter)
- {
- $formatter->processResult($res);
- }
-
- /* Restore Phing error handler */
- if ($this->useCustomErrorHandler)
- {
- restore_error_handler();
- }
-
- if ($this->codecoverage)
- {
- CoverageMerger::merge($this->project, $this->codecoverage->getData());
- }
-
- if ($res->errorCount() != 0)
- {
- $this->retCode = self::ERRORS;
- }
- else if ($res->failureCount() != 0)
- {
- $this->retCode = self::FAILURES;
- }
- else if ($res->notImplementedCount() != 0)
- {
- $this->retCode = self::INCOMPLETES;
- }
- else if ($res->skippedCount() != 0)
- {
- $this->retCode = self::SKIPPED;
- }
- }
-
- public function getRetCode()
- {
- return $this->retCode;
- }
-
- public function getLastErrorMessage()
- {
- return $this->lastErrorMessage;
- }
-
- public function getLastFailureMessage()
- {
- return $this->lastFailureMessage;
- }
-
- public function getLastIncompleteMessage()
- {
- return $this->lastIncompleteMessage;
- }
-
- public function getLastSkippedMessage()
- {
- return $this->lastSkippedMessage;
- }
-
- protected function composeMessage($message, PHPUnit_Framework_Test $test, Exception $e)
- {
- return "Test $message (" . $test->getName() . " in class " . get_class($test) . "): " . $e->getMessage();
- }
-
- /**
- * An error occurred.
- *
- * @param PHPUnit_Framework_Test $test
- * @param Exception $e
- * @param float $time
- */
- public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- $this->lastErrorMessage = $this->composeMessage("ERROR", $test, $e);
- }
-
- /**
- * A failure occurred.
- *
- * @param PHPUnit_Framework_Test $test
- * @param PHPUnit_Framework_AssertionFailedError $e
- * @param float $time
- */
- public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
- {
- $this->lastFailureMessage = $this->composeMessage("FAILURE", $test, $e);
- }
-
- /**
- * Incomplete test.
- *
- * @param PHPUnit_Framework_Test $test
- * @param Exception $e
- * @param float $time
- */
- public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- $this->lastIncompleteMessage = $this->composeMessage("INCOMPLETE", $test, $e);
- }
-
- /**
- * Skipped test.
- *
- * @param PHPUnit_Framework_Test $test
- * @param Exception $e
- * @param float $time
- * @since Method available since Release 3.0.0
- */
- public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- $this->lastSkippedMessage = $this->composeMessage("SKIPPED", $test, $e);
- }
-
- /**
- * A test started.
- *
- * @param string $testName
- */
- public function testStarted($testName)
- {
- }
-
- /**
- * A test ended.
- *
- * @param string $testName
- */
- public function testEnded($testName)
- {
- }
-
- /**
- * A test failed.
- *
- * @param integer $status
- * @param PHPUnit_Framework_Test $test
- * @param PHPUnit_Framework_AssertionFailedError $e
- */
- public function testFailed($status, PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e)
- {
- }
-
- /**
- * Override to define how to handle a failed loading of
- * a test suite.
- *
- * @param string $message
- */
- protected function runFailed($message)
- {
- throw new BuildException($message);
- }
-
- /**
- * A test suite started.
- *
- * @param PHPUnit_Framework_TestSuite $suite
- * @since Method available since Release 2.2.0
- */
- public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- }
-
- /**
- * A test suite ended.
- *
- * @param PHPUnit_Framework_TestSuite $suite
- * @since Method available since Release 2.2.0
- */
- public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- }
-
- /**
- * A test started.
- *
- * @param PHPUnit_Framework_Test $test
- */
- public function startTest(PHPUnit_Framework_Test $test)
- {
- }
-
- /**
- * A test ended.
- *
- * @param PHPUnit_Framework_Test $test
- * @param float $time
- */
- public function endTest(PHPUnit_Framework_Test $test, $time)
- {
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitUtil.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitUtil.php
deleted file mode 100755
index 25a85f4c..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/PHPUnitUtil.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-/**
- * $Id: c569f96e625ed8f9c6ae5add2b2f4a0a6c3e5a54 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Various utility functions
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: c569f96e625ed8f9c6ae5add2b2f4a0a6c3e5a54 $
- * @package phing.tasks.ext.phpunit
- * @since 2.1.0
- */
-class PHPUnitUtil
-{
- protected static $definedClasses = array();
-
- /**
- * Returns the package of a class as defined in the docblock of the class using @package
- *
- * @param string the name of the class
- * @return string the name of the package
- */
- static function getPackageName($classname)
- {
- $reflect = new ReflectionClass($classname);
-
- if (preg_match('/@package[\s]+([\.\w]+)/', $reflect->getDocComment(), $matches))
- {
- return $matches[1];
- }
- else
- {
- return "default";
- }
- }
-
- /**
- * Returns the subpackage of a class as defined in the docblock of the class
- * using @subpackage
- *
- * @param string $classname the name of the class
- *
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @return string|null the name of the subpackage
- */
- public static function getSubpackageName($classname)
- {
- $reflect = new ReflectionClass($classname);
-
- if (preg_match('/@subpackage[\s]+([\.\w]+)/', $reflect->getDocComment(), $matches)) {
- return $matches[1];
- } else {
- return null;
- }
- }
-
- /**
- * Derives the classname from a filename.
- * Assumes that there is only one class defined in that particular file, and that
- * the naming follows the dot-path (Java) notation scheme.
- *
- * @param string the filename
- * @return string the name fo the class
- */
- public static function getClassFromFileName($filename)
- {
- $filename = basename($filename);
-
- $rpos = strrpos($filename, '.');
-
- if ($rpos != -1)
- {
- $filename = substr($filename, 0, $rpos);
- }
-
- return $filename;
- }
-
- /**
- * @param string the filename
- * @param Path optional classpath
- * @return array list of classes defined in the file
- */
- public static function getDefinedClasses($filename, $classpath = NULL)
- {
- $filename = realpath($filename);
-
- if (!file_exists($filename))
- {
- throw new Exception("File '" . $filename . "' does not exist");
- }
-
- if (isset(self::$definedClasses[$filename]))
- {
- return self::$definedClasses[$filename];
- }
-
- Phing::__import($filename, $classpath);
-
- $declaredClasses = get_declared_classes();
-
- foreach ($declaredClasses as $classname)
- {
- $reflect = new ReflectionClass($classname);
-
- self::$definedClasses[$reflect->getFilename()][] = $classname;
-
- if (is_array(self::$definedClasses[$reflect->getFilename()]))
- {
- self::$definedClasses[$reflect->getFilename()] = array_unique(self::$definedClasses[$reflect->getFilename()]);
- }
- }
-
- if (isset(self::$definedClasses[$filename]))
- {
- return self::$definedClasses[$filename];
- }
- else
- {
- return array();
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/CloverPHPUnitResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/CloverPHPUnitResultFormatter.php
deleted file mode 100755
index 4d03078d..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/CloverPHPUnitResultFormatter.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/**
- * $Id: 97f504caad678a6c7d231fe298c27d1281008e48 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php';
-
-/**
- * Prints Clover XML output of the test
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 97f504caad678a6c7d231fe298c27d1281008e48 $
- * @package phing.tasks.ext.formatter
- * @since 2.4.0
- */
-class CloverPHPUnitResultFormatter extends PHPUnitResultFormatter
-{
- /**
- * @var PHPUnit_Framework_TestResult
- */
- private $result = NULL;
-
- /**
- * PHPUnit version
- * @var string
- */
- private $version = NULL;
-
- public function __construct(PHPUnitTask $parentTask)
- {
- parent::__construct($parentTask);
-
- $this->version = PHPUnit_Runner_Version::id();
- }
-
- public function getExtension()
- {
- return ".xml";
- }
-
- public function getPreferredOutfile()
- {
- return "clover-coverage";
- }
-
- public function processResult(PHPUnit_Framework_TestResult $result)
- {
- $this->result = $result;
- }
-
- public function endTestRun()
- {
- require_once 'PHP/CodeCoverage/Report/Clover.php';
-
- $coverage = $this->result->getCodeCoverage();
-
- if (!empty($coverage)) {
- $clover = new PHP_CodeCoverage_Report_Clover();
-
- $contents = $clover->process($coverage);
-
- if ($this->out)
- {
- $this->out->write($contents);
- $this->out->close();
- }
- }
-
- parent::endTestRun();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php
deleted file mode 100755
index 1b09dbc1..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * $Id: cbf356a8395e116cd6ecddb7f5a822d4b6edf01c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'PHPUnit/Framework/TestListener.php';
-
-require_once 'phing/system/io/Writer.php';
-
-/**
- * This abstract class describes classes that format the results of a PHPUnit testrun.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: cbf356a8395e116cd6ecddb7f5a822d4b6edf01c $
- * @package phing.tasks.ext.phpunit.formatter
- * @since 2.1.0
- */
-abstract class PHPUnitResultFormatter implements PHPUnit_Framework_TestListener
-{
- protected $out = NULL;
-
- protected $project = NULL;
-
- private $timers = false;
-
- private $runCounts = false;
-
- private $failureCounts = false;
-
- private $errorCounts = false;
-
- private $incompleteCounts = false;
-
- private $skipCounts = false;
-
- /**
- * Constructor
- * @param PHPUnitTask $parentTask Calling Task
- */
- public function __construct(PHPUnitTask $parentTask)
- {
- $this->project = $parentTask->getProject();
- }
-
- /**
- * Sets the writer the formatter is supposed to write its results to.
- */
- public function setOutput(Writer $out)
- {
- $this->out = $out;
- }
-
- /**
- * Returns the extension used for this formatter
- *
- * @return string the extension
- */
- public function getExtension()
- {
- return "";
- }
-
- public function getPreferredOutfile()
- {
- return "";
- }
-
- public function processResult(PHPUnit_Framework_TestResult $result)
- {
- }
-
- public function startTestRun()
- {
- $this->timers = array($this->getMicrotime());
- $this->runCounts = array(0);
- $this->failureCounts = array(0);
- $this->errorCounts = array(0);
- $this->incompleteCounts = array(0);
- $this->skipCounts = array(0);
- }
-
- public function endTestRun()
- {
- }
-
- public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- $this->timers[] = $this->getMicrotime();
- $this->runCounts[] = 0;
- $this->failureCounts[] = 0;
- $this->errorCounts[] = 0;
- $this->incompleteCounts[] = 0;
- $this->skipCounts[] = 0;
- }
-
- public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- $lastRunCount = array_pop($this->runCounts);
- $this->runCounts[count($this->runCounts) - 1] += $lastRunCount;
-
- $lastFailureCount = array_pop($this->failureCounts);
- $this->failureCounts[count($this->failureCounts) - 1] += $lastFailureCount;
-
- $lastErrorCount = array_pop($this->errorCounts);
- $this->errorCounts[count($this->errorCounts) - 1] += $lastErrorCount;
-
- $lastIncompleteCount = array_pop($this->incompleteCounts);
- $this->incompleteCounts[count($this->incompleteCounts) - 1] += $lastIncompleteCount;
-
- $lastSkipCount = array_pop($this->skipCounts);
- $this->skipCounts[count($this->skipCounts) - 1] += $lastSkipCount;
-
- array_pop($this->timers);
- }
-
- public function startTest(PHPUnit_Framework_Test $test)
- {
- $this->runCounts[count($this->runCounts) - 1]++;
- }
-
- public function endTest(PHPUnit_Framework_Test $test, $time)
- {
- }
-
- public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- $this->errorCounts[count($this->errorCounts) - 1]++;
- }
-
- public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
- {
- $this->failureCounts[count($this->failureCounts) - 1]++;
- }
-
- public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- $this->incompleteCounts[count($this->incompleteCounts) - 1]++;
- }
-
- public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- $this->skipCounts[count($this->skipCounts) - 1]++;
- }
-
- public function getRunCount()
- {
- return end($this->runCounts);
- }
-
- public function getFailureCount()
- {
- return end($this->failureCounts);
- }
-
- public function getErrorCount()
- {
- return end($this->errorCounts);
- }
-
- public function getIncompleteCount()
- {
- return end($this->incompleteCounts);
- }
-
- public function getSkippedCount()
- {
- return end($this->skipCounts);
- }
-
- public function getElapsedTime()
- {
- if (end($this->timers))
- {
- return $this->getMicrotime() - end($this->timers);
- }
- else
- {
- return 0;
- }
- }
-
- private function getMicrotime() {
- list($usec, $sec) = explode(' ', microtime());
- return (float)$usec + (float)$sec;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PlainPHPUnitResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PlainPHPUnitResultFormatter.php
deleted file mode 100755
index e67cfd2b..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/PlainPHPUnitResultFormatter.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * $Id: 529f9b6ab9ced7b78871e3612cd8afce58261a6f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php';
-
-/**
- * Prints plain text output of the test to a specified Writer.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 529f9b6ab9ced7b78871e3612cd8afce58261a6f $
- * @package phing.tasks.ext.phpunit.formatter
- * @since 2.1.0
- */
-class PlainPHPUnitResultFormatter extends PHPUnitResultFormatter
-{
- private $inner = "";
-
- public function getExtension()
- {
- return ".txt";
- }
-
- public function getPreferredOutfile()
- {
- return "testresults";
- }
-
- public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- parent::startTestSuite($suite);
-
- $this->inner = "";
- }
-
- public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- if ($suite->getName() == 'AllTests')
- {
- return false;
- }
-
- $sb = "Testsuite: " . $suite->getName() . "\n";
- $sb.= "Tests run: " . $this->getRunCount();
- $sb.= ", Failures: " . $this->getFailureCount();
- $sb.= ", Errors: " . $this->getErrorCount();
- $sb.= ", Incomplete: " . $this->getIncompleteCount();
- $sb.= ", Skipped: " . $this->getSkippedCount();
- $sb.= ", Time elapsed: " . sprintf('%0.5f', $this->getElapsedTime()) . " s\n";
-
- if ($this->out != NULL)
- {
- $this->out->write($sb);
- $this->out->write($this->inner);
- }
-
- parent::endTestSuite($suite);
- }
-
- public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- parent::addError($test, $e, $time);
-
- $this->formatError("ERROR", $test, $e);
- }
-
- public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
- {
- parent::addFailure($test, $e, $time);
- $this->formatError("FAILED", $test, $e);
- }
-
- public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- parent::addIncompleteTest($test, $e, $time);
-
- $this->formatError("INCOMPLETE", $test);
- }
-
- public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- parent::addSkippedTest($test, $e, $time);
- $this->formatError("SKIPPED", $test);
- }
-
- private function formatError($type, PHPUnit_Framework_Test $test, Exception $e = null)
- {
- if ($test != null)
- {
- $this->endTest($test, time());
- }
-
- $this->inner.= $test->getName() . " " . $type . "\n";
-
- if ($e !== null) {
- $this->inner.= $e->getMessage() . "\n";
- // $this->inner.= PHPUnit_Util_Filter::getFilteredStackTrace($e, true) . "\n";
- }
- }
-
- public function endTestRun()
- {
- parent::endTestRun();
-
- if ($this->out != NULL)
- {
- $this->out->close();
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/SummaryPHPUnitResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/SummaryPHPUnitResultFormatter.php
deleted file mode 100755
index 0007c235..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/SummaryPHPUnitResultFormatter.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * $Id: bd9c51fa75c9b856105fc810200028d855a3782d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php';
-
-/**
- * Prints short summary output of the test to Phing's logging system.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: bd9c51fa75c9b856105fc810200028d855a3782d $
- * @package phing.tasks.ext.formatter
- * @since 2.1.0
- */
-class SummaryPHPUnitResultFormatter extends PHPUnitResultFormatter
-{
- public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- parent::endTestSuite($suite);
- }
-
- public function endTestRun()
- {
- parent::endTestRun();
-
- $sb = "Total tests run: " . $this->getRunCount();
- $sb.= ", Failures: " . $this->getFailureCount();
- $sb.= ", Errors: " . $this->getErrorCount();
- $sb.= ", Incomplete: " . $this->getIncompleteCount();
- $sb.= ", Skipped: " . $this->getSkippedCount();
- $sb.= ", Time elapsed: " . sprintf('%0.5f', $this->getElapsedTime()) . " s\n";
-
- if ($this->out != NULL)
- {
- $this->out->write($sb);
- $this->out->close();
- }
- }
-
- public function getExtension()
- {
- return NULL;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/XMLPHPUnitResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/XMLPHPUnitResultFormatter.php
deleted file mode 100755
index 7fef7454..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/phpunit/formatter/XMLPHPUnitResultFormatter.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/**
- * $Id: 3d9c47a29ded9b67b3a3e10c55602b0ab2a9ea38 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'PHPUnit/Util/Log/JUnit.php';
-
-require_once 'phing/tasks/ext/phpunit/formatter/PHPUnitResultFormatter.php';
-
-/**
- * Prints XML output of the test to a specified Writer
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 3d9c47a29ded9b67b3a3e10c55602b0ab2a9ea38 $
- * @package phing.tasks.ext.formatter
- * @since 2.1.0
- */
-class XMLPHPUnitResultFormatter extends PHPUnitResultFormatter
-{
- /**
- * @var PHPUnit_Util_Log_JUnit
- */
- private $logger = NULL;
-
- public function __construct(PHPUnitTask $parentTask)
- {
- parent::__construct($parentTask);
-
- $logIncompleteSkipped = $parentTask->getHaltonincomplete() || $parentTask->getHaltonskipped();
-
- $this->logger = new PHPUnit_Util_Log_JUnit(null, $logIncompleteSkipped);
- $this->logger->setWriteDocument(false);
- }
-
- public function getExtension()
- {
- return ".xml";
- }
-
- public function getPreferredOutfile()
- {
- return "testsuites";
- }
-
- public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- parent::startTestSuite($suite);
-
- $this->logger->startTestSuite($suite);
- }
-
- public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
- {
- parent::endTestSuite($suite);
-
- $this->logger->endTestSuite($suite);
- }
-
- public function startTest(PHPUnit_Framework_Test $test)
- {
- parent::startTest($test);
-
- $this->logger->startTest($test);
- }
-
- public function endTest(PHPUnit_Framework_Test $test, $time)
- {
- parent::endTest($test, $time);
-
- $this->logger->endTest($test, $time);
- }
-
- public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- parent::addError($test, $e, $time);
-
- $this->logger->addError($test, $e, $time);
- }
-
- public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
- {
- parent::addFailure($test, $e, $time);
-
- $this->logger->addFailure($test, $e, $time);
- }
-
- public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
- {
- parent::addIncompleteTest($test, $e, $time);
-
- $this->logger->addIncompleteTest($test, $e, $time);
- }
-
- public function endTestRun()
- {
- parent::endTestRun();
-
- if ($this->out)
- {
- $this->out->write($this->logger->getXML());
- $this->out->close();
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/rSTTask.php b/buildscripts/phing/classes/phing/tasks/ext/rSTTask.php
deleted file mode 100644
index 77170f18..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/rSTTask.php
+++ /dev/null
@@ -1,476 +0,0 @@
-<?php
-
-/**
- * reStructuredText rendering task for Phing, the PHP build tool.
- *
- * PHP version 5
- *
- * @category Tasks
- * @package phing.tasks.ext
- * @author Christian Weiske <cweiske@cweiske.de>
- * @license LGPL v3 or later http://www.gnu.org/licenses/lgpl.html
- * @link http://www.phing.info/
- * @version SVN: $Id: ad2ac21008b4635c4f557e3a65c9306a350ca1f2 $
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/util/FileUtils.php';
-
-/**
- * reStructuredText rendering task for Phing, the PHP build tool.
- *
- * PHP version 5
- *
- * @category Tasks
- * @package phing.tasks.ext
- * @author Christian Weiske <cweiske@cweiske.de>
- * @license LGPL v3 or later http://www.gnu.org/licenses/lgpl.html
- * @link http://www.phing.info/
- */
-class rSTTask extends Task
-{
- /**
- * @var string Taskname for logger
- */
- protected $taskName = 'rST';
-
- /**
- * Result format, defaults to "html".
- * @see $supportedFormats for all possible options
- *
- * @var string
- */
- protected $format = 'html';
-
- /**
- * Array of supported output formats
- *
- * @var array
- * @see $format
- * @see $targetExt
- */
- protected static $supportedFormats = array(
- 'html', 'latex', 'man', 'odt', 's5', 'xml'
- );
-
- /**
- * Maps formats to file extensions
- *
- * @var array
- */
- protected static $targetExt = array(
- 'html' => 'html',
- 'latex' => 'tex',
- 'man' => '3',
- 'odt' => 'odt',
- 's5' => 'html',
- 'xml' => 'xml',
- );
-
- /**
- * Input file in rST format.
- * Required
- *
- * @var string
- */
- protected $file = null;
-
- /**
- * Additional rst2* tool parameters.
- *
- * @var string
- */
- protected $toolParam = null;
-
- /**
- * Full path to the tool, i.e. /usr/local/bin/rst2html
- *
- * @var string
- */
- protected $toolPath = null;
-
- /**
- * Output file or directory. May be omitted.
- * When it ends with a slash, it is considered to be a directory
- *
- * @var string
- */
- protected $destination = null;
-
- protected $filesets = array(); // all fileset objects assigned to this task
- protected $mapperElement = null;
-
- /**
- * all filterchains objects assigned to this task
- *
- * @var array
- */
- protected $filterChains = array();
-
- /**
- * mode to create directories with
- *
- * @var integer
- */
- protected $mode = 0755;
-
- /**
- * Only render files whole source files are newer than the
- * target files
- *
- * @var boolean
- */
- protected $uptodate = false;
-
-
- /**
- * Init method: requires the PEAR System class
- */
- public function init()
- {
- require_once 'System.php';
- }
-
- /**
- * The main entry point method.
- *
- * @return void
- */
- public function main()
- {
- $tool = $this->getToolPath($this->format);
- if (count($this->filterChains)) {
- $this->fileUtils = new FileUtils();
- }
-
- if ($this->file != '') {
- $file = $this->file;
- $targetFile = $this->getTargetFile($file, $this->destination);
- $this->render($tool, $file, $targetFile);
- return;
- }
-
- if (!count($this->filesets)) {
- throw new BuildException(
- '"file" attribute or "fileset" subtag required'
- );
- }
-
- // process filesets
- $mapper = null;
- if ($this->mapperElement !== null) {
- $mapper = $this->mapperElement->getImplementation();
- }
-
- $project = $this->getProject();
- foreach ($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $fromDir = $fs->getDir($project);
- $srcFiles = $ds->getIncludedFiles();
-
- foreach ($srcFiles as $src) {
- $file = new PhingFile($fromDir, $src);
- if ($mapper !== null) {
- $results = $mapper->main($file);
- if ($results === null) {
- throw new BuildException(
- sprintf(
- 'No filename mapper found for "%s"',
- $file
- )
- );
- }
- $targetFile = reset($results);
- } else {
- $targetFile = $this->getTargetFile($file, $this->destination);
- }
- $this->render($tool, $file, $targetFile);
- }
- }
- }
-
-
-
- /**
- * Renders a single file and applies filters on it
- *
- * @param string $tool conversion tool to use
- * @param string $source rST source file
- * @param string $targetFile target file name
- *
- * @return void
- */
- protected function render($tool, $source, $targetFile)
- {
- if (count($this->filterChains) == 0) {
- return $this->renderFile($tool, $source, $targetFile);
- }
-
- $tmpTarget = tempnam(sys_get_temp_dir(), 'rST-');
- $this->renderFile($tool, $source, $tmpTarget);
-
- $this->fileUtils->copyFile(
- new PhingFile($tmpTarget),
- new PhingFile($targetFile),
- true, false, $this->filterChains,
- $this->getProject(), $this->mode
- );
- unlink($tmpTarget);
- }
-
-
-
- /**
- * Renders a single file with the rST tool.
- *
- * @param string $tool conversion tool to use
- * @param string $source rST source file
- * @param string $targetFile target file name
- *
- * @return void
- *
- * @throws BuildException When the conversion fails
- */
- protected function renderFile($tool, $source, $targetFile)
- {
- if ($this->uptodate && file_exists($targetFile)
- && filemtime($source) <= filemtime($targetFile)
- ) {
- //target is up to date
- return;
- }
- //work around a bug in php by replacing /./ with /
- $targetDir = str_replace('/./', '/', dirname($targetFile));
- if (!is_dir($targetDir)) {
- $this->log("Creating directory '$targetDir'", Project::MSG_VERBOSE);
- mkdir($targetDir, $this->mode, true);
- }
-
- $cmd = $tool
- . ' --exit-status=2'
- . ' ' . $this->toolParam
- . ' ' . escapeshellarg($source)
- . ' ' . escapeshellarg($targetFile)
- . ' 2>&1';
-
- $this->log('command: ' . $cmd, Project::MSG_VERBOSE);
- exec($cmd, $arOutput, $retval);
- if ($retval != 0) {
- $this->log(implode("\n", $arOutput), Project::MSG_INFO);
- throw new BuildException('Rendering rST failed');
- }
- $this->log(implode("\n", $arOutput), Project::MSG_DEBUG);
- }
-
-
-
- /**
- * Finds the rst2* binary path
- *
- * @param string $format Output format
- *
- * @return string Full path to rst2$format
- *
- * @throws BuildException When the tool cannot be found
- */
- protected function getToolPath($format)
- {
- if ($this->toolPath !== null) {
- return $this->toolPath;
- }
-
- $tool = 'rst2' . $format;
- $path = System::which($tool);
- if (!$path) {
- throw new BuildException(
- sprintf('"%s" not found. Install python-docutils.', $tool)
- );
- }
-
- return $path;
- }
-
-
-
- /**
- * Determines and returns the target file name from the
- * input file and the configured destination name.
- *
- * @param string $file Input file
- * @param string $destination Destination file or directory name,
- * may be null
- *
- * @return string Target file name
- *
- * @uses $format
- * @uses $targetExt
- */
- public function getTargetFile($file, $destination = null)
- {
- if ($destination != ''
- && substr($destination, -1) !== '/'
- && substr($destination, -1) !== '\\'
- ) {
- return $destination;
- }
-
- if (strtolower(substr($file, -4)) == '.rst') {
- $file = substr($file, 0, -4);
- }
-
- return $destination . $file . '.' . self::$targetExt[$this->format];
- }
-
-
-
- /**
- * The setter for the attribute "file"
- *
- * @param string $file Path of file to render
- *
- * @return void
- */
- public function setFile($file)
- {
- $this->file = $file;
- }
-
-
-
- /**
- * The setter for the attribute "format"
- *
- * @param string $format Output format
- *
- * @return void
- *
- * @throws BuildException When the format is not supported
- */
- public function setFormat($format)
- {
- if (!in_array($format, self::$supportedFormats)) {
- throw new BuildException(
- sprintf(
- 'Invalid output format "%s", allowed are: %s',
- $format,
- implode(', ', self::$supportedFormats)
- )
- );
- }
- $this->format = $format;
- }
-
-
-
- /**
- * The setter for the attribute "destination"
- *
- * @param string $destination Output file or directory. When it ends
- * with a slash, it is taken as directory.
- *
- * @return void
- */
- public function setDestination($destination)
- {
- $this->destination = $destination;
- }
-
- /**
- * The setter for the attribute "toolparam"
- *
- * @param string $param Additional rst2* tool parameters
- *
- * @return void
- */
- public function setToolparam($param)
- {
- $this->toolParam = $param;
- }
-
- /**
- * The setter for the attribute "toolpath"
- *
- * @param string $param Full path to tool path, i.e. /usr/local/bin/rst2html
- *
- * @return void
- *
- * @throws BuildException When the tool does not exist or is not executable
- */
- public function setToolpath($path)
- {
- if (!file_exists($path)) {
- $fullpath = System::which($path);
- if ($fullpath === false) {
- throw new BuildException(
- 'Tool does not exist. Path: ' . $path
- );
- }
- $path = $fullpath;
- }
- if (!is_executable($path)) {
- throw new BuildException(
- 'Tool not executable. Path: ' . $path
- );
- }
- $this->toolPath = $path;
- }
-
- /**
- * The setter for the attribute "uptodate"
- *
- * @param string $uptodate True/false
- *
- * @return void
- */
- public function setUptodate($uptodate)
- {
- $this->uptodate = (boolean)$uptodate;
- }
-
-
-
- /**
- * Add a set of files to be rendered.
- *
- * @param FileSet $fileset Set of rst files to render
- *
- * @return void
- */
- public function addFileset(FileSet $fileset)
- {
- $this->filesets[] = $fileset;
- }
-
-
-
- /**
- * Nested creator, creates one Mapper for this task
- *
- * @return Mapper The created Mapper type object
- *
- * @throws BuildException
- */
- public function createMapper()
- {
- if ($this->mapperElement !== null) {
- throw new BuildException(
- 'Cannot define more than one mapper', $this->location
- );
- }
- $this->mapperElement = new Mapper($this->project);
- return $this->mapperElement;
- }
-
-
-
- /**
- * Creates a filterchain, stores and returns it
- *
- * @return FilterChain The created filterchain object
- */
- public function createFilterChain()
- {
- $num = array_push($this->filterChains, new FilterChain($this->project));
- return $this->filterChains[$num-1];
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php
deleted file mode 100755
index 32fbc212..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * $Id: ae09aa1a433f4de854fa7c27903e7eb0957bc90b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php';
-
-/**
- * Dummy result formatter used to count SimpleTest results
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: ae09aa1a433f4de854fa7c27903e7eb0957bc90b $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-class SimpleTestCountResultFormatter extends SimpleTestResultFormatter
-{
- const SUCCESS = 0;
- const FAILURES = 1;
- const ERRORS = 2;
-
- function getRetCode()
- {
- if ($this->getExceptionCount() != 0)
- {
- return self::ERRORS;
- }
- else if ($this->getFailCount() != 0)
- {
- return self::FAILURES;
- }
-
- return self::SUCCESS;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestDebugResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestDebugResultFormatter.php
deleted file mode 100755
index de78ab24..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestDebugResultFormatter.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/**
- * $Id: d7e7e397e81588c3eafcb9e758666fec0fa166f5 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php';
-
-/**
- * Prints plain text output of the test to a specified Writer.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: d7e7e397e81588c3eafcb9e758666fec0fa166f5 $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-class SimpleTestDebugResultFormatter extends SimpleTestResultFormatter
-{
- protected $current_case = "";
- protected $current_test = "";
- private $failingTests = array();
-
- function printFailingTests() {
- foreach ($this->failingTests as $test) {
- $this->out->write($test . "\n");
- }
- }
-
- function paintCaseStart($test_name)
- {
- parent::paintCaseStart($test_name);
- $this->paint( "Testsuite: $test_name\n");
- $this->current_case = $test_name;
- }
-
- function paintMethodStart($test_name)
- {
- parent::paintMethodStart($test_name);
- $this->current_test = $test_name;
- //$msg = "{$this->current_case} :: $test_name\n";
- $msg = " TestCase: $test_name";
- $this->paint($msg);
- }
-
- function paint($msg) {
- if ($this->out == null ) {
- print $msg;
- } else {
- $this->out->write($msg);
- }
- }
-
- function paintMethodEnd($test_name) {
- parent::paintMethodEnd($test_name);
- $this->paint("\n");
- }
-
- function paintCaseEnd($test_name)
- {
- parent::paintCaseEnd($test_name);
- $this->current_case = "";
- /* Only count suites where more than one test was run */
-
- if ($this->getRunCount() && false)
- {
- $sb = "";
- $sb.= "Tests run: " . $this->getRunCount();
- $sb.= ", Failures: " . $this->getFailureCount();
- $sb.= ", Errors: " . $this->getErrorCount();
- $sb.= ", Time elapsed: " . $this->getElapsedTime();
- $sb.= " sec\n";
- $this->paint($sb);
- }
-
- }
-
- function paintError($message)
- {
- parent::paintError($message);
- $this->formatError("ERROR", $message);
- $this->failingTests[] = $this->current_case . "->" . $this->current_test;
- }
-
- function paintFail($message)
- {
- parent::paintFail($message);
- $this->formatError("FAILED", $message);
- $this->failingTests[] = $this->current_case . "->" . $this->current_test;
- }
- function paintException($message)
- {
- parent::paintException($message);
- $this->failingTests[] = $this->current_case . "->" . $this->current_test;
- $this->formatError("Exception", $message);
- }
-
-
-
- private function formatError($type, $message)
- {
- $this->paint("ERROR: $type: $message");
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php
deleted file mode 100755
index 5ae9ba23..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestFormatterElement.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * $Id: 2441f1b83b9f9d1aeb2a4afd7e049c840d70bbd9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/phpunit/FormatterElement.php';
-
-/**
- * Child class of "FormatterElement", overrides setType to provide other
- * formatter classes for SimpleTest
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 2441f1b83b9f9d1aeb2a4afd7e049c840d70bbd9 $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-class SimpleTestFormatterElement extends FormatterElement
-{
- function setType($type)
- {
- $this->type = $type;
-
- if ($this->type == "xml")
- {
- require_once 'phing/tasks/ext/simpletest/SimpleTestXmlResultFormatter.php';
- $destFile = new PhingFile($this->toDir, 'testsuites.xml');
- $this->formatter = new SimpleTestXmlResultFormatter();
- }
- else
- if ($this->type == "plain")
- {
- require_once 'phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php';
- $this->formatter = new SimpleTestPlainResultFormatter();
- }
- else
- if ($this->type == "summary")
- {
- require_once 'phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php';
- $this->formatter = new SimpleTestSummaryResultFormatter();
- }
- else
- if ($this->type == "debug")
- {
- require_once 'phing/tasks/ext/simpletest/SimpleTestDebugResultFormatter.php';
- $this->formatter = new SimpleTestDebugResultFormatter();
- }
- else
- {
- throw new BuildException("Formatter '" . $this->type . "' not implemented");
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php
deleted file mode 100755
index cfba9533..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestPlainResultFormatter.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/**
- * $Id: c0fa060b8f439f7d0013a0ec016ede4c5a76b42d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php';
-
-/**
- * Prints plain text output of the test to a specified Writer.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: c0fa060b8f439f7d0013a0ec016ede4c5a76b42d $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-class SimpleTestPlainResultFormatter extends SimpleTestResultFormatter
-{
- private $inner = "";
-
- function getExtension()
- {
- return ".txt";
- }
-
- function getPreferredOutfile()
- {
- return "testresults";
- }
-
- function paintCaseStart($test_name)
- {
- parent::paintCaseStart($test_name);
-
- $this->inner = "";
- }
-
- function paintCaseEnd($test_name)
- {
- parent::paintCaseEnd($test_name);
-
- $sb = "";
- /* Only count suites where more than one test was run */
- if ($this->getRunCount())
- {
- $sb.= "Testsuite: $test_name\n";
- $sb.= "Tests run: " . $this->getRunCount();
- $sb.= ", Failures: " . $this->getFailureCount();
- $sb.= ", Errors: " . $this->getErrorCount();
- $sb.= ", Time elapsed: " . $this->getElapsedTime();
- $sb.= " sec\n";
-
- if ($this->out != NULL)
- {
- $this->out->write($sb);
- $this->out->write($this->inner);
- }
- }
- }
-
- function paintError($message)
- {
- parent::paintError($message);
-
- $this->formatError("ERROR", $message);
- }
-
- function paintFail($message)
- {
- parent::paintFail($message);
-
- $this->formatError("FAILED", $message);
- }
-
- private function formatError($type, $message)
- {
- $this->inner.= $this->getTestName() . " " . $type . "\n";
- $this->inner.= $message . "\n";
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php
deleted file mode 100755
index 8efcbb63..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestResultFormatter.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-/**
- * $Id: b9fbde1e1a21cccbcf6c3bdc29765cf0cf681e31 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'simpletest/scorer.php';
-
-require_once 'phing/system/io/Writer.php';
-
-/**
- * This abstract class describes classes that format the results of a SimpleTest testrun.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: b9fbde1e1a21cccbcf6c3bdc29765cf0cf681e31 $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-abstract class SimpleTestResultFormatter extends SimpleReporter
-{
- protected $out = NULL;
-
- protected $project = NULL;
-
- private $timer = NULL;
-
- private $runCount = 0;
-
- private $failureCount = 0;
-
- private $errorCount = 0;
-
- private $currentTest = "";
-
- /**
- * Sets the writer the formatter is supposed to write its results to.
- */
- function setOutput(Writer $out)
- {
- $this->out = $out;
- }
-
- /**
- * Returns the extension used for this formatter
- *
- * @return string the extension
- */
- function getExtension()
- {
- return "";
- }
-
- /**
- * Sets the project
- *
- * @param Project the project
- */
- function setProject(Project $project)
- {
- $this->project = $project;
- }
-
- function getPreferredOutfile()
- {
- return "";
- }
-
- function paintMethodStart($test_name)
- {
- parent::paintMethodStart($test_name);
-
- $this->currentTest = $test_name;
- }
-
- function paintMethodEnd($test_name)
- {
- parent::paintMethodEnd($test_name);
-
- $this->runCount++;
- }
-
- function paintCaseStart($test_name)
- {
- parent::paintCaseStart($test_name);
-
- $this->runCount = 0;
- $this->failureCount = 0;
- $this->errorCount = 0;
-
- $this->timer = new Timer();
- $this->timer->start();
- }
-
- function paintCaseEnd($test_name)
- {
- parent::paintCaseEnd($test_name);
-
- $this->timer->stop();
- }
-
- function paintError($message)
- {
- parent::paintError($message);
-
- $this->errorCount++;
- }
-
- function paintFail($message)
- {
- parent::paintFail($message);
-
- $this->failureCount++;
- }
-
- function getRunCount()
- {
- return $this->runCount;
- }
-
- function getFailureCount()
- {
- return $this->failureCount;
- }
-
- function getErrorCount()
- {
- return $this->errorCount;
- }
-
- function getTestName()
- {
- return $this->currentTest;
- }
-
- function getElapsedTime()
- {
- if ($this->timer)
- {
- return $this->timer->getElapsedTime();
- }
- else
- {
- return 0;
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php
deleted file mode 100755
index e0a78f11..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestSummaryResultFormatter.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * $Id: cd15496bfbce39bfd20fe17d52f9348848df0706 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php';
-
-/**
- * Prints short summary output of the test to Phing's logging system.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: cd15496bfbce39bfd20fe17d52f9348848df0706 $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-class SimpleTestSummaryResultFormatter extends SimpleTestResultFormatter
-{
- function paintCaseEnd($test_name)
- {
- parent::paintCaseEnd($test_name);
-
- /* Only count suites where more than one test was run */
- if ($this->getRunCount())
- {
- $sb.= "Tests run: " . $this->getRunCount();
- $sb.= ", Failures: " . $this->getFailureCount();
- $sb.= ", Errors: " . $this->getErrorCount();
- $sb.= ", Time elapsed: " . $this->getElapsedTime();
- $sb.= " sec\n";
-
- if ($this->out != NULL)
- {
- $this->out->write($sb);
- }
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestTask.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestTask.php
deleted file mode 100755
index 8082e1ee..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestTask.php
+++ /dev/null
@@ -1,264 +0,0 @@
-<?php
-/**
- * $Id: d53b946f773798618069fe162d47ac5f6643662a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/Writer.php';
-require_once 'phing/util/LogWriter.php';
-
-/**
- * Runs SimpleTest tests.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: d53b946f773798618069fe162d47ac5f6643662a $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-class SimpleTestTask extends Task
-{
- private $formatters = array();
- private $haltonerror = false;
- private $haltonfailure = false;
- private $failureproperty;
- private $errorproperty;
- private $printsummary = false;
- private $testfailed = false;
- private $debug = false;
-
- /**
- * Initialize Task.
- * This method includes any necessary SimpleTest libraries and triggers
- * appropriate error if they cannot be found. This is not done in header
- * because we may want this class to be loaded w/o triggering an error.
- */
- function init() {
- @include_once 'simpletest/scorer.php';
-
- if (!class_exists('SimpleReporter')) {
- throw new BuildException("SimpleTestTask depends on SimpleTest package being installed.", $this->getLocation());
- }
-
- require_once 'simpletest/reporter.php';
- require_once 'simpletest/xml.php';
- require_once 'simpletest/test_case.php';
- require_once 'phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php';
- require_once 'phing/tasks/ext/simpletest/SimpleTestDebugResultFormatter.php';
- require_once 'phing/tasks/ext/simpletest/SimpleTestFormatterElement.php';
- }
-
- function setFailureproperty($value)
- {
- $this->failureproperty = $value;
- }
-
- function setErrorproperty($value)
- {
- $this->errorproperty = $value;
- }
-
- function setHaltonerror($value)
- {
- $this->haltonerror = $value;
- }
-
- function setHaltonfailure($value)
- {
- $this->haltonfailure = $value;
- }
-
- function setPrintsummary($printsummary)
- {
- $this->printsummary = $printsummary;
- }
-
- public function setDebug($debug)
- {
- $this->debug = $debug;
- }
-
- public function getDebug()
- {
- return $this->debug;
- }
-
- /**
- * Add a new formatter to all tests of this task.
- *
- * @param SimpleTestFormatterElement formatter element
- */
- function addFormatter(SimpleTestFormatterElement $fe)
- {
- $this->formatters[] = $fe;
- }
-
- /**
- * Add a new fileset containing the XML results to aggregate
- *
- * @param FileSet the new fileset containing XML results.
- */
- function addFileSet(FileSet $fileset)
- {
- $this->filesets[] = $fileset;
- }
-
- /**
- * Iterate over all filesets and return the filename of all files
- * that end with .php.
- *
- * @return array an array of filenames
- */
- private function getFilenames()
- {
- $filenames = array();
-
- foreach ($this->filesets as $fileset)
- {
- $ds = $fileset->getDirectoryScanner($this->project);
- $ds->scan();
-
- $files = $ds->getIncludedFiles();
-
- foreach ($files as $file)
- {
- if (strstr($file, ".php"))
- {
- $filenames[] = $ds->getBaseDir() . "/" . $file;
- }
- }
- }
-
- return $filenames;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $suite= new TestSuite();
-
- $filenames = $this->getFilenames();
-
- foreach ($filenames as $testfile)
- {
- $suite->addFile($testfile);
- }
-
- if ($this->debug)
- {
- $fe = new SimpleTestFormatterElement();
- $fe->setType('debug');
- $fe->setUseFile(false);
- $this->formatters[] = $fe;
- }
-
- if ($this->printsummary)
- {
- $fe = new SimpleTestFormatterElement();
- $fe->setType('summary');
- $fe->setUseFile(false);
- $this->formatters[] = $fe;
- }
-
- foreach ($this->formatters as $fe)
- {
- $formatter = $fe->getFormatter();
- $formatter->setProject($this->getProject());
-
- if ($fe->getUseFile())
- {
- $destFile = new PhingFile($fe->getToDir(), $fe->getOutfile());
-
- $writer = new FileWriter($destFile->getAbsolutePath());
-
- $formatter->setOutput($writer);
- }
- else
- {
- $formatter->setOutput($this->getDefaultOutput());
- }
- }
-
- $this->execute($suite);
-
- if ($this->testfailed && $this->formatters[0]->getFormatter() instanceof SimpleTestDebugResultFormatter )
- {
- $this->getDefaultOutput()->write("Failed tests: ");
- $this->formatters[0]->getFormatter()->printFailingTests();
- }
-
- if ($this->testfailed)
- {
- throw new BuildException("One or more tests failed");
- }
- }
-
- private function execute($suite)
- {
- $counter = new SimpleTestCountResultFormatter();
- $reporter = new MultipleReporter();
- $reporter->attachReporter($counter);
-
- foreach ($this->formatters as $fe)
- {
- // SimpleTest 1.0.1 workaround
- $formatterList[] = $fe->getFormatter();
-
- $reporter->attachReporter(end($formatterList));
- }
-
- $suite->run($reporter);
-
- $retcode = $counter->getRetCode();
-
- if ($retcode == SimpleTestCountResultFormatter::ERRORS)
- {
- if ($this->errorproperty)
- {
- $this->project->setNewProperty($this->errorproperty, true);
- }
-
- if ($this->haltonerror)
- {
- $this->testfailed = true;
- }
- }
- elseif ($retcode == SimpleTestCountResultFormatter::FAILURES)
- {
- if ($this->failureproperty)
- {
- $this->project->setNewProperty($this->failureproperty, true);
- }
-
- if ($this->haltonfailure)
- {
- $this->testfailed = true;
- }
- }
- }
-
- private function getDefaultOutput()
- {
- return new LogWriter($this);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestXmlResultFormatter.php b/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestXmlResultFormatter.php
deleted file mode 100755
index 5ffa668b..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/simpletest/SimpleTestXmlResultFormatter.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-/**
- * $Id: 03b9f976a961a2688d51c9429087a98c31326f42 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/ext/simpletest/SimpleTestResultFormatter.php';
-require_once 'simpletest/xml.php';
-
-/**
- * Prints plain text output of the test to a specified Writer.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 03b9f976a961a2688d51c9429087a98c31326f42 $
- * @package phing.tasks.ext.simpletest
- * @since 2.2.0
- */
-class SimpleTestXmlResultFormatter extends SimpleTestResultFormatter
-{
- /**
- * @var XmlReporter
- */
- private $logger = NULL;
-
- private $xmlData = "";
-
- function __construct()
- {
- $this->logger = new XmlReporter();
- }
-
- function getExtension()
- {
- return ".xml";
- }
-
- function getPreferredOutfile()
- {
- return "testsuites";
- }
-
- private function captureStart()
- {
- ob_start();
- }
-
- private function captureStop()
- {
- $this->xmlData .= ob_get_contents();
- ob_end_clean();
- }
-
- function paintGroupStart($test_name, $size)
- {
- parent::paintGroupStart($test_name, $size);
-
- $this->captureStart();
- $this->logger->paintGroupStart($test_name, $size);
- $this->captureStop();
- }
-
- function paintGroupEnd($test_name)
- {
- parent::paintGroupEnd($test_name);
-
- $this->captureStart();
- $this->logger->paintGroupEnd($test_name);
- $this->captureStop();
-
- if (count($this->_test_stack) == 0)
- {
- if ($this->out)
- {
- $this->out->write($this->xmlData);
- $this->out->close();
- }
- }
- }
-
- function paintCaseStart($test_name)
- {
- $this->captureStart();
- $this->logger->paintCaseStart($test_name);
- $this->captureStop();
- }
-
- function paintCaseEnd($test_name)
- {
- $this->captureStart();
- $this->logger->paintCaseEnd($test_name);
- $this->captureStop();
- }
-
- function paintMethodStart($test_name)
- {
- $this->captureStart();
- $this->logger->paintMethodStart($test_name);
- $this->captureStop();
- }
-
- function paintMethodEnd($test_name)
- {
- $this->captureStart();
- $this->logger->paintMethodEnd($test_name);
- $this->captureStop();
- }
-
- function paintPass($message)
- {
- $this->captureStart();
- $this->logger->paintPass($message);
- $this->captureStop();
- }
-
- function paintError($message)
- {
- $this->captureStart();
- $this->logger->paintError($message);
- $this->captureStop();
- }
-
- function paintFail($message)
- {
- $this->captureStart();
- $this->logger->paintFail($message);
- $this->captureStop();
- }
-
- function paintException($exception)
- {
- $this->captureStart();
- $this->logger->paintException($exception);
- $this->captureStop();
- }
-
- function paintSkip($message)
- {
- $this->captureStart();
- $this->logger->paintSkip($message);
- $this->captureStop();
- }
-
- function paintMessage($message)
- {
- $this->captureStart();
- $this->logger->paintMessage($message);
- $this->captureStop();
- }
-
- function paintFormattedMessage($message)
- {
- $this->captureStart();
- $this->logger->paintFormattedMessage($message);
- $this->captureStop();
- }
-
- function paintSignal($type, $payload)
- {
- $this->captureStart();
- $this->logger->paintSignal($type, $payload);
- $this->captureStop();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnBaseTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnBaseTask.php
deleted file mode 100755
index ed9cb276..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnBaseTask.php
+++ /dev/null
@@ -1,347 +0,0 @@
-<?php
-/*
- * $Id: b6c644f650a69cad32ced1d030685a7a7a46251c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/Task.php';
-
-/**
- * Base class for Subversion tasks
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Andrew Eddie <andrew.eddie@jamboworks.com>
- * @version $Id: b6c644f650a69cad32ced1d030685a7a7a46251c $
- * @package phing.tasks.ext.svn
- * @see VersionControl_SVN
- * @since 2.2.0
- */
-abstract class SvnBaseTask extends Task
-{
- private $workingCopy = "";
-
- private $repositoryUrl = "";
-
- private $svnPath = "/usr/bin/svn";
-
- private $svn = NULL;
-
- private $mode = "";
-
- private $svnArgs = array();
-
- private $svnSwitches = array();
-
- private $toDir = "";
-
- protected $fetchMode = VERSIONCONTROL_SVN_FETCHMODE_ASSOC;
-
- /**
- * Initialize Task.
- * This method includes any necessary SVN libraries and triggers
- * appropriate error if they cannot be found. This is not done in header
- * because we may want this class to be loaded w/o triggering an error.
- */
- function init() {
- include_once 'VersionControl/SVN.php';
- if (!class_exists('VersionControl_SVN')) {
- throw new Exception("The SVN tasks depend on PEAR VersionControl_SVN package being installed.");
- }
- }
-
- /**
- * Sets the path to the workingcopy
- */
- function setWorkingCopy($workingCopy)
- {
- $this->workingCopy = $workingCopy;
- }
-
- /**
- * Returns the path to the workingcopy
- */
- function getWorkingCopy()
- {
- return $this->workingCopy;
- }
-
- /**
- * Sets the path/URI to the repository
- */
- function setRepositoryUrl($repositoryUrl)
- {
- $this->repositoryUrl = $repositoryUrl;
- }
-
- /**
- * Returns the path/URI to the repository
- */
- function getRepositoryUrl()
- {
- return $this->repositoryUrl;
- }
-
- /**
- * Sets the path to the SVN executable
- */
- function setSvnPath($svnPath)
- {
- $this->svnPath = $svnPath;
- }
-
- /**
- * Returns the path to the SVN executable
- */
- function getSvnPath()
- {
- return $this->svnPath;
- }
-
- //
- // Args
- //
-
- /**
- * Sets the path to export/checkout to
- */
- function setToDir($toDir)
- {
- $this->toDir = $toDir;
- }
-
- /**
- * Returns the path to export/checkout to
- */
- function getToDir()
- {
- return $this->toDir;
- }
-
- //
- // Switches
- //
-
- /**
- * Sets the force switch
- */
- function setForce($value)
- {
- $this->svnSwitches['force'] = $value;
- }
-
- /**
- * Returns the force switch
- */
- function getForce()
- {
- return isset( $this->svnSwitches['force'] ) ? $this->svnSwitches['force'] : '';
- }
-
- /**
- * Sets the username of the user to export
- */
- function setUsername($value)
- {
- $this->svnSwitches['username'] = $value;
- }
-
- /**
- * Returns the username
- */
- function getUsername()
- {
- return isset( $this->svnSwitches['username'] ) ? $this->svnSwitches['username'] : '';
- }
-
- /**
- * Sets the password of the user to export
- */
- function setPassword($value)
- {
- $this->svnSwitches['password'] = $value;
- }
-
- /**
- * Returns the password
- */
- function getPassword()
- {
- return isset( $this->svnSwitches['password'] ) ? $this->svnSwitches['password'] : '';
- }
-
- /**
- * Sets the no-auth-cache switch
- */
- function setNoCache($value)
- {
- $this->svnSwitches['no-auth-cache'] = $value;
- }
-
- /**
- * Returns the no-auth-cache switch
- */
- function getNoCache()
- {
- return isset( $this->svnSwitches['no-auth-cache'] ) ? $this->svnSwitches['no-auth-cache'] : '';
- }
-
- /**
- * Sets the non-recursive switch
- */
- function setRecursive($value)
- {
- $this->svnSwitches['non-recursive'] = is_bool($value) ? !$value : true;
- }
-
- /**
- * Returns the non-recursive switch
- */
- function getRecursive()
- {
- return isset( $this->svnSwitches['non-recursive'] ) ? !$this->svnSwitches['non-recursive'] : true;
- }
-
- /**
- * Sets the ignore-externals switch
- */
- function setIgnoreExternals($value)
- {
- $this->svnSwitches['ignore-externals'] = $value;
- }
-
- /**
- * Returns the ignore-externals switch
- */
- function getIgnoreExternals()
- {
- return isset( $this->svnSwitches['ignore-externals'] ) ? $this->svnSwitches['ignore-externals'] : '';
- }
-
- /**
- * Sets the trust-server-cert switch
- */
- public function setTrustServerCert($value)
- {
- $this->svnSwitches['trust-server-cert'] = $value;
- }
-
- /**
- * Returns the trust-server-cert switch
- */
- public function getTrustServerCert()
- {
- return isset($this->svnSwitches['trust-server-cert']) ? $this->svnSwitches['trust-server-cert'] : '';
- }
-
- /**
- * Creates a VersionControl_SVN class based on $mode
- *
- * @param string The SVN mode to use (info, export, checkout, ...)
- * @throws BuildException
- */
- protected function setup($mode)
- {
- $this->mode = $mode;
-
- // Set up runtime options. Will be passed to all
- // subclasses.
- $options = array('fetchmode' => $this->fetchMode, 'svn_path' => $this->getSvnPath());
-
- // Pass array of subcommands we need to factory
- $this->svn = VersionControl_SVN::factory($mode, $options);
-
- $this->svn->use_escapeshellcmd = false;
-
- if (!empty($this->repositoryUrl))
- {
- $this->svnArgs = array($this->repositoryUrl);
- }
- else
- if (!empty($this->workingCopy))
- {
- if (is_dir($this->workingCopy))
- {
- if (in_array(".svn", scandir($this->workingCopy)))
- {
- $this->svnArgs = array($this->workingCopy);
- }
- else
- {
- throw new BuildException("'".$this->workingCopy."' doesn't seem to be a working copy");
- }
- }
- else
- if ($mode=='info' )
- {
- if (is_file($this->workingCopy))
- {
- $this->svnArgs = array($this->workingCopy);
- }
- else
- {
- throw new BuildException("'".$this->workingCopy."' is not a directory nor a file");
- }
- }
- else
- {
- throw new BuildException("'".$this->workingCopy."' is not a directory");
- }
- }
- }
-
- /**
- * Executes the constructed VersionControl_SVN instance
- *
- * @param array Additional arguments to pass to SVN.
- * @param array Switches to pass to SVN.
- * @return string Output generated by SVN.
- */
- protected function run($args = array(), $switches = array())
- {
- $svnstack = PEAR_ErrorStack::singleton('VersionControl_SVN');
-
- $tempArgs = $this->svnArgs;
-
- $tempArgs = array_merge($tempArgs, $args);
-
- $tempSwitches = $this->svnSwitches;
-
- $tempSwitches = array_merge($tempSwitches, $switches);
-
- if ($output = $this->svn->run($tempArgs, $tempSwitches))
- {
- return $output;
- }
- else
- {
- if (count($errs = $svnstack->getErrors()))
- {
- $err = current($errs);
-
- $errorMessage = $err['message'];
-
- if (isset($err['params']['errstr'])) {
- $errorMessage = $err['params']['errstr'];
- }
-
- throw new BuildException("Failed to run the 'svn " . $this->mode . "' command: " . $errorMessage);
- }
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCheckoutTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCheckoutTask.php
deleted file mode 100644
index 76dc976a..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCheckoutTask.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * $Id: f8844430c9e30d1c603452d8763fbd1114d80051 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Checks out a repository to a local directory
- *
- * @author Andrew Eddie <andrew.eddie@jamboworks.com>
- * @version $Id: f8844430c9e30d1c603452d8763fbd1114d80051 $
- * @package phing.tasks.ext.svn
- * @since 2.3.0
- */
-class SvnCheckoutTask extends SvnBaseTask
-{
- /**
- * Which Revision to Export
- *
- * @todo check if version_control_svn supports constants
- *
- * @var string
- */
- private $revision = 'HEAD';
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('checkout');
-
- $this->log("Checking out SVN repository to '" . $this->getToDir() . "'". ($this->revision=='HEAD'?'':" (revision: {$this->revision})"));
-
- // revision
- $switches = array(
- 'r' => $this->revision,
- );
-
- $this->run(array($this->getToDir()), $switches);
- }
-
- public function setRevision($revision)
- {
- $this->revision = $revision;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCommitTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCommitTask.php
deleted file mode 100644
index 7eb1ce7a..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCommitTask.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/**
- * $Id: 6fdb36b57778f5c0cd46110fd36c8c261ced0e86 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Commits changes in a local working copy to the repository
- *
- * @author Johan Persson <johanp@aditus.nu>
- * @version $Id: 6fdb36b57778f5c0cd46110fd36c8c261ced0e86 $
- * @package phing.tasks.ext.svn
- * @since 2.4.0
- */
-class SvnCommitTask extends SvnBaseTask
-{
- /**
- * Commit message
- */
- private $message = '';
-
- /**
- * Property name where we store the revision number of the just
- * commited version.
- */
- private $propertyName = "svn.committedrevision";
-
- /**
- * Sets the commit message
- */
- function setMessage($message)
- {
- $this->message = $message;
- }
-
- /**
- * Gets the commit message
- */
- function getMessage()
- {
- return $this->message;
- }
-
- /**
- * Sets the name of the property to use for returned revision
- */
- function setPropertyName($propertyName)
- {
- $this->propertyName = $propertyName;
- }
-
- /**
- * Returns the name of the property to use for returned revision
- */
- function getPropertyName()
- {
- return $this->propertyName;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- if( trim($this->message) === '' )
- {
- throw new BuildException('SVN Commit message can not be empty.');
- }
-
- $this->setup('commit');
-
- $this->log("Commiting SVN working copy at '" . $this->getWorkingCopy() . "' with message '".$this->GetMessage()."'");
-
- $output = $this->run(array(), array('message' => $this->GetMessage() ) );
-
- if( preg_match('/[\s]*Committed revision[\s]+([\d]+)/', $output, $matches) )
- {
- $this->project->setProperty($this->getPropertyName(), $matches[1]);
- }
- else
- {
- /**
- * If no new revision was committed set revision to "empty". Remember that
- * this is not necessarily an error. It could be that the specified working
- * copy is identical to to the copy in the repository and in that case
- * there will be no update and no new revision number.
- */
- $this->project->setProperty($this->getPropertyName(), '' );
- }
-
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCopyTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCopyTask.php
deleted file mode 100644
index c1eb7089..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnCopyTask.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Copies a repository from the repository url to another
- *
- * @version $Id: 6f39598901c83ecaf8e7fcb9d4065f70b38324cb $
- * @package phing.tasks.ext.svn
- * @since 2.3.0
- */
-class SvnCopyTask extends SvnBaseTask
-{
- private $message = "";
-
- /**
- * Sets the message
- */
- function setMessage($message)
- {
- $this->message = $message;
- }
-
- /**
- * Gets the message
- */
- function getMessage()
- {
- return $this->message;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('copy');
-
- $this->log("Copying SVN repository from '" . $this->getRepositoryUrl() . "' to '" . $this->getToDir() . "'");
-
- $options = array();
-
- if (strlen($this->getMessage()) > 0) {
- $options['message'] = $this->getMessage();
- }
-
- $this->run(array($this->getToDir()), $options);
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnExportTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnExportTask.php
deleted file mode 100755
index e0b2e78b..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnExportTask.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * $Id: ca2d150a53b870fe410f5434f4d500decc7cda73 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Exports/checks out a repository to a local directory
- * with authentication
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Andrew Eddie <andrew.eddie@jamboworks.com>
- * @version $Id: ca2d150a53b870fe410f5434f4d500decc7cda73 $
- * @package phing.tasks.ext.svn
- * @since 2.2.0
- */
-class SvnExportTask extends SvnBaseTask
-{
- /**
- * Which Revision to Export
- *
- * @todo check if version_control_svn supports constants
- *
- * @var string
- */
- private $revision = 'HEAD';
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('export');
-
- $this->log("Exporting SVN repository to '" . $this->getToDir() . "'");
-
- $switches = array();
-
- if (!empty($this->revision)) {
- $switches['r'] = $this->revision;
- }
-
- $this->run(array($this->getToDir()), $switches);
- }
-
- public function setRevision($revision)
- {
- $this->revision = $revision;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnInfoTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnInfoTask.php
deleted file mode 100644
index 68111d74..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnInfoTask.php
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/**
- * $Id: 36ffb2ececed4c83c9ca7ad3674b3fa11074f2a5 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Parses the output of 'svn info --xml' and
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 36ffb2ececed4c83c9ca7ad3674b3fa11074f2a5 $
- * @package phing.tasks.ext.svn
- * @see VersionControl_SVN
- * @since 2.4.9
- */
-class SvnInfoTask extends SvnBaseTask
-{
- private $propertyName = "svn.info";
-
- private $element = 'url';
- private $subElement = null;
-
- /**
- * Sets the name of the property to use
- */
- public function setPropertyName($propertyName)
- {
- $this->propertyName = $propertyName;
- }
-
- /**
- * Returns the name of the property to use
- */
- public function getPropertyName()
- {
- return $this->propertyName;
- }
-
- /**
- * Sets the name of the xml element to use
- */
- public function setElement($element)
- {
- $this->element = $element;
- }
-
- /**
- * Returns the name of the xml element to use
- */
- public function getElement()
- {
- return $this->element;
- }
-
- /**
- * Sets the name of the xml sub element to use
- */
- public function setSubElement($subElement)
- {
- $this->subElement = $subElement;
- }
-
- /**
- * Returns the name of the xml sub element to use
- */
- public function getSubElement()
- {
- return $this->subElement;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('info');
-
- $output = $this->run(array('--xml', '--incremental'));
-
- if ($xmlObj = @simplexml_load_string($output)) {
- $object = $xmlObj->{$this->element};
-
- if (!empty($this->subElement)) {
- $object = $object->{$this->subElement};
- }
-
- $this->project->setProperty($this->getPropertyName(), (string) $object);
- } else {
- throw new BuildException("Failed to parse the output of 'svn info --xml'.");
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnLastRevisionTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnLastRevisionTask.php
deleted file mode 100755
index 7305c27b..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnLastRevisionTask.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/**
- * $Id: 74d61db8c11978a2383f071b7ab7ed0afae6953c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Stores the number of the last revision of a workingcopy in a property
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: 74d61db8c11978a2383f071b7ab7ed0afae6953c $
- * @package phing.tasks.ext.svn
- * @see VersionControl_SVN
- * @since 2.1.0
- */
-class SvnLastRevisionTask extends SvnBaseTask
-{
- private $propertyName = "svn.lastrevision";
- private $forceCompatible = false;
- private $lastChanged = false;
-
- /**
- * Sets the name of the property to use
- */
- function setPropertyName($propertyName)
- {
- $this->propertyName = $propertyName;
- }
-
- /**
- * Returns the name of the property to use
- */
- function getPropertyName()
- {
- return $this->propertyName;
- }
-
- /**
- * Sets whether to force compatibility with older SVN versions (< 1.2)
- */
- public function setForceCompatible($force)
- {
- $this->forceCompatible = (bool) $force;
- }
-
- /**
- * Sets whether to retrieve the last changed revision
- */
- public function setLastChanged($lastChanged)
- {
- $this->lastChanged = (bool) $lastChanged;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('info');
-
- if ($this->forceCompatible)
- {
- $output = $this->run();
-
- if ($this->lastChanged) {
- $found = preg_match('/Rev:[\s]+([\d]+)/', $output, $matches);
- } else {
- $found = preg_match('/Last Changed Rev:[\s]+([\d]+)/', $output, $matches);
- }
-
- if ($found)
- {
- $this->project->setProperty($this->getPropertyName(), $matches[1]);
- }
- else
- {
- throw new BuildException("Failed to parse the output of 'svn info'.");
- }
- }
- else
- {
- $output = $this->run(array('--xml'));
-
- if ($xmlObj = @simplexml_load_string($output))
- {
- if ($this->lastChanged) {
- $lastRevision = (int)$xmlObj->entry->commit['revision'];
- } else {
- $lastRevision = (int)$xmlObj->entry['revision'];
- }
-
- $this->project->setProperty($this->getPropertyName(), $lastRevision);
- }
- else
- {
- throw new BuildException("Failed to parse the output of 'svn info --xml'.");
- }
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnListTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnListTask.php
deleted file mode 100755
index 63d8445c..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnListTask.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * $Id: 5dfcc23bc58efaad0eb11ef4964bcd7be0fb99e9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Stores the output of a list command on a workingcopy or repositoryurl in a property.
- * This stems from the SvnLastRevisionTask.
- *
- * @author Anton Stöckl <anton@stoeckl.de>
- * @author Michiel Rook <mrook@php.net> (SvnLastRevisionTask)
- * @version $Id: 5dfcc23bc58efaad0eb11ef4964bcd7be0fb99e9 $
- * @package phing.tasks.ext.svn
- * @see VersionControl_SVN
- * @since 2.1.0
- */
-class SvnListTask extends SvnBaseTask
-{
- private $propertyName = "svn.list";
- private $forceCompatible = true;
- private $limit = null;
- private $orderDescending = false;
-
- /**
- * Sets the name of the property to use
- */
- function setPropertyName($propertyName)
- {
- $this->propertyName = $propertyName;
- }
-
- /**
- * Returns the name of the property to use
- */
- function getPropertyName()
- {
- return $this->propertyName;
- }
-
- /**
- * Sets whether to force compatibility with older SVN versions (< 1.2)
- */
- public function setForceCompatible($force)
- {
- //$this->forceCompatible = (bool) $force;
- // see below, we need this to be true as xml mode does not work
- }
-
- /**
- * Sets the max num of tags to display
- */
- function setLimit($limit)
- {
- $this->limit = (int) $limit;
- }
-
- /**
- * Sets whether to sort tags in descending order
- */
- function setOrderDescending($orderDescending)
- {
- $this->orderDescending = (bool) $orderDescending;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('list');
-
- if ($this->forceCompatible) {
- $output = $this->run(array('--verbose'));
- $result = null;
-
- $lines = $output['.']['name'];
-
- if ($this->orderDescending) {
- $lines = array_reverse($lines);
- }
-
- $count = 0;
- foreach ($lines as $line) {
- if ($this->limit > 0 && $count >= $this->limit) {
- break;
- }
- if (preg_match('@\s+(\d+)\s+(\S+)\s+(\S+ \S+ \S+)\s+(\S+)@', $line, $matches)) {
- if ($matches[4] == '.') {
- continue;
- }
- $result .= (!empty($result)) ? "\n" : '';
- $result .= $matches[1] . ' | ' . $matches[2] . ' | ' . $matches[3] . ' | ' . $matches[4];
- $count++;
- }
- }
-
- if (!empty($result)) {
- $this->project->setProperty($this->getPropertyName(), $result);
- } else {
- throw new BuildException("Failed to parse the output of 'svn list --verbose'.");
- }
- } else {
- // this is not possible at the moment as SvnBaseTask always uses fetchmode ASSOC
- // which transfers everything into nasty assoc array instead of xml
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnLogTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnLogTask.php
deleted file mode 100755
index 7f5c4025..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnLogTask.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/**
- * $Id: fc8bc4cf4caa997c13dd66095997fa5478c47959 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Stores the output of a log command on a workingcopy or repositoryurl in a property.
- * This stems from the SvnLastRevisionTask.
- *
- * @author Anton Stöckl <anton@stoeckl.de>
- * @author Michiel Rook <mrook@php.net> (SvnLastRevisionTask)
- * @version $Id: fc8bc4cf4caa997c13dd66095997fa5478c47959 $
- * @package phing.tasks.ext.svn
- * @see VersionControl_SVN
- * @since 2.1.0
- */
-class SvnLogTask extends SvnBaseTask
-{
- private $propertyName = "svn.log";
- private $forceCompatible = true;
- private $limit = null;
-
- /**
- * Sets the name of the property to use
- */
- function setPropertyName($propertyName)
- {
- $this->propertyName = $propertyName;
- }
-
- /**
- * Returns the name of the property to use
- */
- function getPropertyName()
- {
- return $this->propertyName;
- }
-
- /**
- * Sets whether to force compatibility with older SVN versions (< 1.2)
- */
- public function setForceCompatible($force)
- {
- //$this->forceCompatible = (bool) $force;
- // see below, we need this to be true as xml mode does not work
- }
-
- /**
- * Sets the max num of log entries to get from svn
- */
- function setLimit($limit)
- {
- $this->limit = (int) $limit;
- }
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('log');
-
- $switches= array();
- if ($this->limit > 0) {
- $switches['limit'] = $this->limit;
- }
-
- if ($this->forceCompatible) {
- $output = $this->run(array(), $switches);
- $result = null;
-
- foreach ($output as $line) {
- $result .= (!empty($result)) ? "\n" : '';
- $result .= "{$line['REVISION']} | {$line['AUTHOR']} | {$line['DATE']} | {$line['MSG']}";
- }
-
- if (!empty($result)) {
- $this->project->setProperty($this->getPropertyName(), $result);
- } else {
- throw new BuildException("Failed to parse the output of 'svn log'.");
- }
- } else {
- // this is not possible at the moment as SvnBaseTask always uses fetchmode ASSOC
- // which transfers everything into nasty assoc array instead of xml
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnSwitchTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnSwitchTask.php
deleted file mode 100644
index cb6c5ca4..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnSwitchTask.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * $Id: 2beb14d928ee47f36cceb9467b4a2ac9d2c81ef4 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Switches a repository at a given local directory to a different location
- *
- * @author Dom Udall <dom.udall@clock.co.uk>
- * @version $Id: 2beb14d928ee47f36cceb9467b4a2ac9d2c81ef4 $
- * @package phing.tasks.ext.svn
- * @since 2.4.3
- */
-class SvnSwitchTask extends SvnBaseTask
-{
- /**
- * Which Revision to Export
- *
- * @todo check if version_control_svn supports constants
- *
- * @var string
- */
- private $revision = 'HEAD';
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('switch');
-
- $this->log("Switching SVN repository at '" . $this->getToDir() . "' to '" . $this->getRepositoryUrl() . "' "
- . ($this->getRevision()=='HEAD'?'':" (revision: {$this->getRevision()})"));
-
- // revision
- $switches = array(
- 'r' => $this->getRevision(),
- );
-
- $this->run(array($this->getToDir()), $switches);
- }
-
- public function setRevision($revision)
- {
- $this->revision = $revision;
- }
-
- public function getRevision()
- {
- return $this->revision;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnUpdateTask.php b/buildscripts/phing/classes/phing/tasks/ext/svn/SvnUpdateTask.php
deleted file mode 100644
index c70039fc..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/svn/SvnUpdateTask.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * $Id: 9f5e4de2948b03eb6c9e459b1065bcedd851c025 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/svn/SvnBaseTask.php';
-
-/**
- * Updates a repository in local directory
- *
- * @author Andrew Eddie <andrew.eddie@jamboworks.com>
- * @version $Id: 9f5e4de2948b03eb6c9e459b1065bcedd851c025 $
- * @package phing.tasks.ext.svn
- * @since 2.3.0
- */
-class SvnUpdateTask extends SvnBaseTask
-{
- /**
- * Which Revision to Export
- *
- * @todo check if version_control_svn supports constants
- *
- * @var string
- */
- private $revision = 'HEAD';
-
- /**
- * The main entry point
- *
- * @throws BuildException
- */
- function main()
- {
- $this->setup('update');
-
- $this->log("Updating SVN repository at '" . $this->getToDir() . "'". ($this->revision=='HEAD'?'':" (revision: {$this->revision})"));
-
- // revision
- $switches = array(
- 'r' => $this->revision,
- );
-
- $this->run(array($this->getToDir()), $switches);
- }
-
- public function setRevision($revision)
- {
- $this->revision = $revision;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardEncodeTask.php b/buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardEncodeTask.php
deleted file mode 100644
index 33d2e4e3..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardEncodeTask.php
+++ /dev/null
@@ -1,510 +0,0 @@
-<?php
-
-/*
- * $Id: cdbb2883ab70c650896a465a872b3da30f13eb00 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/MatchingTask.php';
-include_once 'phing/util/SourceFileScanner.php';
-include_once 'phing/mappers/MergeMapper.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * Encodes files using Zeng Guard Encoder
- *
- * @author Petr Rybak <petr@rynawe.net>
- * @version $Id: cdbb2883ab70c650896a465a872b3da30f13eb00 $
- * @package phing.tasks.ext.zendguard
- * @since 2.4.3
- */
-class ZendGuardEncodeTask extends MatchingTask
-{
- protected $filesets = array();
- protected $encodeCommand;
-
-
- /**
- * TASK PROPERTIES
- *
- * See http://static.zend.com/topics/Zend-Guard-User-Guidev5x.pdf
- * for more information on how to use ZendGuard
- *
- */
- /**
- * Permanently deletes (see warning below) the original source files specified in the
- * SourceInputPath and saves the encoded files in its place.
- * This option has no option parameter.
- * When this option is use, do not use the output_file parameter.
- *
- * Warning:
- * To avoid permanent loss of non-encoded scripts, make a backup. Deleted files
- * cannot be restored or recovered and will be permanently deleted with this option.
- * If you are unsure about deleting the source files, use the ––rename-source option
- * instead
- *
- * @var bool
- */
- protected $deleteSource = true;
- /**
- * Move the original source file to <input_file>.<renameSourceExt> and save the encoded file in its
- * place.
- *
- * If specified deleteSource will be automatically disabled.
- *
- * @var string
- */
- protected $renameSourceExt = null;
- /**
- * Turns short PHP tag (“<?†) recognition either on or off.
- * On or off must be specified as an argument when using this option.
- * The default, when option is not used in the command-line, is - on
- *
- * @var bool
- */
- protected $shortTags = true;
- /**
- * Turn ASP tag (“<%†) recognition on/off. (default: off). On or off must be specified
- * as an argument when using this option.
- * The default, when this option is not used in the command-line, is - off
- *
- * @var bool
- */
- protected $aspTags = false;
- /**
- *
- * Disables the PHP-compatible header that is added to the top of every encoded file
- * by default. Encoded files generated with this option will not display a meaningful
- * error when loaded by PHP that doesn't have the Zend Optimizer properly installed.
- * Using this option saves approximately 1.5KB for every encoded file. Do not use it
- * unless disk space constraints are critica
- *
- * @var bool
- */
- protected $noHeader = false;
- /**
- * If cryptography should be used to encode the source code
- *
- * @var bool
- */
- protected $useCrypto = false;
- /**
- * Force cooperation with other encoded files only. This option generates files that
- * work exclusively with associated encoded files. Associated encoded files are
- * those generated by the same company. Files that do not share the same encoded
- * company association cannot call these files
- *
- * @var bool
- */
- protected $encodedOnly = false;
- /**
- * Allow encoding previously encoded files. (NOT recommended!)
- *
- * @var bool
- */
- protected $forceEncode = false;
- /**
- * Make an encoded file to expire on the given date. Date is in yyyy-mm-dd format.
- *
- * @var string
- */
- protected $expires = null;
- /**
- * Level of obfuscation. Defaults to 0 (no obfuscation).
- *
- * @var int
- */
- protected $obfuscationLevel = 0;
- /**
- * Optimization mask. (default value: [+++++++])
- * opt_mask is an integer representing a bit-mask.
- * The default value enables all of the optimization passes.
- * Each optimization pass of the Zend Optimizer can be turned on or off based on
- * the mask entered
- *
- * @var int
- */
- protected $optMask = null;
- /**
- * Path to the zend encoder binary
- *
- * @var string
- */
- protected $zendEncoderPath = null;
- /**
- * Path to private key for licensing
- *
- * @var string
- */
- protected $privateKeyPath = null;
- /**
- * Enable licensing.
- * If enabled, productName must be defined.
- *
- * @var bool
- */
- protected $licenseProduct = false;
- /**
- * If true the ownership, permissions and timestamps
- * of the encoded files won't be preserved.
- *
- * @var bool
- */
- protected $ignoreFileModes = false;
- /**
- * Enable signing
- * If enabled, productName must be defined.
- *
- * @var bool
- */
- protected $signProduct = false;
- /**
- * Product name. Must be defined if licenseProduct
- * or signProduct is set to 1
- *
- * @var string
- */
- protected $productName = null;
- /**
- * Embed the information in the specified file into the header of the encoded file
- * (overrides noHeader)
- *
- * @var string
- */
- protected $prologFile = null;
-
- /**
- * TASK PROPERTIES SETTERS
- */
- public function setZendEncoderPath($value)
- {
- $this->zendEncoderPath = $value;
- }
-
- public function setPrivateKeyPath($value)
- {
- $this->privateKeyPath = $value;
- }
-
- public function setShortTags($value)
- {
- $this->shortTags = (bool) $value;
- }
-
- public function setAspTags($value)
- {
- $this->aspTags = (bool) $value;
- }
-
- public function setDeleteSource($value)
- {
- $this->shortTags = (bool) $value;
- }
-
- public function setUseCrypto($value)
- {
- $this->useCrypto = (bool) $value;
- }
-
- public function setObfuscationLevel($value)
- {
- $this->obfuscationLevel = (int) $value;
- }
-
- public function setLicenseProduct($value)
- {
- $this->licenseProduct = (bool) $value;
- }
-
- public function setPrologFile($value)
- {
- $this->prologFile = $value;
- }
-
- public function setSignProduct($value)
- {
- $this->signProduct = (bool) $value;
- }
-
- public function setForceEncode($value)
- {
- $this->forceEncode = (bool) $value;
- }
-
- public function setEncodedOnly($value)
- {
- $this->encodedOnly = (bool) $value;
- }
-
- public function setIgnoreFileModes($value)
- {
- $this->ignoreFileModes = (bool) $value;
- }
-
- public function setExpires($value)
- {
- $this->expires = $value;
- }
-
- public function setProductName($value)
- {
- $this->productName = $value;
- }
-
- public function setOptMask($value)
- {
- $this->optMask = (int) $value;
- }
-
- public function setRenameSourceExt($value)
- {
- $this->renameSourceExt = $value;
- }
-
- public function setNoHeader($value)
- {
- $this->noHeader = (bool) $value;
- }
-
- /**
- * Add a new fileset.
- *
- * @return FileSet
- */
- public function createFileSet()
- {
- $this->fileset = new ZendGuardFileSet();
- $this->filesets[] = $this->fileset;
- return $this->fileset;
- }
-
- /**
- * Verifies that the configuration is correct
- *
- * @throws BuildException
- */
- protected function verifyConfiguration()
- {
- // Check that the zend encoder path is specified
- if (empty($this->zendEncoderPath)) {
- throw new BuildException("Zend Encoder path must be specified");
- }
-
- // verify that the zend encoder binary exists
- if (!file_exists($this->zendEncoderPath)) {
- throw new BuildException("Zend Encoder not found on path " . $this->zendEncoderPath);
- }
-
- // if either sign or license is required the private key path needs to be defined
- // and the file has to exist and product name has to be specified
- if ($this->signProduct || $this->licenseProduct) {
- if (empty($this->privateKeyPath)) {
- throw new BuildException("Licensing or signing requested but privateKeyPath not provided.");
- }
- if (!is_readable($this->privateKeyPath)) {
- throw new BuildException("Licensing or signing requested but private key path doesn't exist or is unreadable.");
- }
- if (empty($this->productName)) {
- throw new BuildException("Licensing or signing requested but product name not provided.");
- }
- }
-
- // verify prolog file exists
- if (!empty($this->prologFile)) {
- if (!file_exists($this->prologFile)) {
- throw new BuildException("The prolog file doesn't exist: " . $this->prologFile);
- }
- }
- }
-
- /**
- * Do the work
- *
- * @throws BuildException
- */
- public function main()
- {
- $this->verifyConfiguration();
- $this->prepareEncoderCommand();
-
- try {
- if (empty($this->filesets)) {
- throw new BuildException("You must supply nested fileset.",
- $this->getLocation());
- }
-
- $encodedFilesCounter = 0;
-
- foreach ($this->filesets as $fs) {
- /* @var $fs FileSet */
-
- /* @var $fsBasedir PhingFile */
- $fsBasedir = $fs->getDir($this->project)->getAbsolutePath();
-
- $files = $fs->getFiles($this->project, false);
-
- foreach ($files as $file) {
- $f = new PhingFile($fsBasedir, $file);
-
- if ($f->isFile()) {
- $path = $f->getAbsolutePath();
-
- $this->log("Encoding " . $path, Project::MSG_VERBOSE);
- $this->encodeFile($path);
-
- $encodedFilesCounter++;
- }
- }
- }
-
- $this->log("Encoded files: " . $encodedFilesCounter);
- } catch (IOException $ioe) {
- $msg = "Problem encoding files: " . $ioe->getMessage();
- throw new BuildException($msg, $ioe, $this->getLocation());
- }
- }
-
- /**
- * Prepares the main part of the command that will be
- * used to encode the given file(s).
- */
- protected function prepareEncoderCommand()
- {
- $command = $this->zendEncoderPath . " \\\n";
-
- if (!empty($this->renameSourceExt)) {
- $command .= " --rename-source " . $this->renameSourceExt . " \\\n";
- } elseif ($this->deleteSource) {
- // delete source
- $command .= " --delete-source \\\n";
- }
-
- // short tags
- $command .= " --short-tags " . (($this->shortTags) ? 'on' : 'off') . " \\\n";
-
- // asp tags
- $command .= " --asp-tags " . (($this->aspTags) ? 'on' : 'off') . " \\\n";
-
- // use crypto
- if ($this->useCrypto) {
- $command .= " --use-crypto \\\n";
- }
-
- // ignore file modes
- if ($this->ignoreFileModes) {
- $command .= " --ignore-file-modes \\\n";
- }
-
- // force encode
- if ($this->forceEncode) {
- $command .= " --force-encode \\\n";
- }
-
- // expires
- if (!empty($this->expires)) {
- $command .= " --expires " . $this->expires . " \\\n";
- }
-
- // insert prolog file name or no-header
- if (!empty($this->prologFile)) {
- $command .= " --prolog-filename " . $this->prologFile . " \\\n";
- } elseif ($this->noHeader) {
- // no-header
- $command .= " --no-header \\\n";
- }
-
- // obfuscation level
- if ($this->obfuscationLevel > 0) {
- $command .= " --obfuscation-level " . $this->obfuscationLevel . " \\\n";
- }
-
- // encoded only
- if ($this->encodedOnly) {
- $command .= " --encoded-only \\\n";
- }
-
- // opt mask
- if (null !== $this->optMask) {
- $command .= " --optimizations " . $this->optMask . " \\\n";
- }
-
- // Signing or licensing
- if ($this->signProduct) {
- $command .= " --sign-product " . $this->productName . " --private-key " . $this->privateKeyPath . " \\\n";
- } elseif ($this->licenseProduct) {
- $command .= " --license-product " . $this->productName . " --private-key " . $this->privateKeyPath . " \\\n";
- }
-
- // add a blank space
- $command .= " ";
-
- $this->encodeCommand = $command;
-
- }
-
- /**
- * Encodes a file using currently defined Zend Guard settings
- *
- * @param string $filePath Path to the encoded file
- */
- protected function encodeFile($filePath)
- {
- $command = $this->encodeCommand . $filePath . ' 2>&1';
-
- $this->log('Running: ' . $command, Project::MSG_VERBOSE);
-
- $tmp = exec($command, $output, $return_var);
- if ($return_var !== 0) {
- throw new BuildException("Encoding failed. \n Msg: " . $tmp . " \n Encode command: " . $command);
- }
-
- return true;
- }
-
-}
-
-/**
- * This is a FileSet with the to specify permissions.
- *
- * Permissions are currently not implemented by PEAR Archive_Tar,
- * but hopefully they will be in the future.
- *
- * @package phing.tasks.ext.zendguard
- */
-class ZendGuardFileSet extends FileSet
-{
- private $files = null;
-
- /**
- * Get a list of files and directories specified in the fileset.
- * @return array a list of file and directory names, relative to
- * the baseDir for the project.
- */
- public function getFiles(Project $p, $includeEmpty = true)
- {
-
- if ($this->files === null) {
-
- $ds = $this->getDirectoryScanner($p);
- $this->files = $ds->getIncludedFiles();
- } // if ($this->files===null)
-
- return $this->files;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardLicenseTask.php b/buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardLicenseTask.php
deleted file mode 100644
index 2a3f71ca..00000000
--- a/buildscripts/phing/classes/phing/tasks/ext/zendguard/ZendGuardLicenseTask.php
+++ /dev/null
@@ -1,524 +0,0 @@
-<?php
-
-/*
- * $Id: 96af59b9cbecaf7f146dffab1d0b5a806a56b47f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Produce license files using Zeng Guard.
- * The task can produce a license file from the given
- * license properties or it can use a template.
- *
- * @author Petr Rybak <petr@rynawe.net>
- * @version $Id: 96af59b9cbecaf7f146dffab1d0b5a806a56b47f $
- * @package phing.tasks.ext.zendguard
- * @since 2.4.3
- */
-class ZendGuardLicenseTask extends Task
-{
- protected $zendsignCommand;
- private $tmpLicensePath;
-
- /**
- * TASK PROPERTIES
- *
- * See http://static.zend.com/topics/Zend-Guard-User-Guidev5x.pdf
- * for more information on how to use ZendGuard
- *
- */
- /**
- * Path to Zend Guard zendenc_sign executable
- *
- * @var string
- */
- protected $zendsignPath;
- /**
- * Path to private key that will be used to sign the license
- *
- * @var string
- */
- protected $privateKeyPath;
- /**
- * Where to store the signed license file
- *
- * @var string
- */
- protected $outputFile;
- /**
- * Path to license template. If specified all
- * license properties will be ignored and the
- * template will be used to generate the file.
- *
- * @var string
- */
- protected $licenseTemplate;
- /**
- * The name assigned to Product. This must be the same name used when encoding
- * the PHP files.
- *
- * REQUIRED
- *
- * @var string
- */
- protected $productName;
- /**
- * The Name of the Registered owner of the license.
- *
- * REQUIRED
- *
- * @var string
- */
- protected $registeredTo;
- /**
- * Expiration date of the license. Used if the license is issued with a date restriction.
- * Possible values:
- * - 'Never', '0' or false: the license won't expire
- * - A Date in format DD-MM-YYYY to set expiration for that date
- * - Relative date supported by the PHP strtotime function (e.g. +1 month)
- *
- * REQUIRED
- *
- * @var string
- */
- protected $expires;
- /**
- * Limits the use of the license to IP addresses that fall within specification. Supports
- * wildcards for any of the IP place holders, as well as the two types of net masks
- * (filters).
- * Netmask pair An IP a.b.c.d, and a netmask w.x.y.z. (That is., 10.1.0.0/255.255.0.0),
- * where the binary of mask is applied to filter IP addresses.
- * ip/nnn (similar to a CIDR specification) This mask consists of nnn high-order 1 bits.
- * (That is, 10.1.0.0/16 is the same as 10.1.0.0/255.255.0.0). Instead of spelling out
- * the bits of the subnet mask, this mask notation is simply listed as the number of 1s
- * bits that start the mask. Rather than writing the address and subnet mask as
- * 192.60.128.0/255.255.252.0 the network address would be written simply as:
- * 192.60.128.0/22 which indicates starting address of the network and number of 1s
- * bits (22) in the network portion of the address. The mask in binary is
- * (11111111.11111111.11111100.00000000).
- *
- * OPTIONAL
- *
- * Example (Wildcard):
- * IP-Range = 10.1.*.*
- * Example (Net Mask):
- * IP-Range = 10.1.0.0/255.255.0.0
- * Example (Net Mask):
- * IP-Range = 10.1.0.0/16
- *
- * @var string
- */
- protected $ipRange;
- /**
- * Coded string (Zend Host ID) used to lock the license to a specific hardware. The
- * Zend Host ID obtained from the machine where the encoded files and license are
- * to be installed. The Zend Host ID code can be obtained by using the zendid utility.
- * For more details, see Getting the Zend Host ID.
- *
- * REQUIRED if Hardware-Locked is set equal to YES.
- * Meaningless if Hardware-Locked is set equal to NO.
- *
- * User semicolon to enter more than one Host-ID
- *
- * Example:
- * Host-ID = H:MFM43-Q9CXC-B9EDX-GWYSU;H:MFM43-Q9CXC-B9EDX-GWYTY
- *
- * @var string
- */
- protected $hostID;
- /**
- * Option that indicates if the license will be locked to a specific machine
- * using the Zend Host ID code(s). If set to YES, the Host-ID is required.
- *
- * OPTIONAL
- *
- * @var bool
- */
- protected $hardwareLocked;
- /**
- * Semi-colon separated user defined values that will be part of the license. These values
- * CANNOT be modified after the license is produced. Modification
- * would invalidate the license.
- *
- * OPTIONAL
- * Example:
- * Tea=Mint Flavor;Coffee=Arabica
- *
- * @var string
- */
- protected $userDefinedValues;
- /**
- * Semi-colon separated user defined x-values that will be part of the license. These values
- * CAN be modified after the license is produced. Modification
- * won't invalidate the license.
- *
- * OPTIONAL
- * Example:
- * Tea=Mint Flavor;Coffee=Arabica
- *
- * @var string
- */
- protected $xUserDefinedValues;
-
-
- public function setLicenseTemplate($value)
- {
- $this->licenseTemplate = $value;
- }
-
- public function setProductName($productName)
- {
- $this->productName = $productName;
- }
-
- public function setRegisteredTo($registeredTo)
- {
- $this->registeredTo = $registeredTo;
- }
-
- /**
- * Process the expires property. If the value is
- * empty (false, '', ...) it will set the value to 'Never'
- * Otherwise it will run the value through strtotime so relative
- * date and time notation can be used (e.g. +1 month)
- *
- * @param mixed $expires
- *
- * @return string
- */
- public function setExpires($expires)
- {
- // process the expires value
- if (false === $expires || '0' === $expires || strtolower($expires) == 'never' || '' === $expires) {
- $this->expires = 'Never';
- } else {
- $time = strtotime($expires);
- if (!$time) {
- throw new BuildException("Unsupported expires format: " . $expires);
- }
- $this->expires = date('d-M-Y', $time);
- }
- }
-
- public function setIpRange($iprange)
- {
- $this->ipRange = $iprange;
- }
-
- public function setHostID($hostID)
- {
- $this->hostID = $hostID;
- }
-
- public function setHardwareLocked($hardwareLocked)
- {
- $this->hardwareLocked = (bool) $hardwareLocked;
- }
-
- public function setUserDefinedValues($userDefinedValues)
- {
- $this->userDefinedValues = $userDefinedValues;
- }
-
- public function setXUserDefinedValues($xUserDefinedValues)
- {
- $this->xUserDefinedValues = $xUserDefinedValues;
- }
-
- public function setZendsignPath($zendsignPath)
- {
- $this->zendsignPath = $zendsignPath;
- }
-
- public function setPrivateKeyPath($privateKeyPath)
- {
- $this->privateKeyPath = $privateKeyPath;
- }
-
- public function setOutputFile($outputFile)
- {
- $this->outputFile = $outputFile;
- }
-
- /**
- * Verifies that the configuration is correct
- *
- * @throws BuildException
- */
- protected function verifyConfiguration()
- {
- // Check that the zend encoder path is specified
- if (empty($this->zendsignPath)) {
- throw new BuildException("Zendenc_sign path must be specified");
- }
- // verify that the zend encoder binary exists
- if (!file_exists($this->zendsignPath)) {
- throw new BuildException("Zendenc_sign not found on path " . $this->zendsignPath);
- }
-
- // verify that the private key path is defined
- if (empty($this->privateKeyPath)) {
- throw new BuildException("You must define privateKeyPath.");
- }
- // verify that the private key file is readable
- if (!is_readable($this->privateKeyPath)) {
- throw new BuildException("Private key file is not readable: " . $this->privateKeyPath);
- }
-
- // if template is passed, verify that it is readable
- if (!empty($this->licenseTemplate)) {
- if (!is_readable($this->licenseTemplate)) {
- throw new BuildException("License template file is not readable " . $this->licenseTemplate);
- }
- }
-
- // check that output file path is defined
- if (empty($this->outputFile)) {
- throw new BuildException("Path where to store the result file needs to be defined in outputFile property");
- }
-
- // if license template is NOT provided check that all required parameters are defined
- if (empty($this->licenseTemplate)) {
-
- // check productName
- if (empty($this->productName)) {
- throw new BuildException("Property must be defined: productName");
- }
-
- // check expires
- if (null === $this->expires) {
- throw new BuildException("Property must be defined: expires");
- }
-
- // check registeredTo
- if (empty($this->registeredTo)) {
- throw new BuildException("Property must be defined: registeredTo");
- }
-
- // check hardwareLocked
- if (null === $this->hardwareLocked) {
- throw new BuildException("Property must be defined: hardwareLocked");
- }
-
- // if hardwareLocked is set to true, check that Host-ID is set
- if ($this->hardwareLocked) {
- if (empty($this->hostID)) {
- throw new BuildException("If you set hardwareLocked to true hostID must be provided");
- }
- }
- }
- }
-
- /**
- * Do the work
- *
- * @throws BuildException
- */
- public function main()
- {
- try {
- $this->verifyConfiguration();
-
- $this->generateLicense();
- } catch (Exception $e) {
- // remove the license temp file if it was created
- $this->cleanupTmpFiles();
-
- throw $e;
- }
- $this->cleanupTmpFiles();
- }
-
- /**
- * If temporary license file was created during the process
- * this will remove it
- *
- * @return void
- */
- private function cleanupTmpFiles()
- {
- if (!empty($this->tmpLicensePath) && file_exists($this->tmpLicensePath)) {
- $this->log("Deleting temporary license template " . $this->tmpLicensePath, Project::MSG_VERBOSE);
-
- unlink($this->tmpLicensePath);
- }
- }
-
- /**
- * Prepares and returns the command that will be
- * used to create the license.
- *
- * @return string
- */
- protected function prepareSignCommand()
- {
- $command = $this->zendsignPath;
-
- // add license path
- $command .= ' ' . $this->getLicenseTemplatePath();
-
- // add result file path
- $command .= ' ' . $this->outputFile;
-
- // add key path
- $command .= ' ' . $this->privateKeyPath;
-
-
- $this->zendsignCommand = $command;
-
- return $command;
- }
-
- /**
- * Checks if the license template path is defined
- * and returns it.
- * If it the license template path is not defined
- * it will generate a temporary template file and
- * provide it as a template.
- *
- * @return string
- */
- protected function getLicenseTemplatePath()
- {
- if (!empty($this->licenseTemplate)) {
- return $this->licenseTemplate;
- } else {
- return $this->generateLicenseTemplate();
- }
- }
-
- /**
- * Creates the signed license at the defined output path
- *
- * @return void
- */
- protected function generateLicense()
- {
- $command = $this->prepareSignCommand() . ' 2>&1';
-
- $this->log('Creating license at ' . $this->outputFile);
-
- $this->log('Running: ' . $command, Project::MSG_VERBOSE);
- $tmp = exec($command, $output, $return_var);
-
- // Check for exit value 1. Zendenc_sign command for some reason
- // returns 0 in case of failure and 1 in case of success...
- if ($return_var !== 1) {
- throw new BuildException("Creating license failed. \n\nZendenc_sign msg:\n" . join("\n", $output) . "\n\n");
- }
- }
-
- /**
- * It will generate a temporary license template
- * based on the properties defined.
- *
- * @return string Path of the temporary license template file
- */
- protected function generateLicenseTemplate()
- {
- $this->tmpLicensePath = tempnam(sys_get_temp_dir(), 'zendlicense');
-
- $this->log("Creating temporary license template " . $this->tmpLicensePath, Project::MSG_VERBOSE);
- if (file_put_contents($this->tmpLicensePath, $this->generateLicenseTemplateContent()) === false) {
- throw new BuildException("Unable to create temporary template license file: " . $this->tmpLicensePath);
- }
-
- return $this->tmpLicensePath;
- }
-
- /**
- * Generates license template content based
- * on the defined parameters
- *
- * @return string
- */
- protected function generateLicenseTemplateContent()
- {
- $contentArr = array();
-
- // Product Name
- $contentArr[] = array('Product-Name', $this->productName);
- // Registered to
- $contentArr[] = array('Registered-To', $this->registeredTo);
- // Hardware locked
- $contentArr[] = array('Hardware-Locked', ($this->hardwareLocked ? 'Yes' : 'No'));
-
- // Expires
- $contentArr[] = array('Expires', $this->expires);
-
- // IP-Range
- if (!empty($this->ipRange)) {
- $contentArr[] = array('IP-Range', $this->ipRange);
- }
- // Host-ID
- if (!empty($this->hostID)) {
- foreach (explode(';', $this->hostID) as $hostID) {
- $contentArr[] = array('Host-ID', $hostID);
- }
- } else {
- $contentArr[] = array('Host-ID', 'Not-Locked');
- }
-
- // parse user defined fields
- if (!empty($this->userDefinedValues)) {
- $this->parseAndAddUserDefinedValues($this->userDefinedValues, $contentArr);
- }
- // parse user defined x-fields
- if (!empty($this->xUserDefinedValues)) {
- $this->parseAndAddUserDefinedValues($this->xUserDefinedValues, $contentArr, 'X-');
- }
-
- // merge all the values
- $content = '';
- foreach ($contentArr as $valuePair) {
-
- list($key, $value) = $valuePair;
-
- $content .= $key . " = " . $value . "\n";
- }
-
- return $content;
- }
-
- /**
- * Parse the given string in format like key1=value1;key2=value2;... and
- * converts it to array
- * (key1=>value1, key2=value2, ...)
- *
- * @param stirng $valueString Semi-colon separated value pairs
- * @param array $valueArray Array to which the values will be added
- * @param string $keyPrefix Prefix to use when adding the key
- *
- * @return void
- */
- protected function parseAndAddUserDefinedValues($valueString, array &$valueArray, $keyPrefix = '',
- $pairSeparator = ';')
- {
- // explode the valueString (semicolon)
- $valuePairs = explode($pairSeparator, $valueString);
- if (!empty($valuePairs)) {
- foreach ($valuePairs as $valuePair) {
- list($key, $value) = explode('=', $valuePair, 2);
-
- // add pair into the valueArray
- $valueArray[] = array($keyPrefix . $key, $value);
- }
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/AdhocTask.php b/buildscripts/phing/classes/phing/tasks/system/AdhocTask.php
deleted file mode 100755
index ce0ca210..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/AdhocTask.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-/*
- * $Id: 03a742eb03e5e1515c297d941970a86b00e1f69e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Abstract class for creating adhoc Phing components in buildfile.
- *
- * By itself this class can be used to declare a single class within your buildfile.
- * You can then reference this class in any task that takes custom classes (selectors,
- * mappers, filters, etc.)
- *
- * Subclasses exist for conveniently declaring and registering tasks and types.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class AdhocTask extends Task {
-
- /**
- * The PHP script
- * @var string
- */
- protected $script;
-
- protected $newClasses = array();
-
- /**
- * Main entry point
- */
- public function main() {
- $this->execute();
- if ($this->newClasses) {
- foreach($this->newClasses as $classname) {
- $this->log("Added adhoc class " . $classname, Project::MSG_VERBOSE);
- }
- } else {
- $this->log("Adhoc task executed but did not result in any new classes.", Project::MSG_VERBOSE);
- }
- }
-
- /**
- * Get array of names of newly defined classes.
- * @return array
- */
- protected function getNewClasses() {
- return $this->newClasses;
- }
-
- /**
- * Load the adhoc class, and perform any core validation.
- * @return string The classname of the ProjectComponent class.
- * @throws BuildException - if more than one class is defined.
- */
- protected function execute() {
- $classes = get_declared_classes();
- eval($this->script);
- $this->newClasses = array_diff(get_declared_classes(), $classes);
- }
-
- /**
- * Set the script.
- * @param string $script
- */
- public function addText($script) {
- $this->script = $script;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/AdhocTaskdefTask.php b/buildscripts/phing/classes/phing/tasks/system/AdhocTaskdefTask.php
deleted file mode 100755
index 03f80b27..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/AdhocTaskdefTask.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-
-/*
- * $Id: da14cd0fdc73a0eb13ecc8c0b5ae693550a052b1 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/AdhocTask.php';
-
-/**
- * A class for creating adhoc tasks in build file.
- *
- * <target name="test-adhoc">
- * <adhoc-task name="foo"><![CDATA[
- *
- * class FooTest extends Task {
- * private $bar;
- *
- * function setBar($bar) {
- * $this->bar = $bar;
- * }
- *
- * function main() {
- * $this->log("In FooTest: " . $this->bar);
- * }
- * }
- *
- * ]]></adhoc-task>
- *
- * <foo bar="B.L.I.N.G"/>
- * </target>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class AdhocTaskdefTask extends AdhocTask
-{
-
- /**
- * The tag that refers to this task.
- */
- private $name;
-
- /**
- * Set the tag that will represent this adhoc task/type.
- * @param string $name
- */
- public function setName($name)
- {
- $this->name = $name;
- }
-
- /** Main entry point */
- public function main()
- {
- if ($this->name === null)
- {
- throw new BuildException("The name attribute is required for adhoc task definition.",$this->location);
- }
-
- $taskdefs = $this->getProject()->getTaskDefinitions();
-
- if (!isset($taskdefs[$this->name]))
- {
- $this->execute();
-
- $classes = $this->getNewClasses();
-
- if (count($classes) < 1)
- {
- throw new BuildException("You must define at least one class for AdhocTaskdefTask.");
- }
-
- $classname = array_pop($classes);
-
- // instantiate it to make sure it is an instance of Task
- $t = new $classname();
- if (!($t instanceof Task))
- {
- throw new BuildException("The adhoc class you defined must be an instance of phing.Task", $this->location);
- }
-
- $this->log("Task " . $this->name . " will be handled by class " . $classname, Project::MSG_VERBOSE);
- $this->project->addTaskDefinition($this->name, $classname);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/AdhocTypedefTask.php b/buildscripts/phing/classes/phing/tasks/system/AdhocTypedefTask.php
deleted file mode 100755
index 80be2fc9..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/AdhocTypedefTask.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/*
- * $Id: 679ed701a01fef022a2da8ff5db16cff658b77e6 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/AdhocTask.php';
-
-/**
- * A class for creating adhoc datatypes in build file.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class AdhocTypedefTask extends AdhocTask {
-
- /**
- * The tag that refers to this task.
- */
- private $name;
-
- /**
- * Set the tag that will represent this adhoc task/type.
- * @param string $name
- */
- public function setName($name) {
- $this->name = $name;
- }
-
- /** Main entry point */
- public function main() {
-
- if ($this->name === null) {
- throw new BuildException("The name attribute is required for adhoc task definition.",$this->location);
- }
-
- $this->execute();
-
- $classes = $this->getNewClasses();
- if (count($classes) !== 1) {
- throw new BuildException("You must define one (and only one) class for AdhocTypedefTask.");
- }
- $classname = array_shift($classes);
-
- // instantiate it to make sure it is an instance of ProjectComponent
- $t = new $classname();
- if (!($t instanceof ProjectComponent)) {
- throw new BuildException("The adhoc class you defined must be an instance of phing.ProjectComponent", $this->location);
- }
-
- $this->log("Datatype " . $this->name . " will be handled by class " . $classname, Project::MSG_VERBOSE);
- $this->project->addDataTypeDefinition($this->name, $classname);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/AppendTask.php b/buildscripts/phing/classes/phing/tasks/system/AppendTask.php
deleted file mode 100755
index a7c4dcda..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/AppendTask.php
+++ /dev/null
@@ -1,240 +0,0 @@
-<?php
-/*
- * $Id: 056086ae305f5447baee1a4c7b1ad59ceb8cf50b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/types/FileList.php';
-include_once 'phing/types/FileSet.php';
-
-/**
- * Appends text, contents of a file or set of files defined by a filelist to a destination file.
- *
- * <code>
- * <append text="And another thing\n" destfile="badthings.log"/>
- * </code>
- * OR
- * <code>
- * <append file="header.html" destfile="fullpage.html"/>
- * <append file="body.html" destfile="fullpage.html"/>
- * <append file="footer.html" destfile="fullpage.html"/>
- * </code>
- * OR
- * <code>
- * <append destfile="${process.outputfile}">
- * <filterchain>
- * <xsltfilter style="${process.stylesheet}">
- * <param name="mode" expression="${process.xslt.mode}"/>
- * <param name="file_name" expression="%{task.append.current_file.basename}"/> <!-- Example of using a RegisterSlot variable -->
- * </xsltfilter>
- * </filterchain>
- * <filelist dir="book/" listfile="book/PhingGuide.book"/>
- * </append>
- * </code>
- * @package phing.tasks.system
- * @version $Id$
- */
-class AppendTask extends Task {
-
- /** Append stuff to this file. */
- private $to;
-
- /** Explicit file to append. */
- private $file;
-
- /** Any filesets of files that should be appended. */
- private $filesets = array();
-
- /** Any filelists of files that should be appended. */
- private $filelists = array();
-
- /** Any filters to be applied before append happens. */
- private $filterChains = array();
-
- /** Text to append. (cannot be used in conjunction w/ files or filesets) */
- private $text;
-
- /** Sets specific file to append. */
- function setFile(PhingFile $f) {
- $this->file = $f;
- }
-
- /**
- * Set target file to append to.
- * @deprecated Will be removed with final release.
- */
- function setTo(PhingFile $f) {
- $this->log("The 'to' attribute is deprecated in favor of 'destFile'; please update your code.", Project::MSG_WARN);
- $this->to = $f;
- }
-
- /**
- * The more conventional naming for method to set destination file.
- * @param PhingFile $f
- */
- function setDestFile(PhingFile $f) {
- $this->to = $f;
- }
-
- /**
- * Supports embedded <filelist> element.
- * @return FileList
- */
- function createFileList() {
- $num = array_push($this->filelists, new FileList());
- return $this->filelists[$num-1];
- }
-
- /**
- * Nested creator, adds a set of files (nested <fileset> attribute).
- * This is for when you don't care what order files get appended.
- * @return FileSet
- */
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Creates a filterchain
- *
- * @return FilterChain The created filterchain object
- */
- function createFilterChain() {
- $num = array_push($this->filterChains, new FilterChain($this->project));
- return $this->filterChains[$num-1];
- }
-
- /**
- * Sets text to append. (cannot be used in conjunction w/ files or filesets).
- * @param string $txt
- */
- function setText($txt) {
- $this->text = (string) $txt;
- }
-
- /**
- * Sets text to append. Supports CDATA.
- * @param string $txt
- */
- function addText($txt) {
- $this->text = (string) $txt;
- }
-
-
- /** Append the file(s). */
- function main() {
-
- if ($this->to === null) {
- throw new BuildException("You must specify the 'destFile' attribute");
- }
-
- if ($this->file === null && empty($this->filelists) && empty($this->filesets) && $this->text === null) {
- throw new BuildException("You must specify a file, use a filelist, or specify a text value.");
- }
-
- if ($this->text !== null && ($this->file !== null || !empty($this->filelists))) {
- throw new BuildException("Cannot use text attribute in conjunction with file or filelists.");
- }
-
- // create a filwriter to append to "to" file.
- $writer = new FileWriter($this->to, $append=true);
-
- if ($this->text !== null) {
-
- // simply append the text
- $this->log("Appending string to " . $this->to->getPath());
-
- // for debugging primarily, maybe comment
- // out for better performance(?)
- $lines = explode("\n", $this->text);
- foreach($lines as $line) {
- $this->log($line, Project::MSG_VERBOSE);
- }
-
- $writer->write($this->text);
-
- } else {
-
- // append explicitly-specified file
- if ($this->file !== null) {
- try {
- $this->appendFile($writer, $this->file);
- } catch (Exception $ioe) {
- $this->log("Unable to append contents of file " . $this->file->getAbsolutePath() . ": " . $ioe->getMessage(), Project::MSG_WARN);
- }
- }
-
- // append the files in the filelists
- foreach($this->filelists as $fl) {
- try {
- $files = $fl->getFiles($this->project);
- $this->appendFiles($writer, $files, $fl->getDir($this->project));
- } catch (BuildException $be) {
- $this->log($be->getMessage(), Project::MSG_WARN);
- }
- }
-
- // append any files in filesets
- foreach($this->filesets as $fs) {
- try {
- $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
- $this->appendFiles($writer, $files, $fs->getDir($this->project));
- } catch (BuildException $be) {
- $this->log($be->getMessage(), Project::MSG_WARN);
- }
- }
-
- } // if ($text ) {} else {}
-
- $writer->close();
- }
-
- /**
- * Append an array of files in a directory.
- * @param FileWriter $writer The FileWriter that is appending to target file.
- * @param array $files array of files to delete; can be of zero length
- * @param PhingFile $dir directory to work from
- */
- private function appendFiles(FileWriter $writer, $files, PhingFile $dir) {
- if (!empty($files)) {
- $this->log("Attempting to append " . count($files) . " files" .($dir !== null ? ", using basedir " . $dir->getPath(): ""));
- $basenameSlot = Register::getSlot("task.append.current_file");
- $pathSlot = Register::getSlot("task.append.current_file.path");
- foreach($files as $filename) {
- try {
- $f = new PhingFile($dir, $filename);
- $basenameSlot->setValue($filename);
- $pathSlot->setValue($f->getPath());
- $this->appendFile($writer, $f);
- } catch (Exception $ioe) {
- $this->log("Unable to append contents of file " . $f->getAbsolutePath() . ": " . $ioe->getMessage(), Project::MSG_WARN);
- }
- }
- } // if !empty
- }
-
- private function appendFile(FileWriter $writer, PhingFile $f) {
- $in = FileUtils::getChainedReader(new FileReader($f), $this->filterChains, $this->project);
- while(-1 !== ($buffer = $in->read())) { // -1 indicates EOF
- $writer->write($buffer);
- }
- $this->log("Appending contents of " . $f->getPath() . " to " . $this->to->getPath());
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/AvailableTask.php b/buildscripts/phing/classes/phing/tasks/system/AvailableTask.php
deleted file mode 100755
index bd5701e4..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/AvailableTask.php
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-/*
- * $Id: 7388bc66c9574987edd02ad3b2d6f14462f6b157 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/tasks/system/condition/ConditionBase.php';
-
-/**
- * <available> task.
- *
- * Note: implements condition interface (see condition/Condition.php)
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing.tasks.system
- */
-class AvailableTask extends Task {
-
- /** Property to check for. */
- private $property;
-
- /** Value property should be set to. */
- private $value = "true";
-
- /** Resource to check for */
- private $resource;
-
- private $type = null;
- private $filepath = null;
-
- private $followSymlinks = false;
-
- function setProperty($property) {
- $this->property = (string) $property;
- }
-
- function setValue($value) {
- $this->value = (string) $value;
- }
-
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- function setResource($resource) {
- $this->resource = (string) $resource;
- }
-
- function setType($type) {
- $this->type = (string) strtolower($type);
- }
-
- public function setFollowSymlinks($followSymlinks)
- {
- $this->followSymlinks = (bool) $followSymlinks;
- }
-
- /**
- * Set the path to use when looking for a file.
- *
- * @param Path $filepath a Path instance containing the search path for files.
- */
- public function setFilepath(Path $filepath) {
- if ($this->filepath === null) {
- $this->filepath = $filepath;
- } else {
- $this->filepath->append($filepath);
- }
- }
-
- /**
- * Creates a path to be configured
- *
- * @return Path
- */
- public function createFilepath() {
- if ($this->filepath === null) {
- $this->filepath = new Path($this->project);
- }
- return $this->filepath->createPath();
- }
-
- function main() {
- if ($this->property === null) {
- throw new BuildException("property attribute is required", $this->location);
- }
- if ($this->evaluate()) {
- $this->project->setProperty($this->property, $this->value);
- }
- }
-
- function evaluate() {
- if ($this->file === null && $this->resource === null) {
- throw new BuildException("At least one of (file|resource) is required", $this->location);
- }
-
- if ($this->type !== null && ($this->type !== "file" && $this->type !== "dir")) {
- throw new BuildException("Type must be one of either dir or file", $this->location);
- }
-
- if (($this->file !== null) && !$this->_checkFile()) {
- $this->log("Unable to find " . $this->file->__toString() . " to set property " . $this->property, Project::MSG_VERBOSE);
- return false;
- }
-
- if (($this->resource !== null) && !$this->_checkResource($this->resource)) {
- $this->log("Unable to load resource " . $this->resource . " to set property " . $this->property, Project::MSG_VERBOSE);
- return false;
- }
-
- return true;
- }
-
- // this is prepared for the path type
- private function _checkFile() {
- if ($this->filepath === null) {
- return $this->_checkFile1($this->file);
- } else {
- $paths = $this->filepath->listPaths();
- for($i=0,$pcnt=count($paths); $i < $pcnt; $i++) {
- $this->log("Searching " . $paths[$i], Project::MSG_VERBOSE);
- $tmp = new PhingFile($paths[$i], $this->file->getName());
- if($tmp->isFile()) {
- return true;
- }
- }
- }
- return false;
- }
-
- private function _checkFile1(PhingFile $file) {
- // Resolve symbolic links
- if ($this->followSymlinks && $file->isLink()) {
- $file = new PhingFile($file->getLinkTarget());
- }
-
- if ($this->type !== null) {
- if ($this->type === "dir") {
- return $file->isDirectory();
- } else if ($this->type === "file") {
- return $file->isFile();
- }
- }
- return $file->exists();
- }
-
- private function _checkResource($resource) {
- if (null != ($resourcePath = Phing::getResourcePath($resource))) {
- return $this->_checkFile1(new PhingFile($resourcePath));
- } else {
- return false;
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/ChmodTask.php b/buildscripts/phing/classes/phing/tasks/system/ChmodTask.php
deleted file mode 100755
index b2300459..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ChmodTask.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/*
- * $Id: fad30caf32ff1ee9ff98f63849d61053ab88f645 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/types/FileSet.php';
-
-/**
- * Task that changes the permissions on a file/directory.
- *
- * @author Manuel Holtgrewe <grin@gmx.net>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: fad30caf32ff1ee9ff98f63849d61053ab88f645 $
- * @package phing.tasks.system
- */
-class ChmodTask extends Task {
-
- private $file;
-
- private $mode;
-
- private $filesets = array();
-
- private $filesystem;
-
- private $quiet = false;
- private $failonerror = true;
- private $verbose = true;
-
- /**
- * This flag means 'note errors to the output, but keep going'
- * @see setQuiet()
- */
- function setFailonerror($bool) {
- $this->failonerror = $bool;
- }
-
- /**
- * Set quiet mode, which suppresses warnings if chmod() fails.
- * @see setFailonerror()
- */
- function setQuiet($bool) {
- $this->quiet = $bool;
- if ($this->quiet) {
- $this->failonerror = false;
- }
- }
-
- /**
- * Set verbosity, which if set to false surpresses all but an overview
- * of what happened.
- */
- function setVerbose($bool) {
- $this->verbose = (bool)$bool;
- }
-
- /**
- * Sets a single source file to touch. If the file does not exist
- * an empty file will be created.
- */
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- function setMode($str) {
- $this->mode = $str;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- */
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Execute the touch operation.
- * @return void
- */
- function main() {
- // Check Parameters
- $this->checkParams();
- $this->chmod();
- }
-
- /**
- * Ensure that correct parameters were passed in.
- * @return void
- */
- private function checkParams() {
-
- if ($this->file === null && empty($this->filesets)) {
- throw new BuildException("Specify at least one source - a file or a fileset.");
- }
-
- if ($this->mode === null) {
- throw new BuildException("You have to specify an octal mode for chmod.");
- }
-
- // check for mode to be in the correct format
- if (!preg_match('/^([0-7]){3,4}$/', $this->mode)) {
- throw new BuildException("You have specified an invalid mode.");
- }
-
- }
-
- /**
- * Does the actual work.
- * @return void
- */
- private function chmod() {
-
- if (strlen($this->mode) === 4) {
- $mode = octdec($this->mode);
- } else {
- // we need to prepend the 0 before converting
- $mode = octdec("0". $this->mode);
- }
-
- // counters for non-verbose output
- $total_files = 0;
- $total_dirs = 0;
-
- // one file
- if ($this->file !== null) {
- $total_files = 1;
- $this->chmodFile($this->file, $mode);
- }
-
- // filesets
- foreach($this->filesets as $fs) {
-
- $ds = $fs->getDirectoryScanner($this->project);
- $fromDir = $fs->getDir($this->project);
-
- $srcFiles = $ds->getIncludedFiles();
- $srcDirs = $ds->getIncludedDirectories();
-
- $filecount = count($srcFiles);
- $total_files = $total_files + $filecount;
- for ($j = 0; $j < $filecount; $j++) {
- $this->chmodFile(new PhingFile($fromDir, $srcFiles[$j]), $mode);
- }
-
- $dircount = count($srcDirs);
- $total_dirs = $total_dirs + $dircount;
- for ($j = 0; $j < $dircount; $j++) {
- $this->chmodFile(new PhingFile($fromDir, $srcDirs[$j]), $mode);
- }
- }
-
- if (!$this->verbose) {
- $this->log('Total files changed to ' . vsprintf('%o', $mode) . ': ' . $total_files);
- $this->log('Total directories changed to ' . vsprintf('%o', $mode) . ': ' . $total_dirs);
- }
-
- }
-
- /**
- * Actually change the mode for the file.
- * @param PhingFile $file
- * @param int $mode
- */
- private function chmodFile(PhingFile $file, $mode) {
- if ( !$file->exists() ) {
- throw new BuildException("The file " . $file->__toString() . " does not exist");
- }
-
- try {
- $file->setMode($mode);
- if ($this->verbose) {
- $this->log("Changed file mode on '" . $file->__toString() ."' to " . vsprintf("%o", $mode));
- }
- } catch (Exception $e) {
- if($this->failonerror) {
- throw $e;
- } else {
- $this->log($e->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/system/ChownTask.php b/buildscripts/phing/classes/phing/tasks/system/ChownTask.php
deleted file mode 100755
index 60b8105c..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ChownTask.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-/*
- * $Id: f7234abd52e7f80177f4b121436ae7276370993c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/types/FileSet.php';
-
-/**
- * Task that changes the permissions on a file/directory.
- *
- * @author Mehmet Emre Yilmaz <mehmety@gmail.com>
- * @version $Id: f7234abd52e7f80177f4b121436ae7276370993c $
- * @package phing.tasks.system
- */
-class ChownTask extends Task {
-
- private $file;
-
- private $user;
- private $group;
-
- private $filesets = array();
-
- private $filesystem;
-
- private $quiet = false;
- private $failonerror = true;
- private $verbose = true;
-
- /**
- * This flag means 'note errors to the output, but keep going'
- * @see setQuiet()
- */
- function setFailonerror($bool) {
- $this->failonerror = $bool;
- }
-
- /**
- * Set quiet mode, which suppresses warnings if chown() fails.
- * @see setFailonerror()
- */
- function setQuiet($bool) {
- $this->quiet = $bool;
- if ($this->quiet) {
- $this->failonerror = false;
- }
- }
-
- /**
- * Set verbosity, which if set to false surpresses all but an overview
- * of what happened.
- */
- function setVerbose($bool) {
- $this->verbose = (bool)$bool;
- }
-
- /**
- * Sets a single source file to touch. If the file does not exist
- * an empty file will be created.
- */
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * Sets the user
- */
- function setUser($user) {
- $this->user = $user;
- }
-
- /**
- * Sets the group
- */
- function setGroup($group) {
- $this->group = $group;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- */
- function addFileSet(FileSet $fs) {
- $this->filesets[] = $fs;
- }
-
- /**
- * Execute the touch operation.
- * @return void
- */
- function main() {
- // Check Parameters
- $this->checkParams();
- $this->chown();
- }
-
- /**
- * Ensure that correct parameters were passed in.
- * @return void
- */
- private function checkParams() {
-
- if ($this->file === null && empty($this->filesets)) {
- throw new BuildException("Specify at least one source - a file or a fileset.");
- }
-
- if ($this->user === null && $this->group === null) {
- throw new BuildException("You have to specify either an owner or a group for chown.");
- }
- }
-
- /**
- * Does the actual work.
- * @return void
- */
- private function chown() {
- $userElements = explode('.', $this->user);
-
- $user = $userElements[0];
-
- if (count($userElements) > 1) {
- $group = $userElements[1];
- } else {
- $group = $this->group;
- }
-
- // counters for non-verbose output
- $total_files = 0;
- $total_dirs = 0;
-
- // one file
- if ($this->file !== null) {
- $total_files = 1;
- $this->chownFile($this->file, $user, $group);
- }
-
- // filesets
- foreach($this->filesets as $fs) {
-
- $ds = $fs->getDirectoryScanner($this->project);
- $fromDir = $fs->getDir($this->project);
-
- $srcFiles = $ds->getIncludedFiles();
- $srcDirs = $ds->getIncludedDirectories();
-
- $filecount = count($srcFiles);
- $total_files = $total_files + $filecount;
- for ($j = 0; $j < $filecount; $j++) {
- $this->chownFile(new PhingFile($fromDir, $srcFiles[$j]), $user, $group);
- }
-
- $dircount = count($srcDirs);
- $total_dirs = $total_dirs + $dircount;
- for ($j = 0; $j < $dircount; $j++) {
- $this->chownFile(new PhingFile($fromDir, $srcDirs[$j]), $user, $group);
- }
- }
-
- if (!$this->verbose) {
- $this->log('Total files changed to ' . $user . ($group ? "." . $group : "") . ': ' . $total_files);
- $this->log('Total directories changed to ' . $user . ($group ? "." . $group : "") . ': ' . $total_dirs);
- }
-
- }
-
- /**
- * Actually change the mode for the file.
- * @param PhingFile $file
- * @param string $user
- * @param string $group
- */
- private function chownFile(PhingFile $file, $user, $group = "") {
- if ( !$file->exists() ) {
- throw new BuildException("The file " . $file->__toString() . " does not exist");
- }
-
- try {
- if (!empty($user)) {
- $file->setUser($user);
- }
-
- if (!empty($group)) {
- $file->setGroup($group);
- }
-
- if ($this->verbose) {
- $this->log("Changed file owner on '" . $file->__toString() ."' to " . $user . ($group ? "." . $group : ""));
- }
- } catch (Exception $e) {
- if($this->failonerror) {
- throw $e;
- } else {
- $this->log($e->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/tasks/system/ConditionTask.php b/buildscripts/phing/classes/phing/tasks/system/ConditionTask.php
deleted file mode 100755
index 040fff8a..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ConditionTask.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/*
- * $Id: 31dfd9d24212a4cf5afcce43a9ae337669bafc35 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-require_once 'phing/tasks/system/condition/ConditionBase.php';
-
-/**
- * <condition> task as a generalization of <available>
- *
- * <p>This task supports boolean logic as well as pluggable conditions
- * to decide, whether a property should be set.</p>
- *
- * <p>This task does not extend Task to take advantage of
- * ConditionBase.</p>
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.tasks.system
- */
-class ConditionTask extends ConditionBase {
-
- private $property;
- private $value = "true";
-
- /**
- * The name of the property to set. Required.
- */
- function setProperty($p) {
- $this->property = $p;
- }
-
- /**
- * The value for the property to set. Defaults to "true".
- */
- function setValue($v) {
- $this->value = $v;
- }
-
- /**
- * See whether our nested condition holds and set the property.
- */
- function main() {
-
- if ($this->countConditions() > 1) {
- throw new BuildException("You must not nest more than one condition into <condition>");
- }
- if ($this->countConditions() < 1) {
- throw new BuildException("You must nest a condition into <condition>");
- }
- $cs = $this->getIterator();
- if ($cs->current()->evaluate()) {
- $this->project->setProperty($this->property, $this->value);
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/CopyTask.php b/buildscripts/phing/classes/phing/tasks/system/CopyTask.php
deleted file mode 100755
index 2533bb95..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/CopyTask.php
+++ /dev/null
@@ -1,480 +0,0 @@
-<?php
-/*
- * $Id: 86322e73609da671413e4c959082958c16a510cc $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/util/FileUtils.php';
-include_once 'phing/util/SourceFileScanner.php';
-include_once 'phing/mappers/IdentityMapper.php';
-include_once 'phing/mappers/FlattenMapper.php';
-
-/**
- * A phing copy task. Copies a file or directory to a new file
- * or directory. Files are only copied if the source file is newer
- * than the destination file, or when the destination file does not
- * exist. It is possible to explictly overwrite existing files.
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id: 86322e73609da671413e4c959082958c16a510cc $
- * @package phing.tasks.system
- */
-class CopyTask extends Task {
-
- protected $file = null; // the source file (from xml attribute)
- protected $destFile = null; // the destiantion file (from xml attribute)
- protected $destDir = null; // the destination dir (from xml attribute)
- protected $overwrite = false; // overwrite destination (from xml attribute)
- protected $preserveLMT = false; // sync timestamps (from xml attribute)
- protected $includeEmpty = true; // include empty dirs? (from XML)
- protected $flatten = false; // apply the FlattenMapper right way (from XML)
- protected $mapperElement = null;
-
- protected $fileCopyMap = array(); // asoc array containing mapped file names
- protected $dirCopyMap = array(); // asoc array containing mapped file names
- protected $completeDirMap= array(); // asoc array containing complete dir names
- protected $fileUtils = null; // a instance of fileutils
- protected $filesets = array(); // all fileset objects assigned to this task
- protected $filelists = array(); // all filelist objects assigned to this task
- protected $filterChains = array(); // all filterchains objects assigned to this task
-
- protected $verbosity = Project::MSG_VERBOSE;
-
- protected $mode = 0755; // mode to create directories with
-
- protected $haltonerror = true; // stop build on errors
-
- /**
- * Sets up this object internal stuff. i.e. the Fileutils instance
- *
- * @return object The CopyTask instnace
- * @access public
- */
- function __construct() {
- $this->fileUtils = new FileUtils();
- }
-
- /**
- * Set the overwrite flag. IntrospectionHelper takes care of
- * booleans in set* methods so we can assume that the right
- * value (boolean primitive) is coming in here.
- *
- * @param boolean Overwrite the destination file(s) if it/they already exist
- * @return void
- * @access public
- */
- function setOverwrite($bool) {
- $this->overwrite = (boolean) $bool;
- }
-
- /**
- * Used to force listing of all names of copied files.
- * @param boolean $verbosity
- */
- function setVerbose($verbosity) {
- if ($verbosity) {
- $this->verbosity = Project::MSG_INFO;
- } else {
- $this->verbosity = Project::MSG_VERBOSE;
- }
- }
-
- /**
- * @see CopyTask::setPreserveLastModified
- */
- function setTstamp($bool) {
- $this->setPreserveLastModified($bool);
- }
-
- /**
- * Set the preserve timestamp flag. IntrospectionHelper takes care of
- * booleans in set* methods so we can assume that the right
- * value (boolean primitive) is coming in here.
- *
- * @param boolean Preserve the timestamp on the destination file
- * @return void
- * @access public
- */
- function setPreserveLastModified($bool) {
- $this->preserveLMT = (boolean) $bool;
- }
-
- /**
- * Set the include empty dirs flag. IntrospectionHelper takes care of
- * booleans in set* methods so we can assume that the right
- * value (boolean primitive) is coming in here.
- *
- * @param boolean Flag if empty dirs should be cpoied too
- * @return void
- * @access public
- */
- function setIncludeEmptyDirs($bool) {
- $this->includeEmpty = (boolean) $bool;
- }
-
-
- /**
- * Set the file. We have to manually take care of the
- * type that is coming due to limited type support in php
- * in and convert it manually if neccessary.
- *
- * @param string/object The source file. Either a string or an PhingFile object
- * @return void
- * @access public
- */
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
-
- /**
- * Set the toFile. We have to manually take care of the
- * type that is coming due to limited type support in php
- * in and convert it manually if neccessary.
- *
- * @param string/object The dest file. Either a string or an PhingFile object
- * @return void
- * @access public
- */
- function setTofile(PhingFile $file) {
- $this->destFile = $file;
- }
-
- /**
- * Sets the mode to create destination directories with (ignored on Windows).
- * Default mode is 0755.
- *
- * @param integer Octal mode
- * @return void
- * @access public
- */
- function setMode($mode) {
- $this->mode = (int) base_convert($mode, 8, 10);
- }
-
- /**
- * Set the toDir. We have to manually take care of the
- * type that is coming due to limited type support in php
- * in and convert it manually if neccessary.
- *
- * @param string/object The directory, either a string or an PhingFile object
- * @return void
- * @access public
- */
- function setTodir(PhingFile $dir) {
- $this->destDir = $dir;
- }
-
- /**
- * Set the haltonerror attribute - when true, will
- * make the build fail when errors are detected.
- *
- * @param boolean Flag if the build should be stopped on errors
- * @return void
- * @access public
- */
- function setHaltonerror($haltonerror) {
- $this->haltonerror = (boolean) $haltonerror;
- }
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @param FileSet $fileset Set of files to copy
- *
- * @return void
- */
- public function addFileSet(FileSet $fs) {
- $this->filesets[] = $fs;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- *
- * @access public
- * @return object The created filelist object
- */
- function createFileList() {
- $num = array_push($this->filelists, new FileList());
- return $this->filelists[$num-1];
- }
- /**
- * Creates a filterchain
- *
- * @access public
- * @return object The created filterchain object
- */
- function createFilterChain() {
- $num = array_push($this->filterChains, new FilterChain($this->project));
- return $this->filterChains[$num-1];
- }
-
- /**
- * Nested creator, creates one Mapper for this task
- *
- * @access public
- * @return object The created Mapper type object
- * @throws BuildException
- */
- function createMapper() {
- if ($this->mapperElement !== null) {
- throw new BuildException("Cannot define more than one mapper", $this->location);
- }
- $this->mapperElement = new Mapper($this->project);
- return $this->mapperElement;
- }
-
- /**
- * The main entry point where everything gets in motion.
- *
- * @access public
- * @return true on success
- * @throws BuildException
- */
- function main() {
-
- $this->validateAttributes();
-
- if ($this->file !== null) {
- if ($this->file->exists()) {
- if ($this->destFile === null) {
- $this->destFile = new PhingFile($this->destDir, (string) $this->file->getName());
- }
- if ($this->overwrite === true || ($this->file->lastModified() > $this->destFile->lastModified())) {
- $this->fileCopyMap[$this->file->getAbsolutePath()] = $this->destFile->getAbsolutePath();
- } else {
- $this->log($this->file->getName()." omitted, is up to date");
- }
- } else {
- // terminate build
- $this->logError("Could not find file " . $this->file->__toString() . " to copy.");
- }
- }
-
- $project = $this->getProject();
-
- // process filelists
- foreach($this->filelists as $fl) {
- $fromDir = $fl->getDir($project);
- $srcFiles = $fl->getFiles($project);
- $srcDirs = array($fl->getDir($project));
-
- if (!$this->flatten && $this->mapperElement === null)
- {
- $this->completeDirMap[$fromDir->getAbsolutePath()] = $this->destDir->getAbsolutePath();
- }
-
- $this->_scan($fromDir, $this->destDir, $srcFiles, $srcDirs);
- }
-
- // process filesets
- foreach($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $fromDir = $fs->getDir($project);
- $srcFiles = $ds->getIncludedFiles();
- $srcDirs = $ds->getIncludedDirectories();
-
- if (!$this->flatten && $this->mapperElement === null)
- {
- $this->completeDirMap[$fromDir->getAbsolutePath()] = $this->destDir->getAbsolutePath();
- }
-
- $this->_scan($fromDir, $this->destDir, $srcFiles, $srcDirs);
- }
-
- // go and copy the stuff
- $this->doWork();
-
- if ($this->destFile !== null) {
- $this->destDir = null;
- }
- }
-
- /**
- * Validates attributes coming in from XML
- *
- * @access private
- * @return void
- * @throws BuildException
- */
- protected function validateAttributes() {
-
- if ($this->file === null && count($this->filesets) === 0 && count($this->filelists) === 0) {
- throw new BuildException("CopyTask. Specify at least one source - a file, fileset or filelist.");
- }
-
- if ($this->destFile !== null && $this->destDir !== null) {
- throw new BuildException("Only one of destfile and destdir may be set.");
- }
-
- if ($this->destFile === null && $this->destDir === null) {
- throw new BuildException("One of destfile or destdir must be set.");
- }
-
- if ($this->file !== null && $this->file->exists() && $this->file->isDirectory()) {
- throw new BuildException("Use a fileset to copy directories.");
- }
-
- if ($this->destFile !== null && count($this->filesets) > 0) {
- throw new BuildException("Cannot concatenate multple files into a single file.");
- }
-
- if ($this->destFile !== null) {
- $this->destDir = new PhingFile($this->destFile->getParent());
- }
- }
-
- /**
- * Compares source files to destination files to see if they
- * should be copied.
- *
- * @access private
- * @return void
- */
- private function _scan(&$fromDir, &$toDir, &$files, &$dirs) {
- /* mappers should be generic, so we get the mappers here and
- pass them on to builMap. This method is not redundan like it seems */
- $mapper = null;
- if ($this->mapperElement !== null) {
- $mapper = $this->mapperElement->getImplementation();
- } else if ($this->flatten) {
- $mapper = new FlattenMapper();
- } else {
- $mapper = new IdentityMapper();
- }
- $this->buildMap($fromDir, $toDir, $files, $mapper, $this->fileCopyMap);
- $this->buildMap($fromDir, $toDir, $dirs, $mapper, $this->dirCopyMap);
- }
-
- /**
- * Builds a map of filenames (from->to) that should be copied
- *
- * @access private
- * @return void
- */
- private function buildMap(&$fromDir, &$toDir, &$names, &$mapper, &$map) {
- $toCopy = null;
- if ($this->overwrite) {
- $v = array();
- foreach($names as $name) {
- $result = $mapper->main($name);
- if ($result !== null) {
- $v[] = $name;
- }
- }
- $toCopy = $v;
- } else {
- $ds = new SourceFileScanner($this);
- $toCopy = $ds->restrict($names, $fromDir, $toDir, $mapper);
- }
-
- for ($i=0,$_i=count($toCopy); $i < $_i; $i++) {
- $src = new PhingFile($fromDir, $toCopy[$i]);
- $mapped = $mapper->main($toCopy[$i]);
- $dest = new PhingFile($toDir, $mapped[0]);
- $map[$src->getAbsolutePath()] = $dest->getAbsolutePath();
- }
- }
-
-
- /**
- * Actually copies the files
- *
- * @access private
- * @return void
- * @throws BuildException
- */
- protected function doWork() {
-
- // These "slots" allow filters to retrieve information about the currently-being-process files
- $fromSlot = $this->getRegisterSlot("currentFromFile");
- $fromBasenameSlot = $this->getRegisterSlot("currentFromFile.basename");
-
- $toSlot = $this->getRegisterSlot("currentToFile");
- $toBasenameSlot = $this->getRegisterSlot("currentToFile.basename");
-
- $mapSize = count($this->fileCopyMap);
- $total = $mapSize;
-
- // handle empty dirs if appropriate
- if ($this->includeEmpty) {
- $count = 0;
- foreach ($this->dirCopyMap as $srcdir => $destdir) {
- $s = new PhingFile((string) $srcdir);
- $d = new PhingFile((string) $destdir);
- if (!$d->exists()) {
- if (!$d->mkdirs()) {
- $this->logError("Unable to create directory " . $d->__toString());
- } else {
- if ($this->preserveLMT) {
- $d->setLastModified($s->lastModified());
- }
-
- $count++;
- }
- }
- }
- if ($count > 0) {
- $this->log("Created ".$count." empty director" . ($count == 1 ? "y" : "ies") . " in " . $this->destDir->getAbsolutePath());
- }
- }
-
- if ($mapSize > 0) {
- $this->log("Copying ".$mapSize." file".(($mapSize) === 1 ? '' : 's')." to ". $this->destDir->getAbsolutePath());
- // walks the map and actually copies the files
- $count=0;
- foreach($this->fileCopyMap as $from => $to) {
- if ($from === $to) {
- $this->log("Skipping self-copy of " . $from, $this->verbosity);
- $total--;
- continue;
- }
- $this->log("From ".$from." to ".$to, $this->verbosity);
- try { // try to copy file
-
- $fromFile = new PhingFile($from);
- $toFile = new PhingFile($to);
-
- $fromSlot->setValue($fromFile->getPath());
- $fromBasenameSlot->setValue($fromFile->getName());
-
- $toSlot->setValue($toFile->getPath());
- $toBasenameSlot->setValue($toFile->getName());
-
- $this->fileUtils->copyFile($fromFile, $toFile, $this->overwrite, $this->preserveLMT, $this->filterChains, $this->getProject(), $this->mode);
-
- $count++;
- } catch (IOException $ioe) {
- $this->logError("Failed to copy " . $from . " to " . $to . ": " . $ioe->getMessage());
- }
- }
- }
- }
-
- protected function logError($message, $location = NULL)
- {
- if ($this->haltonerror) {
- throw new BuildException($message, $location);
- } else {
- $this->log($message, Project::MSG_ERR);
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/CvsPassTask.php b/buildscripts/phing/classes/phing/tasks/system/CvsPassTask.php
deleted file mode 100755
index 87a9b63c..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/CvsPassTask.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-/*
- * $Id: c1e02a8d43f62c584ba2f1cd5a6f0cc690bceb94 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/system/io/BufferedReader.php';
-include_once 'phing/system/io/BufferedWriter.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * Adds an new entry to a CVS password file.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Jeff Martin <jeff@custommonkey.org> (Ant)
- * @version $Id$
- * @package phing.tasks.system
- */
-class CVSPassTask extends Task {
-
- /** CVS Root */
- private $cvsRoot;
- /** Password file to add password to */
- private $passFile;
- /** Password to add to file */
- private $password;
-
- /** Array contain char conversion data */
- private static $shifts = array(
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 114, 120, 53, 79, 96, 109, 72, 108, 70, 64, 76, 67, 116, 74, 68, 87,
- 111, 52, 75, 119, 49, 34, 82, 81, 95, 65, 112, 86, 118, 110, 122, 105,
- 41, 57, 83, 43, 46, 102, 40, 89, 38, 103, 45, 50, 42, 123, 91, 35,
- 125, 55, 54, 66, 124, 126, 59, 47, 92, 71, 115, 78, 88, 107, 106, 56,
- 36, 121, 117, 104, 101, 100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48,
- 58, 113, 32, 90, 44, 98, 60, 51, 33, 97, 62, 77, 84, 80, 85, 223,
- 225, 216, 187, 166, 229, 189, 222, 188, 141, 249, 148, 200, 184, 136, 248, 190,
- 199, 170, 181, 204, 138, 232, 218, 183, 255, 234, 220, 247, 213, 203, 226, 193,
- 174, 172, 228, 252, 217, 201, 131, 230, 197, 211, 145, 238, 161, 179, 160, 212,
- 207, 221, 254, 173, 202, 146, 224, 151, 140, 196, 205, 130, 135, 133, 143, 246,
- 192, 159, 244, 239, 185, 168, 215, 144, 139, 165, 180, 157, 147, 186, 214, 176,
- 227, 231, 219, 169, 175, 156, 206, 198, 129, 164, 150, 210, 154, 177, 134, 127,
- 182, 128, 158, 208, 162, 132, 167, 209, 149, 241, 153, 251, 237, 236, 171, 195,
- 243, 233, 253, 240, 194, 250, 191, 155, 142, 137, 245, 235, 163, 242, 178, 152
- );
-
- /**
- * Create a CVS task using the default cvspass file location.
- */
- public function __construct() {
- $this->passFile = new PhingFile(
- Phing::getProperty("cygwin.user.home",
- Phing::getProperty("user.home"))
- . DIRECTORY_SEPARATOR . ".cvspass");
- }
-
- /**
- * Does the work.
- *
- * @throws BuildException if someting goes wrong with the build
- */
- public final function main() {
- if ($this->cvsRoot === null) {
- throw new BuildException("cvsroot is required");
- }
- if ($this->password === null) {
- throw new BuildException("password is required");
- }
-
- $this->log("cvsRoot: " . $this->cvsRoot, Project::MSG_DEBUG);
- $this->log("password: " . $this->password, Project::MSG_DEBUG);
- $this->log("passFile: " . $this->passFile->__toString(), Project::MSG_DEBUG);
-
- $reader = null;
- $writer = null;
-
- try {
- $buf = "";
-
- if ($this->passFile->exists()) {
- $reader = new BufferedReader(new FileReader($this->passFile));
-
- $line = null;
- while (($line = $reader->readLine()) !== null) {
- if (!StringHelper::startsWith($this->cvsRoot, $line)) {
- $buf .= $line . PHP_EOL;
- }
- }
- }
-
- $pwdfile = $buf . $this->cvsRoot . " A" . $this->mangle($this->password);
-
- $this->log("Writing -> " . $pwdfile , Project::MSG_DEBUG);
-
- $writer = new BufferedWriter(new FileWriter($this->passFile));
- $writer->write($pwdfile);
- $writer->newLine();
-
- $writer->close();
- if ($reader) {
- $reader->close();
- }
-
- } catch (IOException $e) {
- if ($reader) {
- try {
- $reader->close();
- } catch (Exception $e) {}
- }
-
- if ($writer) {
- try {
- $writer->close();
- } catch (Exception $e) {}
- }
-
- throw new BuildException($e);
- }
- }
-
- /**
- * "Encode" the password.
- */
- private final function mangle($password){
- $buf = "";
- for ($i = 0, $plen = strlen($password); $i < $plen; $i++) {
- $buf .= chr(self::$shifts[ord($password{$i})]);
- }
- return $buf;
- }
-
- /**
- * The CVS repository to add an entry for.
- * @param string $cvsRoot
- */
- public function setCvsroot($cvsRoot) {
- $this->cvsRoot = $cvsRoot;
- }
-
- /**
- * Password file to add the entry to.
- * @param PhingFile $passFile
- */
- public function setPassfile(PhingFile $passFile) {
- $this->passFile = $passFile;
- }
-
- /**
- * Password to be added to the password file.
- * @param string $password
- */
- public function setPassword($password) {
- $this->password = $password;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/CvsTask.php b/buildscripts/phing/classes/phing/tasks/system/CvsTask.php
deleted file mode 100755
index 3c12a597..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/CvsTask.php
+++ /dev/null
@@ -1,540 +0,0 @@
-<?php
-/*
- * $Id: 642c6947fa58e02a8c7893c8c4dfab2debfdd51d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/tasks/system/ExecTask.php';
-include_once 'phing/types/Commandline.php';
-
-/**
- * Task for performing CVS operations.
- *
- * NOTE: This implementation has been moved here from Cvs.java with
- * the addition of some accessors for extensibility. Another task
- * can extend this with some customized output processing.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author costin@dnt.ro (Ant)
- * @author stefano@apache.org (Ant)
- * @author Wolfgang Werner <wwerner@picturesafe.de> (Ant)
- * @author Kevin Ross <kevin.ross@bredex.com> (Ant)
- * @version $Id: 642c6947fa58e02a8c7893c8c4dfab2debfdd51d $
- * @package phing.tasks.system
- */
-class CvsTask extends Task {
-
- /**
- * Default compression level to use, if compression is enabled via
- * setCompression( true ).
- */
- const DEFAULT_COMPRESSION_LEVEL = 3;
-
- private $cmd;
-
- /**
- * List of Commandline children
- * @var array Commandline[]
- */
- private $commandlines = array();
-
- /**
- * the CVSROOT variable.
- */
- private $cvsRoot;
-
- /**
- * the CVS_RSH variable.
- */
- private $cvsRsh;
-
- /**
- * the package/module to check out.
- */
- private $cvsModule;
-
- /**
- * the default command.
- */
- private static $default_command = "checkout";
-
- /**
- * the CVS command to execute.
- */
- private $command = null;
-
- /**
- * suppress information messages.
- */
- private $quiet = false;
-
- /**
- * compression level to use.
- */
- private $compression = 0;
-
- /**
- * report only, don't change any files.
- */
- private $noexec = false;
-
- /**
- * CVS port
- */
- private $port = 0;
-
- /**
- * CVS password file
- * @var File
- */
- private $passFile = null;
-
- /**
- * the directory where the checked out files should be placed.
- * @var File
- */
- private $dest;
-
- private $error;
-
- private $output;
-
- /**
- * If true it will stop the build if cvs exits with error.
- * Default is false. (Iulian)
- * @var boolean
- */
- private $failOnError = false;
-
- public function init() {
- $this->cmd = new Commandline();
- }
-
- /**
- * Sets up the environment for toExecute and then runs it.
- * @param Commandline $toExecute
- * @throws BuildException
- */
- protected function runCommand(Commandline $toExecute) {
-
- // We are putting variables into the script's environment
- // and not removing them (!) This should be fine, but is
- // worth remembering and testing.
-
- if ($this->port > 0) {
- putenv("CVS_CLIENT_PORT=".$this->port);
- }
-
- // Need a better cross platform integration with <cvspass>, so
- // use the same filename.
-
- if ($this->passFile === null) {
- $defaultPassFile = new PhingFile(Phing::getProperty("cygwin.user.home", Phing::getProperty("user.home"))
- . DIRECTORY_SEPARATOR . ".cvspass");
- if($defaultPassFile->exists()) {
- $this->setPassfile($defaultPassFile);
- }
- }
-
- if ($this->passFile !== null) {
- if ($this->passFile->isFile() && $this->passFile->canRead()) {
- putenv("CVS_PASSFILE=" . $this->passFile->__toString());
- $this->log("Using cvs passfile: " . $this->passFile->__toString(), Project::MSG_INFO);
- } elseif (!$this->passFile->canRead()) {
- $this->log("cvs passfile: " . $this->passFile->__toString()
- . " ignored as it is not readable", Project::MSG_WARN);
- } else {
- $this->log("cvs passfile: " . $this->passFile->__toString()
- . " ignored as it is not a file",
- Project::MSG_WARN);
- }
- }
-
- if ($this->cvsRsh !== null) {
- putenv("CVS_RSH=".$this->cvsRsh);
- }
-
- // Use the ExecTask to handle execution of the command
- $exe = new ExecTask($this->project);
- $exe->setProject($this->project);
-
- //exe.setAntRun(project);
- if ($this->dest === null) {
- $this->dest = $this->project->getBaseDir();
- }
-
- if (!$this->dest->exists()) {
- $this->dest->mkdirs();
- }
-
- if ($this->output !== null) {
- $exe->setOutput($this->output);
- }
-
- if ($this->error !== null) {
- $exe->setError($this->error);
- }
-
- $exe->setDir($this->dest);
-
- if (is_object($toExecute)) {
- $toExecuteStr = $toExecute->__toString(); // unfortunately no more automagic for initial 5.0.0 release :(
- }
-
- $exe->setCommand($toExecuteStr);
-
- try {
- $actualCommandLine = $toExecuteStr; // we converted to string above
- $this->log($actualCommandLine, Project::MSG_INFO);
- $retCode = $exe->main();
- $this->log("retCode=" . $retCode, Project::MSG_DEBUG);
- /*Throw an exception if cvs exited with error. (Iulian)*/
- if ($this->failOnError && $retCode !== 0) {
- throw new BuildException("cvs exited with error code "
- . $retCode
- . PHP_EOL
- . "Command line was ["
- . $toExecute->describeCommand() . "]", $this->getLocation());
- }
- } catch (IOException $e) {
- if ($this->failOnError) {
- throw new BuildException($e, $this->getLocation());
- } else {
- $this->log("Caught exception: " . $e, Project::MSG_WARN);
- }
- } catch (BuildException $e) {
- if ($this->failOnError) {
- throw $e;
- } else {
- $t = $e->getCause();
- if ($t === null) {
- $t = $e;
- }
- $this->log("Caught exception: " . $t, Project::MSG_WARN);
- }
- } catch (Exception $e) {
- if ($this->failOnError) {
- throw new BuildException($e, $this->getLocation());
- } else {
- $this->log("Caught exception: " . $e, Project::MSG_WARN);
- }
- }
- }
-
- /**
- *
- * @return void
- * @throws BuildException
- */
- public function main() {
-
- $savedCommand = $this->getCommand();
-
- if ($this->getCommand() === null && empty($this->commandlines)) {
- // re-implement legacy behaviour:
- $this->setCommand(self::$default_command);
- }
-
- $c = $this->getCommand();
- $cloned = null;
- if ($c !== null) {
- $cloned = $this->cmd->__copy();
- $cloned->createArgument(true)->setLine($c);
- $this->addConfiguredCommandline($cloned, true);
- }
-
- try {
- for ($i = 0, $vecsize=count($this->commandlines); $i < $vecsize; $i++) {
- $this->runCommand($this->commandlines[$i]);
- }
-
- // finally {
- if ($cloned !== null) {
- $this->removeCommandline($cloned);
- }
- $this->setCommand($savedCommand);
-
- } catch (Exception $e) {
- // finally {
- if ($cloned !== null) {
- $this->removeCommandline($cloned);
- }
- $this->setCommand($savedCommand);
- throw $e;
- }
- }
-
- /**
- * The CVSROOT variable.
- *
- * @param string $root
- */
- public function setCvsRoot($root) {
-
- // Check if not real cvsroot => set it to null
- if ($root !== null) {
- if (trim($root) == "") {
- $root = null;
- }
- }
-
- $this->cvsRoot = $root;
- }
-
- public function getCvsRoot() {
- return $this->cvsRoot;
- }
-
- /**
- * The CVS_RSH variable.
- *
- * @param rsh
- */
- public function setCvsRsh($rsh) {
- // Check if not real cvsrsh => set it to null
- if ($rsh !== null) {
- if (trim($rsh) == "") {
- $rsh = null;
- }
- }
-
- $this->cvsRsh = $rsh;
- }
-
- public function getCvsRsh() {
- return $this->cvsRsh;
- }
-
- /**
- * Port used by CVS to communicate with the server.
- *
- * @param int $port
- */
- public function setPort($port){
- $this->port = $port;
- }
-
- /**
- * @return int
- */
- public function getPort() {
- return $this->port;
- }
-
- /**
- * Password file to read passwords from.
- *
- * @param passFile
- */
- public function setPassfile(PhingFile $passFile) {
- $this->passFile = $passFile;
- }
-
- /**
- * @return File
- */
- public function getPassFile() {
- return $this->passFile;
- }
-
- /**
- * The directory where the checked out files should be placed.
- *
- * @param PhingFile $dest
- */
- public function setDest(PhingFile $dest) {
- $this->dest = $dest;
- }
-
- public function getDest() {
- return $this->dest;
- }
-
- /**
- * The package/module to operate upon.
- *
- * @param string $p
- */
- public function setModule($m) {
- $this->cvsModule = $m;
- }
-
- public function getModule(){
- return $this->cvsModule;
- }
-
- /**
- * The tag of the package/module to operate upon.
- * @param string $p
- */
- public function setTag($p) {
- // Check if not real tag => set it to null
- if ($p !== null && trim($p) !== "") {
- $this->appendCommandArgument("-r");
- $this->appendCommandArgument($p);
- }
- }
-
- /**
- * This needs to be public to allow configuration
- * of commands externally.
- */
- public function appendCommandArgument($arg) {
- $this->cmd->createArgument()->setValue($arg);
- }
-
- /**
- * Use the most recent revision no later than the given date.
- * @param p
- */
- public function setDate($p) {
- if ($p !== null && trim($p) !== "") {
- $this->appendCommandArgument("-D");
- $this->appendCommandArgument($p);
- }
- }
-
- /**
- * The CVS command to execute.
- * @param string $c
- */
- public function setCommand($c) {
- $this->command = $c;
- }
-
- public function getCommand() {
- return $this->command;
- }
-
- /**
- * If true, suppress informational messages.
- * @param boolean $q
- */
- public function setQuiet($q) {
- $this->quiet = $q;
- }
-
- /**
- * If true, report only and don't change any files.
- *
- * @param boolean $ne
- */
- public function setNoexec($ne) {
- $this->noexec = (boolean) $ne;
- }
-
- /**
- * Stop the build process if the command exits with
- * a return code other than 0.
- * Defaults to false.
- * @param boolean $failOnError
- */
- public function setFailOnError($failOnError) {
- $this->failOnError = (boolean) $failOnError;
- }
-
- /**
- * Configure a commandline element for things like cvsRoot, quiet, etc.
- * @return string
- */
- protected function configureCommandline($c) {
- if ($c === null) {
- return;
- }
- $c->setExecutable("cvs");
-
- if ($this->cvsModule !== null) {
- $c->createArgument()->setLine($this->cvsModule);
- }
- if ($this->compression > 0 && $this->compression < 10) {
- $c->createArgument(true)->setValue("-z" . $this->compression);
- }
- if ($this->quiet) {
- $c->createArgument(true)->setValue("-q");
- }
- if ($this->noexec) {
- $c->createArgument(true)->setValue("-n");
- }
- if ($this->cvsRoot !== null) {
- $c->createArgument(true)->setLine("-d" . $this->cvsRoot);
- }
- }
-
- protected function removeCommandline(Commandline $c) {
- $idx = array_search($c, $this->commandlines, true);
- if ($idx === false) {
- return false;
- }
- $this->commandlines = array_splice($this->commandlines, $idx, 1);
- return true;
- }
-
- /**
- * Configures and adds the given Commandline.
- * @param insertAtStart If true, c is
- */
- public function addConfiguredCommandline(Commandline $c, $insertAtStart = false) {
- if ($c === null) {
- return;
- }
- $this->configureCommandline($c);
- if ($insertAtStart) {
- array_unshift($this->commandlines, $c);
- } else {
- array_push($this->commandlines, $c);
- }
- }
-
- /**
- * If set to a value 1-9 it adds -zN to the cvs command line, else
- * it disables compression.
- * @param int $level
- */
- public function setCompressionLevel($level) {
- $this->compression = $level;
- }
-
- /**
- * If true, this is the same as compressionlevel="3".
- *
- * @param boolean $usecomp If true, turns on compression using default
- * level, AbstractCvsTask.DEFAULT_COMPRESSION_LEVEL.
- */
- public function setCompression($usecomp) {
- $this->setCompressionLevel($usecomp ?
- self::DEFAULT_COMPRESSION_LEVEL : 0);
- }
-
- /**
- * File to which output should be written.
- * @param PhingFile $output
- */
- function setOutput(PhingFile $f) {
- $this->output = $f;
- }
-
- /**
- * File to which error output should be written.
- * @param PhingFile $output
- */
- function setError(PhingFile $f) {
- $this->error = $f;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/DeleteTask.php b/buildscripts/phing/classes/phing/tasks/system/DeleteTask.php
deleted file mode 100755
index 8af8a632..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/DeleteTask.php
+++ /dev/null
@@ -1,276 +0,0 @@
-<?php
-/*
- * $Id: f25fc4c605ead65db9235c9fe328b2d47b7c8299 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Deletes a file or directory, or set of files defined by a fileset.
- *
- * @version $Id: f25fc4c605ead65db9235c9fe328b2d47b7c8299 $
- * @package phing.tasks.system
- */
-class DeleteTask extends Task {
-
- protected $file;
- protected $dir;
- protected $filesets = array();
- protected $includeEmpty = false;
-
- protected $quiet = false;
- protected $failonerror = true;
- protected $verbosity = Project::MSG_VERBOSE;
-
- /** Any filelists of files that should be deleted. */
- private $filelists = array();
-
- /**
- * Set the name of a single file to be removed.
- * @param PhingFile $file
- */
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * Set the directory from which files are to be deleted.
- * @param PhingFile $dir
- */
- function setDir(PhingFile $dir) {
- $this->dir = $dir;
- }
-
- /**
- * Used to force listing of all names of deleted files.
- * @param boolean $verbosity
- */
- function setVerbose($verbosity) {
- if ($verbosity) {
- $this->verbosity = Project::MSG_INFO;
- } else {
- $this->verbosity = Project::MSG_VERBOSE;
- }
- }
-
- /**
- * If the file does not exist, do not display a diagnostic
- * message or modify the exit status to reflect an error.
- * This means that if a file or directory cannot be deleted,
- * then no error is reported. This setting emulates the
- * -f option to the Unix rm command. Default is false
- * meaning things are verbose
- */
- function setQuiet($bool) {
- $this->quiet = $bool;
- if ($this->quiet) {
- $this->failonerror = false;
- }
- }
-
- /** this flag means 'note errors to the output, but keep going' */
- function setFailOnError($bool) {
- $this->failonerror = $bool;
- }
-
-
- /** Used to delete empty directories.*/
- function setIncludeEmptyDirs($includeEmpty) {
- $this->includeEmpty = (boolean) $includeEmpty;
- }
-
- /** Nested creator, adds a set of files (nested fileset attribute). */
- function addFileSet(FileSet $fs) {
- $this->filesets[] = $fs;
- }
-
- /** Nested creator, adds a set of files (nested fileset attribute). */
- function createFileList() {
- $num = array_push($this->filelists, new FileList());
- return $this->filelists[$num-1];
- }
-
- /** Delete the file(s). */
- function main() {
- if ($this->file === null && $this->dir === null && count($this->filesets) === 0 && count($this->filelists) === 0) {
- throw new BuildException("At least one of the file or dir attributes, or a fileset element, or a filelist element must be set.");
- }
-
- if ($this->quiet && $this->failonerror) {
- throw new BuildException("quiet and failonerror cannot both be set to true", $this->location);
- }
-
- // delete a single file
- if ($this->file !== null) {
- if ($this->file->exists()) {
- if ($this->file->isDirectory()) {
- $this->log("Directory " . $this->file->__toString() . " cannot be removed using the file attribute. Use dir instead.");
- } else {
- $this->log("Deleting: " . $this->file->__toString());
- try {
- $this->file->delete();
- } catch(Exception $e) {
- $message = "Unable to delete file " . $this->file->__toString() .": " .$e->getMessage();
- if($this->failonerror) {
- throw new BuildException($message);
- } else {
- $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
- } else {
- $this->log("Could not find file " . $this->file->getAbsolutePath() . " to delete.",Project::MSG_VERBOSE);
- }
- }
-
- // delete the directory
- if ($this->dir !== null && $this->dir->exists() && $this->dir->isDirectory()) {
- if ($this->verbosity === Project::MSG_VERBOSE) {
- $this->log("Deleting directory " . $this->dir->__toString());
- }
- $this->removeDir($this->dir);
- }
-
- // delete the files in the filelists
- foreach($this->filelists as $fl) {
- try {
- $files = $fl->getFiles($this->project);
- $this->removeFiles($fl->getDir($this->project), $files, $empty=array());
- } catch (BuildException $be) {
- // directory doesn't exist or is not readable
- if ($this->failonerror) {
- throw $be;
- } else {
- $this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
-
- // delete the files in the filesets
- foreach($this->filesets as $fs) {
- try {
- $ds = $fs->getDirectoryScanner($this->project);
- $files = $ds->getIncludedFiles();
- $dirs = $ds->getIncludedDirectories();
- $this->removeFiles($fs->getDir($this->project), $files, $dirs);
- } catch (BuildException $be) {
- // directory doesn't exist or is not readable
- if ($this->failonerror) {
- throw $be;
- } else {
- $this->log($be->getMessage(), $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
- }
-
- /**
- * Recursively removes a directory.
- * @param PhingFile $d The directory to remove.
- */
- private function removeDir($d) {
- $list = $d->listDir();
- if ($list === null) {
- $list = array();
- }
-
- foreach($list as $s) {
- $f = new PhingFile($d, $s);
- if ($f->isDirectory()) {
- $this->removeDir($f);
- } else {
- $this->log("Deleting " . $f->__toString(), $this->verbosity);
- try {
- $f->delete();
- } catch (Exception $e) {
- $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage();
- if($this->failonerror) {
- throw new BuildException($message);
- } else {
- $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
- }
- $this->log("Deleting directory " . $d->getAbsolutePath(), $this->verbosity);
- try {
- $d->delete();
- } catch (Exception $e) {
- $message = "Unable to delete directory " . $d->__toString() . ": " . $e->getMessage();
- if($this->failonerror) {
- throw new BuildException($message);
- } else {
- $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
-
- /**
- * remove an array of files in a directory, and a list of subdirectories
- * which will only be deleted if 'includeEmpty' is true
- * @param PhingFile $d directory to work from
- * @param array &$files array of files to delete; can be of zero length
- * @param array &$dirs array of directories to delete; can of zero length
- */
- private function removeFiles(PhingFile $d, &$files, &$dirs) {
- if (count($files) > 0) {
- $this->log("Deleting " . count($files) . " files from " . $d->__toString());
- for ($j=0,$_j=count($files); $j < $_j; $j++) {
- $f = new PhingFile($d, $files[$j]);
- $this->log("Deleting " . $f->getAbsolutePath(), $this->verbosity);
- try {
- $f->delete();
- } catch (Exception $e) {
- $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage();
- if($this->failonerror) {
- throw new BuildException($message);
- } else {
- $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
-
- }
- }
-
- if (count($dirs) > 0 && $this->includeEmpty) {
- $dirCount = 0;
- for ($j=count($dirs)-1; $j>=0; --$j) {
- $dir = new PhingFile($d, $dirs[$j]);
- $dirFiles = $dir->listDir();
- if ($dirFiles === null || count($dirFiles) === 0) {
- $this->log("Deleting " . $dir->__toString(), $this->verbosity);
- try {
- $dir->delete();
- $dirCount++;
- } catch (Exception $e) {
- $message="Unable to delete directory " . $dir->__toString();
- if($this->failonerror) {
- throw new BuildException($message);
- } else {
- $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN);
- }
- }
- }
- }
- if ($dirCount > 0) {
- $this->log("Deleted $dirCount director" . ($dirCount==1 ? "y" : "ies") . " from " . $d->__toString());
- }
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/EchoTask.php b/buildscripts/phing/classes/phing/tasks/system/EchoTask.php
deleted file mode 100755
index edc098c4..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/EchoTask.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-/*
- * $Id: c5ebadd12256533d9ca4d6fb6cabd50415bdddbf $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/Task.php';
-
-/**
- * Echos a message to the logging system or to a file
- *
- * @author Michiel Rook <mrook@php.net>
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id$
- * @package phing.tasks.system
- */
-
-class EchoTask extends Task {
-
- protected $msg = "";
-
- protected $file = "";
-
- protected $append = false;
-
- protected $level = "info";
-
- protected $filesets = array();
-
- function main() {
- switch ($this->level)
- {
- case "error": $loglevel = Project::MSG_ERR; break;
- case "warning": $loglevel = Project::MSG_WARN; break;
- case "info": $loglevel = Project::MSG_INFO; break;
- case "verbose": $loglevel = Project::MSG_VERBOSE; break;
- case "debug": $loglevel = Project::MSG_DEBUG; break;
- }
-
- if (count($this->filesets)) {
- if (trim(substr($this->msg, -1)) != '') {
- $this->msg .= "\n";
- }
- $this->msg .= $this->getFilesetsMsg();
- }
-
- if (empty($this->file))
- {
- $this->log($this->msg, $loglevel);
- }
- else
- {
- if ($this->append)
- {
- $handle = fopen($this->file, "a");
- }
- else
- {
- $handle = fopen($this->file, "w");
- }
-
- fwrite($handle, $this->msg);
-
- fclose($handle);
- }
- }
-
- /**
- * Merges all filesets into a string to be echoed out
- *
- * @return string String to echo
- */
- protected function getFilesetsMsg()
- {
- $project = $this->getProject();
- $msg = '';
- foreach ($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($project);
- $fromDir = $fs->getDir($project);
- $srcFiles = $ds->getIncludedFiles();
- $msg .= 'Directory: ' . $fromDir . ' => '
- . realpath($fromDir) . "\n";
- foreach ($srcFiles as $file) {
- $relPath = $fromDir . DIRECTORY_SEPARATOR . $file;
- $msg .= $relPath . "\n";
- }
- }
-
- return $msg;
- }
-
- /** setter for file */
- function setFile($file)
- {
- $this->file = (string) $file;
- }
-
- /** setter for level */
- function setLevel($level)
- {
- $this->level = (string) $level;
- }
-
- /** setter for append */
- function setAppend($append)
- {
- $this->append = $append;
- }
-
- /** setter for message */
- function setMsg($msg) {
- $this->setMessage($msg);
- }
-
- /** alias setter */
- function setMessage($msg) {
- $this->msg = (string) $msg;
- }
-
- /** Supporting the <echo>Message</echo> syntax. */
- function addText($msg)
- {
- $this->msg = (string) $msg;
- }
-
- /**
- * Adds a fileset to echo the files of
- *
- * @param FileSet $fs Set of files to echo
- *
- * @return void
- */
- public function addFileSet(FileSet $fs)
- {
- $this->filesets[] = $fs;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/ExecTask.php b/buildscripts/phing/classes/phing/tasks/system/ExecTask.php
deleted file mode 100755
index f5a57948..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ExecTask.php
+++ /dev/null
@@ -1,516 +0,0 @@
-<?php
-
-/**
- * $Id: 3101d1403eeb4fe4fe8bae729b7d918b303de1cf $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Executes a command on the shell.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Christian Weiske <cweiske@cweiske.de>
- * @version $Id: 3101d1403eeb4fe4fe8bae729b7d918b303de1cf $
- * @package phing.tasks.system
- */
-class ExecTask extends Task
-{
-
- /**
- * Command to execute.
- * @var string
- */
- protected $command;
-
- /**
- * Commandline managing object
- *
- * @var Commandline
- */
- protected $commandline;
-
- /**
- * Working directory.
- * @var PhingFile
- */
- protected $dir;
-
- /**
- * Operating system.
- * @var string
- */
- protected $os;
-
- /**
- * Whether to escape shell command using escapeshellcmd().
- * @var boolean
- */
- protected $escape = false;
-
- /**
- * Where to direct output.
- * @var File
- */
- protected $output;
-
- /**
- * Whether to use PHP's passthru() function instead of exec()
- * @var boolean
- */
- protected $passthru = false;
-
- /**
- * Whether to log returned output as MSG_INFO instead of MSG_VERBOSE
- * @var boolean
- */
- protected $logOutput = false;
-
- /**
- * Logging level for status messages
- * @var integer
- */
- protected $logLevel = Project::MSG_VERBOSE;
-
- /**
- * Where to direct error output.
- * @var File
- */
- protected $error;
-
- /**
- * If spawn is set then [unix] programs will redirect stdout and add '&'.
- * @var boolean
- */
- protected $spawn = false;
-
- /**
- * Property name to set with return value from exec call.
- *
- * @var string
- */
- protected $returnProperty;
-
- /**
- * Property name to set with output value from exec call.
- *
- * @var string
- */
- protected $outputProperty;
-
- /**
- * Whether to check the return code.
- * @var boolean
- */
- protected $checkreturn = false;
-
-
-
- public function __construct()
- {
- $this->commandline = new Commandline();
- }
-
- /**
- * Main method: wraps execute() command.
- *
- * @return void
- */
- public function main()
- {
- if (!$this->isApplicable()) {
- return;
- }
-
- $this->prepare();
- $this->buildCommand();
- list($return, $output) = $this->executeCommand();
- $this->cleanup($return, $output);
- }
-
- /**
- * Checks whether the command shall be executed
- *
- * @return boolean False if the exec command shall not be run
- */
- protected function isApplicable()
- {
- if ($this->os === null) {
- return true;
- }
-
- $myos = Phing::getProperty('os.name');
- $this->log('Myos = ' . $myos, Project::MSG_VERBOSE);
-
- if (strpos($this->os, $myos) !== false) {
- // this command will be executed only on the specified OS
- // OS matches
- return true;
- }
-
- $this->log(
- sprintf(
- 'Operating system %s not found in %s',
- $myos, $this->os
- ),
- Project::MSG_VERBOSE
- );
- return false;
- }
-
- /**
- * Prepares the command building and execution, i.e.
- * changes to the specified directory.
- *
- * @return void
- */
- protected function prepare()
- {
- if ($this->dir === null) {
- return;
- }
-
- // expand any symbolic links first
- if (!$this->dir->getCanonicalFile()->isDirectory()) {
- throw new BuildException(
- "'" . (string) $this->dir . "' is not a valid directory"
- );
- }
- $this->currdir = getcwd();
- @chdir($this->dir->getPath());
- }
-
- /**
- * Builds the full command to execute and stores it in $command.
- *
- * @return void
- * @uses $command
- */
- protected function buildCommand()
- {
- if ($this->command === null && $this->commandline->getExecutable() === null) {
- throw new BuildException(
- 'ExecTask: Please provide "command" OR "executable"'
- );
- } else if ($this->command === null) {
- $this->command = Commandline::toString($this->commandline->getCommandline(), $this->escape);
- } else if ($this->commandline->getExecutable() === null) {
- //we need to escape the command only if it's specified directly
- // commandline takes care of "executable" already
- if ($this->escape == true) {
- $this->command = escapeshellcmd($this->command);
- }
- } else {
- throw new BuildException(
- 'ExecTask: Either use "command" OR "executable"'
- );
- }
-
- if ($this->error !== null) {
- $this->command .= ' 2> ' . $this->error->getPath();
- $this->log(
- "Writing error output to: " . $this->error->getPath(),
- $this->logLevel
- );
- }
-
- if ($this->output !== null) {
- $this->command .= ' 1> ' . $this->output->getPath();
- $this->log(
- "Writing standard output to: " . $this->output->getPath(),
- $this->logLevel
- );
- } elseif ($this->spawn) {
- $this->command .= ' 1>/dev/null';
- $this->log("Sending output to /dev/null", $this->logLevel);
- }
-
- // If neither output nor error are being written to file
- // then we'll redirect error to stdout so that we can dump
- // it to screen below.
-
- if ($this->output === null && $this->error === null) {
- $this->command .= ' 2>&1';
- }
-
- // we ignore the spawn boolean for windows
- if ($this->spawn) {
- $this->command .= ' &';
- }
- }
-
- /**
- * Executes the command and returns return code and output.
- *
- * @return array array(return code, array with output)
- */
- protected function executeCommand()
- {
- $this->log("Executing command: " . $this->command, $this->logLevel);
-
- $output = array();
- $return = null;
-
- if ($this->passthru) {
- passthru($this->command, $return);
- } else {
- exec($this->command, $output, $return);
- }
-
- return array($return, $output);
- }
-
- /**
- * Runs all tasks after command execution:
- * - change working directory back
- * - log output
- * - verify return value
- *
- * @param integer $return Return code
- * @param array $output Array with command output
- *
- * @return void
- */
- protected function cleanup($return, $output)
- {
- if ($this->dir !== null) {
- @chdir($this->currdir);
- }
-
- $outloglevel = $this->logOutput ? Project::MSG_INFO : Project::MSG_VERBOSE;
- foreach ($output as $line) {
- $this->log($line, $outloglevel);
- }
-
- if ($this->returnProperty) {
- $this->project->setProperty($this->returnProperty, $return);
- }
-
- if ($this->outputProperty) {
- $this->project->setProperty(
- $this->outputProperty, implode("\n", $output)
- );
- }
-
- if ($return != 0 && $this->checkreturn) {
- throw new BuildException("Task exited with code $return");
- }
- }
-
-
- /**
- * The command to use.
- *
- * @param mixed $command String or string-compatible (e.g. w/ __toString()).
- *
- * @return void
- */
- public function setCommand($command)
- {
- $this->command = "" . $command;
- }
-
- /**
- * The executable to use.
- *
- * @param mixed $executable String or string-compatible (e.g. w/ __toString()).
- *
- * @return void
- */
- public function setExecutable($executable)
- {
- $this->commandline->setExecutable((string)$executable);
- }
-
- /**
- * Whether to use escapeshellcmd() to escape command.
- *
- * @param boolean $escape If the command shall be escaped or not
- *
- * @return void
- */
- public function setEscape($escape)
- {
- $this->escape = (bool) $escape;
- }
-
- /**
- * Specify the working directory for executing this command.
- *
- * @param PhingFile $dir Working directory
- *
- * @return void
- */
- public function setDir(PhingFile $dir)
- {
- $this->dir = $dir;
- }
-
- /**
- * Specify OS (or muliple OS) that must match in order to execute this command.
- *
- * @param string $os Operating system string (e.g. "Linux")
- *
- * @return void
- */
- public function setOs($os)
- {
- $this->os = (string) $os;
- }
-
- /**
- * File to which output should be written.
- *
- * @param PhingFile $f Output log file
- *
- * @return void
- */
- public function setOutput(PhingFile $f)
- {
- $this->output = $f;
- }
-
- /**
- * File to which error output should be written.
- *
- * @param PhingFile $f Error log file
- *
- * @return void
- */
- public function setError(PhingFile $f)
- {
- $this->error = $f;
- }
-
- /**
- * Whether to use PHP's passthru() function instead of exec()
- *
- * @param boolean $passthru If passthru shall be used
- *
- * @return void
- */
- public function setPassthru($passthru)
- {
- $this->passthru = (bool) $passthru;
- }
-
- /**
- * Whether to log returned output as MSG_INFO instead of MSG_VERBOSE
- *
- * @param boolean $logOutput If output shall be logged visibly
- *
- * @return void
- */
- public function setLogoutput($logOutput)
- {
- $this->logOutput = (bool) $logOutput;
- }
-
- /**
- * Whether to suppress all output and run in the background.
- *
- * @param boolean $spawn If the command is to be run in the background
- *
- * @return void
- */
- public function setSpawn($spawn)
- {
- $this->spawn = (bool) $spawn;
- }
-
- /**
- * Whether to check the return code.
- *
- * @param boolean $checkreturn If the return code shall be checked
- *
- * @return void
- */
- public function setCheckreturn($checkreturn)
- {
- $this->checkreturn = (bool) $checkreturn;
- }
-
- /**
- * The name of property to set to return value from exec() call.
- *
- * @param string $prop Property name
- *
- * @return void
- */
- public function setReturnProperty($prop)
- {
- $this->returnProperty = $prop;
- }
-
- /**
- * The name of property to set to output value from exec() call.
- *
- * @param string $prop Property name
- *
- * @return void
- */
- public function setOutputProperty($prop)
- {
- $this->outputProperty = $prop;
- }
-
- /**
- * Set level of log messages generated (default = verbose)
- *
- * @param string $level Log level
- *
- * @return void
- */
- public function setLevel($level)
- {
- switch ($level) {
- case 'error':
- $this->logLevel = Project::MSG_ERR;
- break;
- case 'warning':
- $this->logLevel = Project::MSG_WARN;
- break;
- case 'info':
- $this->logLevel = Project::MSG_INFO;
- break;
- case 'verbose':
- $this->logLevel = Project::MSG_VERBOSE;
- break;
- case 'debug':
- $this->logLevel = Project::MSG_DEBUG;
- break;
- default:
- throw new BuildException(
- sprintf('Unknown log level "%s"', $level)
- );
- }
- }
-
- /**
- * Creates a nested <arg> tag.
- *
- * @return CommandlineArgument Argument object
- */
- public function createArg()
- {
- return $this->commandline->createArgument();
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/system/FailTask.php b/buildscripts/phing/classes/phing/tasks/system/FailTask.php
deleted file mode 100755
index 92306842..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/FailTask.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-/*
- * $Id: 260a7f3caa499a33f0d3982f9a5cc9db222475a6 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Exits the active build, giving an additional message
- * if available.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Nico Seessle <nico@seessle.de> (Ant)
- * @version $Id$
- * @package phing.tasks.system
- */
-class FailTask extends Task {
-
- private $message;
- private $ifCondition;
- private $unlessCondition;
-
- /**
- * A message giving further information on why the build exited.
- *
- * @param string $value message to output
- */
- public function setMsg($value) {
- $this->setMessage($value);
- }
-
- /**
- * A message giving further information on why the build exited.
- *
- * @param value message to output
- */
- public function setMessage($value) {
- $this->message = $value;
- }
-
- /**
- * Only fail if a property of the given name exists in the current project.
- * @param c property name
- */
- public function setIf($c) {
- $this->ifCondition = $c;
- }
-
- /**
- * Only fail if a property of the given name does not
- * exist in the current project.
- * @param c property name
- */
- public function setUnless($c) {
- $this->unlessCondition = $c;
- }
-
- /**
- * @throws BuildException
- */
- public function main() {
- if ($this->testIfCondition() && $this->testUnlessCondition()) {
- if ($this->message !== null) {
- throw new BuildException($this->message);
- } else {
- throw new BuildException("No message");
- }
- }
- }
-
- /**
- * Set a multiline message.
- */
- public function addText($msg) {
- if ($this->message === null) {
- $this->message = "";
- }
- $this->message .= $this->project->replaceProperties($msg);
- }
-
- /**
- * @return boolean
- */
- private function testIfCondition() {
- if ($this->ifCondition === null || $this->ifCondition === "") {
- return true;
- }
-
- return $this->project->getProperty($this->ifCondition) !== null;
- }
-
- /**
- * @return boolean
- */
- private function testUnlessCondition() {
- if ($this->unlessCondition === null || $this->unlessCondition === "") {
- return true;
- }
- return $this->project->getProperty($this->unlessCondition) === null;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/ForeachTask.php b/buildscripts/phing/classes/phing/tasks/system/ForeachTask.php
deleted file mode 100755
index e9b556d3..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ForeachTask.php
+++ /dev/null
@@ -1,320 +0,0 @@
-<?php
-/*
- * $Id: 7acb78ab792426fa7d4edec53496cff8da5923eb $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/FileSystem.php';
-include_once 'phing/mappers/FileNameMapper.php';
-include_once 'phing/tasks/system/PhingTask.php';
-
-/**
- * <foreach> task
- *
- * Task definition for the foreach task. This task takes a list with
- * delimited values, and executes a target with set param.
- *
- * Usage:
- * <foreach list="values" target="targ" param="name" delimiter="|" />
- *
- * Attributes:
- * list --> The list of values to process, with the delimiter character,
- * indicated by the "delimiter" attribute, separating each value.
- * target --> The target to call for each token, passing the token as the
- * parameter with the name indicated by the "param" attribute.
- * param --> The name of the parameter to pass the tokens in as to the
- * target.
- * delimiter --> The delimiter string that separates the values in the "list"
- * parameter. The default is ",".
- *
- * @author Jason Hines <jason@greenhell.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class ForeachTask extends Task {
-
- /** Delimter-separated list of values to process. */
- private $list;
-
- /** Name of parameter to pass to callee */
- private $param;
-
- /** Name of absolute path parameter to pass to callee */
- private $absparam;
-
- /** Delimiter that separates items in $list */
- private $delimiter = ',';
-
- /**
- * PhingCallTask that will be invoked w/ calleeTarget.
- * @var PhingCallTask
- */
- private $callee;
-
- /** Array of filesets */
- private $filesets = array();
-
- /** Instance of mapper **/
- private $mapperElement;
-
- /**
- * Array of filelists
- * @var array
- */
- private $filelists = array();
-
- /**
- * Target to execute.
- * @var string
- */
- private $calleeTarget;
-
- /**
- * Total number of files processed
- * @var integer
- */
- private $total_files = 0;
-
- /**
- * Total number of directories processed
- * @var integer
- */
- private $total_dirs = 0;
-
-
- function init() {
- $this->callee = $this->project->createTask("phingcall");
- $this->callee->setOwningTarget($this->getOwningTarget());
- $this->callee->setTaskName($this->getTaskName());
- $this->callee->setLocation($this->getLocation());
- $this->callee->init();
- }
-
- /**
- * This method does the work.
- * @return void
- */
- function main() {
- if ($this->list === null && count($this->filesets) == 0 && count($this->filelists) == 0) {
- throw new BuildException("Need either list, nested fileset or nested filelist to iterate through");
- }
- if ($this->param === null) {
- throw new BuildException("You must supply a property name to set on each iteration in param");
- }
- if ($this->calleeTarget === null) {
- throw new BuildException("You must supply a target to perform");
- }
-
- $callee = $this->callee;
- $callee->setTarget($this->calleeTarget);
- $callee->setInheritAll(true);
- $callee->setInheritRefs(true);
- $mapper = null;
-
- if ($this->mapperElement !== null) {
- $mapper = $this->mapperElement->getImplementation();
- }
-
- if (trim($this->list)) {
- $arr = explode($this->delimiter, $this->list);
-
- foreach ($arr as $value) {
- $value = trim($value);
- $premapped = '';
- if ($mapper !== null) {
- $premapped = $value;
- $value = $mapper->main($value);
- if ($value === null) {
- continue;
- }
- $value = array_shift($value);
- }
- $this->log("Setting param '$this->param' to value '$value'" . ($premapped ? " (mapped from '$premapped')" : ''), Project::MSG_VERBOSE);
- $prop = $callee->createProperty();
- $prop->setOverride(true);
- $prop->setName($this->param);
- $prop->setValue($value);
- $callee->main();
- }
- }
-
- // filelists
- foreach ($this->filelists as $fl) {
- $srcFiles = $fl->getFiles($this->project);
-
- $this->process($callee, $fl->getDir($this->project), $srcFiles, array());
- }
-
- // filesets
- foreach ($this->filesets as $fs) {
- $ds = $fs->getDirectoryScanner($this->project);
- $srcFiles = $ds->getIncludedFiles();
- $srcDirs = $ds->getIncludedDirectories();
-
- $this->process($callee, $fs->getDir($this->project), $srcFiles, $srcDirs);
- }
-
- $this->log("Processed {$this->total_dirs} directories and {$this->total_files} files", Project::MSG_VERBOSE);
- }
-
- /**
- * Processes a list of files & directories
- *
- * @param Task $callee
- * @param PhingFile $fromDir
- * @param array $srcFiles
- * @param array $srcDirs
- */
- protected function process(Task $callee, PhingFile $fromDir, $srcFiles, $srcDirs)
- {
- $mapper = null;
-
- if ($this->mapperElement !== null) {
- $mapper = $this->mapperElement->getImplementation();
- }
-
- $filecount = count($srcFiles);
- $this->total_files += $filecount;
-
- for ($j = 0; $j < $filecount; $j++) {
- $value = $srcFiles[$j];
- $premapped = "";
-
- if ($this->absparam) {
- $prop = $callee->createProperty();
- $prop->setOverride(true);
- $prop->setName($this->absparam);
- $prop->setValue($fromDir . FileSystem::getFileSystem()->getSeparator() . $value);
- }
-
- if ($mapper !== null) {
- $premapped = $value;
- $value = $mapper->main($value);
- if ($value === null) {
- continue;
- }
- $value = array_shift($value);
- }
-
- if ($this->param) {
- $this->log("Setting param '$this->param' to value '$value'" . ($premapped ? " (mapped from '$premapped')" : ''), Project::MSG_VERBOSE);
- $prop = $callee->createProperty();
- $prop->setOverride(true);
- $prop->setName($this->param);
- $prop->setValue($value);
- }
-
- $callee->main();
- }
-
- $dircount = count($srcDirs);
- $this->total_dirs += $dircount;
-
- for ($j = 0; $j < $dircount; $j++) {
- $value = $srcDirs[$j];
- $premapped = "";
-
- if ($this->absparam) {
- $prop = $callee->createProperty();
- $prop->setOverride(true);
- $prop->setName($this->absparam);
- $prop->setValue($fromDir . FileSystem::getFileSystem()->getSeparator() . $value);
- }
-
- if ($mapper !== null) {
- $premapped = $value;
- $value = $mapper->main($value);
- if ($value === null) {
- continue;
- }
- $value = array_shift($value);
- }
-
- if ($this->param) {
- $this->log("Setting param '$this->param' to value '$value'" . ($premapped ? " (mapped from '$premapped')" : ''), Project::MSG_VERBOSE);
- $prop = $callee->createProperty();
- $prop->setOverride(true);
- $prop->setName($this->param);
- $prop->setValue($value);
- }
-
- $callee->main();
- }
- }
-
- function setList($list) {
- $this->list = (string) $list;
- }
-
- function setTarget($target) {
- $this->calleeTarget = (string) $target;
- }
-
- function setParam($param) {
- $this->param = (string) $param;
- }
-
- function setAbsparam($absparam) {
- $this->absparam = (string) $absparam;
- }
-
- function setDelimiter($delimiter) {
- $this->delimiter = (string) $delimiter;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- */
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Nested creator, creates one Mapper for this task
- *
- * @access public
- * @return object The created Mapper type object
- * @throws BuildException
- */
- function createMapper() {
- if ($this->mapperElement !== null) {
- throw new BuildException("Cannot define more than one mapper", $this->location);
- }
- $this->mapperElement = new Mapper($this->project);
- return $this->mapperElement;
- }
-
- /**
- * @return Property
- */
- function createProperty() {
- return $this->callee->createProperty();
- }
-
- /**
- * Supports embedded <filelist> element.
- * @return FileList
- */
- public function createFileList() {
- $num = array_push($this->filelists, new FileList());
- return $this->filelists[$num-1];
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/IfTask.php b/buildscripts/phing/classes/phing/tasks/system/IfTask.php
deleted file mode 100644
index cff06ce1..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/IfTask.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-
-/*
- * $Id: 4452f066ac71d51d3e2521d39cdee2caf4f7e9cc $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/condition/ConditionBase.php';
-require_once 'phing/tasks/system/SequentialTask.php';
-
-/**
- * Perform some tasks based on whether a given condition holds true or
- * not.
- *
- * <p>This task is heavily based on the Condition framework that can
- * be found in Ant 1.4 and later, therefore it cannot be used in
- * conjunction with versions of Ant prior to 1.4.</p>
- *
- * <p>This task doesn't have any attributes, the condition to test is
- * specified by a nested element - see the documentation of your
- * <code><condition&gt;</code> task (see
- * <a href="http://jakarta.apache.org/ant/manual/CoreTasks/condition.html">the
- * online documentation</a> for example) for a complete list of nested
- * elements.</p>
- *
- * <p>Just like the <code><condition&gt;</code> task, only a single
- * condition can be specified - you combine them using
- * <code><and&gt;</code> or <code><or&gt;</code> conditions.</p>
- *
- * <p>In addition to the condition, you can specify three different
- * child elements, <code><elseif&gt;</code>, <code><then&gt;</code> and
- * <code><else&gt;</code>. All three subelements are optional.
- *
- * Both <code><then&gt;</code> and <code><else&gt;</code> must not be
- * used more than once inside the if task. Both are
- * containers for Ant tasks, just like Ant's
- * <code><parallel&gt;</code> and <code><sequential&gt;</code>
- * tasks - in fact they are implemented using the same class as Ant's
- * <code><sequential&gt;</code> task.</p>
- *
- * The <code><elseif&gt;</code> behaves exactly like an <code><if&gt;</code>
- * except that it cannot contain the <code><else&gt;</code> element
- * inside of it. You may specify as may of these as you like, and the
- * order they are specified is the order they are evaluated in. If the
- * condition on the <code><if&gt;</code> is false, then the first
- * <code><elseif&gt;</code> who's conditional evaluates to true
- * will be executed. The <code><else&gt;</code> will be executed
- * only if the <code><if&gt;</code> and all <code><elseif&gt;</code>
- * conditions are false.
- *
- * <p>Use the following task to define the <code><if&gt;</code>
- * task before you use it the first time:</p>
- *
- * <pre><code>
- * &lt;taskdef name=&quot;if&quot; classname=&quot;net.sf.antcontrib.logic.IfTask&quot; /&gt;
- * </code></pre>
- *
- * <h3>Crude Example</h3>
- *
- * <code>
- * <if>
- * <equals arg1="${foo}" arg2="bar" />
- * <then>
- * <echo message="The value of property foo is bar" />
- * </then>
- * <else>
- * <echo message="The value of property foo is not bar" />
- * </else>
- * </if>
- * </code>
- *
- * <code>
- * <if>
- * <equals arg1="${foo}" arg2="bar" /&gt;
- * <then>
- * <echo message="The value of property foo is 'bar'" />
- * </then>
- *
- * <elseif>
- * <equals arg1="${foo}" arg2="foo" />
- * <then>
- * <echo message="The value of property foo is 'foo'" />
- * </then>
- * </elseif>
- *
- * <else>
- * <echo message="The value of property foo is not 'foo' or 'bar'" />
- * </else>
- * </if>
- * </code>
- *
- * @author <a href="mailto:stefan.bodewig@freenet.de">Stefan Bodewig</a>
- * @package phing.tasks.system
- */
-class IfTask extends ConditionBase {
-
-
- private $thenTasks = null;
- private $elseIfTasks = array();
- private $elseTasks = null;
-
- /***
- * A nested Else if task
- */
- public function addElseIf(ElseIfTask $ei)
- {
- $this->elseIfTasks[] = $ei;
- }
-
- /**
- * A nested <then> element - a container of tasks that will
- * be run if the condition holds true.
- *
- * <p>Not required.</p>
- */
- public function addThen(SequentialTask $t) {
- if ($this->thenTasks != null) {
- throw new BuildException("You must not nest more than one <then> into <if>");
- }
- $this->thenTasks = $t;
- }
-
- /**
- * A nested <else> element - a container of tasks that will
- * be run if the condition doesn't hold true.
- *
- * <p>Not required.</p>
- */
- public function addElse(SequentialTask $e) {
- if ($this->elseTasks != null) {
- throw new BuildException("You must not nest more than one <else> into <if>");
- }
- $this->elseTasks = $e;
- }
-
- public function main() {
-
- if ($this->countConditions() > 1) {
- throw new BuildException("You must not nest more than one condition into <if>");
- }
- if ($this->countConditions() < 1) {
- throw new BuildException("You must nest a condition into <if>");
- }
- $conditions = $this->getConditions();
- $c = $conditions[0];
-
- if ($c->evaluate()) {
- if ($this->thenTasks != null) {
- $this->thenTasks->main();
- }
- } else {
- $done = false;
- $sz = count($this->elseIfTasks);
- for($i=0; $i < $sz && !$done; $i++) {
- $ei = $this->elseIfTasks[$i];
- if ($ei->evaluate()) {
- $done = true;
- $ei->main();
- }
- }
-
- if (!$done && $this->elseTasks != null) {
- $this->elseTasks->main();
- }
- }
- }
-}
-
-/**
- * "Inner" class for IfTask.
- * This class has same basic structure as the IfTask, although of course it doesn't support <else> tags.
- *
- * @package phing.tasks.system
- */
-class ElseIfTask extends ConditionBase {
-
- private $thenTasks = null;
-
- public function addThen(SequentialTask $t) {
- if ($this->thenTasks != null) {
- throw new BuildException("You must not nest more than one <then> into <elseif>");
- }
- $this->thenTasks = $t;
- }
-
- /**
- * @return boolean
- */
- public function evaluate() {
-
- if ($this->countConditions() > 1) {
- throw new BuildException("You must not nest more than one condition into <elseif>");
- }
- if ($this->countConditions() < 1) {
- throw new BuildException("You must nest a condition into <elseif>");
- }
-
- $conditions = $this->getConditions();
- $c = $conditions[0];
-
- return $c->evaluate();
- }
-
- /**
- *
- */
- public function main() {
- if ($this->thenTasks != null) {
- $this->thenTasks->main();
- }
- }
- }
diff --git a/buildscripts/phing/classes/phing/tasks/system/ImportTask.php b/buildscripts/phing/classes/phing/tasks/system/ImportTask.php
deleted file mode 100755
index 760380eb..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ImportTask.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-/*
- * $Id: 88eafadfcd59c0ce28f122926b7d5706b807a8e3 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/system/io/FileSystem.php';
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/parser/ProjectConfigurator.php';
-
-/**
- * Imports another build file into the current project.
- *
- * Targets and properties of the imported file can be overrridden
- * by targets and properties of the same name declared in the importing file.
- *
- * The imported file will have a new synthetic property of
- * "phing.file.<projectname>" declared which gives the full path to the
- * imported file. Additionally each target in the imported file will be
- * declared twice: once with the normal name and once with "<projectname>."
- * prepended. The "<projectname>.<targetname>" synthetic targets allow the
- * importing file a mechanism to call the imported files targets as
- * dependencies or via the <phing> or <phingcall> task mechanisms.
- *
- * @author Bryan Davis <bpd@keynetics.com>
- * @version $Id: 88eafadfcd59c0ce28f122926b7d5706b807a8e3 $
- * @package phing.tasks.system
- */
-class ImportTask extends Task {
-
- /**
- * @var FileSystem
- */
- protected $fs;
-
- /**
- * @var PhingFile
- */
- protected $file = null;
-
- /**
- * @var bool
- */
- protected $optional = false;
-
- /**
- * Initialize task.
- * @return void
- */
- public function init () {
- $this->fs = FileSystem::getFileSystem();
- } //end init
-
-
- /**
- * Set the file to import.
- * @param string $f Path to file
- * @return void
- */
- public function setFile ($f) {
- $this->file = $f;
- }
-
- /**
- * Is this include optional?
- * @param bool $opt If true, do not stop the build if the file does not
- * exist
- * @return void
- */
- public function setOptional ($opt) {
- $this->optional = $opt;
- }
-
- /**
- * Parse a Phing build file and copy the properties, tasks, data types and
- * targets it defines into the current project.
- *
- * @return void
- */
- public function main () {
- if (!isset($this->file)) {
- throw new BuildException("Missing attribute 'file'");
- }
-
- $file = new PhingFile($this->file);
- if (!$file->isAbsolute()) {
- $file = new PhingFile($this->project->getBasedir(), $this->file);
- }
- if (!$file->exists()) {
- $msg = "Unable to find build file: {$file->getPath()}";
- if ($this->optional) {
- $this->log($msg . '... skipped');
- return;
- } else {
- throw new BuildException($msg);
- }
- }
-
- $ctx = $this->project->getReference("phing.parsing.context");
- $cfg = $ctx->getConfigurator();
- if (null !== $cfg && $cfg->isParsing()) {
- // because there isn't a top level implicit target in phing like there is
- // in Ant 1.6, we will be called as soon as our xml is parsed. This isn't
- // really what we want to have happen. Instead we will register ourself
- // with the parse context to be called at the end of the current file's
- // parse phase.
- $cfg->delayTaskUntilParseEnd($this);
-
- } else {
- // Import xml file into current project scope
- // Since this is delayed until after the importing file has been
- // processed, the properties and targets of this new file may not take
- // effect if they have alreday been defined in the outer scope.
- $this->log("Importing configuration from {$file->getName()}", Project::MSG_VERBOSE);
- ProjectConfigurator::configureProject($this->project, $file);
- $this->log("Configuration imported.", Project::MSG_VERBOSE);
- }
- } //end main
-
-} //end ImportTask
diff --git a/buildscripts/phing/classes/phing/tasks/system/IncludePathTask.php b/buildscripts/phing/classes/phing/tasks/system/IncludePathTask.php
deleted file mode 100755
index 807a3cad..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/IncludePathTask.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-
-/*
- * $Id: eaa0d6c5c7fb908d419cd6e22c7eccbf01506da7 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/types/Path.php';
-
-/**
- * Adds a normalized path to the PHP include_path.
- *
- * This provides a way to alter the include_path without editing any global php.ini settings
- * or PHP_CLASSPATH environment variable.
- *
- * <code>
- * <includepath classpath="new/path/here"/>
- * </code>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class IncludePathTask extends Task {
-
- /**
- * Classname of task to register.
- * This can be a dot-path -- relative to a location on PHP include_path.
- * E.g. path.to.MyClass -> path/to/MyClass.php
- * @var string
- */
- private $classname;
-
- /**
- * Path to add to PHP include_path to aid in finding specified class.
- * @var Path
- */
- private $classpath;
-
- /**
- * Refid to already defined classpath
- */
- private $classpathId;
-
- /**
- * Set the classpath to be used when searching for component being defined
- *
- * @param Path $classpath An Path object containing the classpath.
- */
- public function setClasspath(Path $classpath) {
- if ($this->classpath === null) {
- $this->classpath = $classpath;
- } else {
- $this->classpath->append($classpath);
- }
- }
-
- /**
- * Create the classpath to be used when searching for component being defined
- */
- public function createClasspath() {
- if ($this->classpath === null) {
- $this->classpath = new Path($this->project);
- }
- return $this->classpath->createPath();
- }
-
- /**
- * Reference to a classpath to use when loading the files.
- */
- public function setClasspathRef(Reference $r) {
- $this->classpathId = $r->getRefId();
- $this->createClasspath()->setRefid($r);
- }
-
-
- /** Main entry point */
- public function main() {
-
- // Apparently casting to (string) no longer invokes __toString() automatically.
- if (is_object($this->classpath)) {
- $this->classpath = $this->classpath->__toString();
- }
-
- if (empty($this->classpath)) {
- throw new BuildException("Provided classpath was empty.");
- }
-
- $curr_parts = explode(PATH_SEPARATOR, get_include_path());
- $add_parts = explode(PATH_SEPARATOR, $this->classpath);
- $new_parts = array_diff($add_parts, $curr_parts);
-
- if ($new_parts) {
- $this->log("Prepending new include_path components: " . implode(PATH_SEPARATOR, $new_parts), Project::MSG_VERBOSE);
- set_include_path(implode(PATH_SEPARATOR, array_merge($new_parts, $curr_parts)));
- }
-
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/InputTask.php b/buildscripts/phing/classes/phing/tasks/system/InputTask.php
deleted file mode 100755
index 3c7168fd..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/InputTask.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-/*
- * $Id: ae986f84ca9d952b0e14f2df9f21657213ef5e47 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/input/InputRequest.php';
-include_once 'phing/input/YesNoInputRequest.php';
-include_once 'phing/input/MultipleChoiceInputRequest.php';
-
-/**
- * Reads input from the InputHandler.
- *
- * @see Project::getInputHandler()
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Ulrich Schmidt <usch@usch.net> (Ant)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @version $Id: ae986f84ca9d952b0e14f2df9f21657213ef5e47 $
- * @package phing.tasks.system
- */
-class InputTask extends Task {
-
- private $validargs;
- private $message = ""; // required
- private $propertyName; // required
- private $defaultValue;
- private $promptChar;
-
- /**
- * Defines valid input parameters as comma separated strings. If set, input
- * task will reject any input not defined as accepted and requires the user
- * to reenter it. Validargs are case sensitive. If you want 'a' and 'A' to
- * be accepted you need to define both values as accepted arguments.
- *
- * @param validargs A comma separated String defining valid input args.
- */
- public function setValidargs ($validargs) {
- $this->validargs = $validargs;
- }
-
- /**
- * Defines the name of a property to be set from input.
- *
- * @param string $name Name for the property to be set from input
- */
- public function setPropertyName($name) {
- $this->propertyName = $name;
- }
-
- /**
- * Sets the Message which gets displayed to the user during the build run.
- * @param message The message to be displayed.
- */
- public function setMessage ($message) {
- $this->message = $message;
- }
-
- /**
- * Set a multiline message.
- */
- public function addText($msg) {
- $this->message .= $this->project->replaceProperties($msg);
- }
-
- /**
- * Add a default value.
- * @param string $v
- */
- public function setDefaultValue($v) {
- $this->defaultValue = $v;
- }
-
- /**
- * Set the character/string to use for the prompt.
- * @param string $c
- */
- public function setPromptChar($c) {
- $this->promptChar = $c;
- }
-
- /**
- * Actual method executed by phing.
- * @throws BuildException
- */
- public function main() {
-
- if ($this->propertyName === null) {
- throw new BuildException("You must specify a value for propertyName attribute.");
- }
-
- if ($this->message === "") {
- throw new BuildException("You must specify a message for input task.");
- }
-
- if ($this->validargs !== null) {
- $accept = preg_split('/[\s,]+/', $this->validargs);
-
- // is it a boolean (yes/no) inputrequest?
- $yesno = false;
- if (count($accept) == 2) {
- $yesno = true;
- foreach($accept as $ans) {
- if(!StringHelper::isBoolean($ans)) {
- $yesno = false;
- break;
- }
- }
- }
- if ($yesno) $request = new YesNoInputRequest($this->message, $accept);
- else $request = new MultipleChoiceInputRequest($this->message, $accept);
- } else {
- $request = new InputRequest($this->message);
- }
-
- // default default is curr prop value
- $request->setDefaultValue($this->project->getProperty($this->propertyName));
-
- $request->setPromptChar($this->promptChar);
-
- // unless overridden...
- if ($this->defaultValue !== null) {
- $request->setDefaultValue($this->defaultValue);
- }
-
- $this->project->getInputHandler()->handleInput($request);
-
- $value = $request->getInput();
-
- if ($value !== null) {
- $this->project->setUserProperty($this->propertyName, $value);
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/LoadFileTask.php b/buildscripts/phing/classes/phing/tasks/system/LoadFileTask.php
deleted file mode 100644
index ff7b7d3b..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/LoadFileTask.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/*
- * $Id: d4796a6eb57300eca59f8b6f79e3dbcb08d1e346 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-require_once 'phing/Task.php';
-
-/**
- * LoadFileTask
- *
- * Loads a (text) file and stores the contents in a property.
- * Supports filterchains.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: d4796a6eb57300eca59f8b6f79e3dbcb08d1e346 $
- * @package phing.tasks.ext
- */
-class LoadFileTask extends Task
-{
- /**
- * File to read
- * @var PhingFile file
- */
- private $file;
-
- /**
- * Property to be set
- * @var string $property
- */
- private $property;
-
- /**
- * Array of FilterChain objects
- * @var FilterChain[]
- */
- private $filterChains = array();
-
- /**
- * Set file to read
- * @param PhingFile $file
- */
- public function setFile($file)
- {
- $this->file = $file;
- }
-
- /**
- * Convenience setter to maintain Ant compatibility (@see setFile())
- * @param PhingFile $file
- */
- public function setSrcFile($srcFile)
- {
- $this->file = $srcFile;
- }
-
- /**
- * Set name of property to be set
- * @param $property
- * @return void
- */
- public function setProperty($property)
- {
- $this->property = $property;
- }
-
- /**
- * Creates a filterchain
- *
- * @return object The created filterchain object
- */
- function createFilterChain() {
- $num = array_push($this->filterChains, new FilterChain($this->project));
- return $this->filterChains[$num-1];
- }
-
- /**
- * Main method
- *
- * @return void
- * @throws BuildException
- */
- public function main()
- {
- if (empty($this->file)) {
- throw new BuildException("Attribute 'file' required", $this->getLocation());
- }
-
- if (empty($this->property)) {
- throw new BuildException("Attribute 'property' required", $this->getLocation());
- }
-
- // read file (through filterchains)
- $contents = "";
-
- $reader = FileUtils::getChainedReader(new FileReader($this->file), $this->filterChains, $this->project);
- while(-1 !== ($buffer = $reader->read())) {
- $contents .= $buffer;
- }
- $reader->close();
-
- // publish as property
- $this->project->setProperty($this->property, $contents);
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/system/MatchingTask.php b/buildscripts/phing/classes/phing/tasks/system/MatchingTask.php
deleted file mode 100755
index b04be2e1..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/MatchingTask.php
+++ /dev/null
@@ -1,361 +0,0 @@
-<?php
-/*
- * $Id: 1e1f6274f400b90c2344c8cdb5d3711030b8f44a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/types/selectors/SelectorContainer.php';
-include_once 'phing/types/FileSet.php';
-include_once 'phing/types/PatternSet.php';
-include_once 'phing/util/DirectoryScanner.php';
-
-/**
- * This is an abstract task that should be used by all those tasks that
- * require to include or exclude files based on pattern matching.
- *
- * This is very closely based on the ANT class of the same name.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Arnout J. Kuiper <ajkuiper@wxs.nl> (Ant)
- * @author Stefano Mazzocchi <stefano@apache.org> (Ant)
- * @author Sam Ruby <rubys@us.ibm.com> (Ant)
- * @author Jon S. Stevens <jon@clearink.com> (Ant
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Id: 1e1f6274f400b90c2344c8cdb5d3711030b8f44a $
- * @package phing.tasks.system
- */
-abstract class MatchingTask extends Task implements SelectorContainer {
-
- /** @var boolean */
- protected $useDefaultExcludes = true;
-
- /** @var FileSet */
- protected $fileset;
-
- /**
- * Create instance; set fileset to new FileSet.
- */
- public function __construct() {
- $this->fileset = new FileSet();
- }
-
- /**
- * @see ProjectComponent::setProject()
- */
- public function setProject($project) {
- parent::setProject($project);
- $this->fileset->setProject($project);
- }
-
- /**
- * add a name entry on the include list
- * @return PatternSetNameEntry
- */
- public function createInclude() {
- return $this->fileset->createInclude();
- }
-
- /**
- * add a name entry on the include files list
- * @return PatternSetNameEntry
- */
- public function createIncludesFile() {
- return $this->fileset->createIncludesFile();
- }
-
- /**
- * add a name entry on the exclude list
- * @return PatternSetNameEntry
- */
- public function createExclude() {
- return $this->fileset->createExclude();
- }
-
- /**
- * add a name entry on the include files list
- * @return PatternSetNameEntry
- */
- public function createExcludesFile() {
- return $this->fileset->createExcludesFile();
- }
-
- /**
- * add a set of patterns
- * @return PatternSet
- */
- public function createPatternSet() {
- return $this->fileset->createPatternSet();
- }
-
- /**
- * Sets the set of include patterns. Patterns may be separated by a comma
- * or a space.
- *
- * @param string $includes the string containing the include patterns
- * @return void
- */
- public function setIncludes($includes) {
- $this->fileset->setIncludes($includes);
- }
-
- /**
- * Sets the set of exclude patterns. Patterns may be separated by a comma
- * or a space.
- *
- * @param string $excludes the string containing the exclude patterns
- */
- public function setExcludes($excludes) {
- $this->fileset->setExcludes($excludes);
- }
-
-
- /**
- * Sets whether default exclusions should be used or not.
- *
- * @param boolean $useDefaultExcludes "true"|"on"|"yes" when default exclusions
- * should be used, "false"|"off"|"no" when they
- * shouldn't be used.
- */
- public function setDefaultexcludes($useDefaultExcludes) {
- $this->useDefaultExcludes = (boolean) $useDefaultExcludes;
- }
-
- /**
- * Returns the directory scanner needed to access the files to process.
- * @return DirectoryScanner
- */
- protected function getDirectoryScanner(PhingFile $baseDir) {
- $this->fileset->setDir($baseDir);
- $this->fileset->setDefaultexcludes($this->useDefaultExcludes);
- return $this->fileset->getDirectoryScanner($this->project);
- }
-
- /**
- * Sets the name of the file containing the includes patterns.
- *
- * @param PhingFile $includesfile A string containing the filename to fetch
- * the include patterns from.
- * @return void
- */
- public function setIncludesfile(PhingFile $includesfile) {
- $this->fileset->setIncludesfile(includesfile);
- }
-
- /**
- * Sets the name of the file containing the includes patterns.
- *
- * @param PhingFile $excludesfile A string containing the filename to fetch
- * the include patterns from.
- * @return void
- */
- public function setExcludesfile(PhingFile $excludesfile) {
- $this->fileset->setExcludesfile($excludesfile);
- }
-
- /**
- * Sets case sensitivity of the file system
- *
- * @param boolean $isCaseSensitive "true"|"on"|"yes" if file system is case
- * sensitive, "false"|"off"|"no" when not.
- * @return void
- */
- public function setCaseSensitive($isCaseSensitive) {
- $this->fileset->setCaseSensitive($isCaseSensitive);
- }
-
- /**
- * Sets whether or not symbolic links should be followed.
- *
- * @param boolean $followSymlinks whether or not symbolic links should be followed
- * @return void
- */
- public function setFollowSymlinks($followSymlinks) {
- $this->fileset->setFollowSymlinks($followSymlinks);
- }
-
- /**
- * Indicates whether there are any selectors here.
- *
- * @return boolean Whether any selectors are in this container
- */
- public function hasSelectors() {
- return $this->fileset->hasSelectors();
- }
-
- /**
- * Gives the count of the number of selectors in this container
- *
- * @return int The number of selectors in this container
- */
- public function selectorCount() {
- return $this->fileset->selectorCount();
- }
-
- /**
- * Returns the set of selectors as an array.
- *
- * @return array FileSelector[] An array of selectors in this container
- */
- public function getSelectors(Project $p) {
- return $this->fileset->getSelectors($p);
- }
-
- /**
- * Returns an enumerator for accessing the set of selectors.
- *
- * @return an enumerator that goes through each of the selectors
- */
- public function selectorElements() {
- return $this->fileset->selectorElements();
- }
-
- /**
- * Add a new selector into this container.
- *
- * @param FileSelector $selector the new selector to add
- * @return void
- */
- public function appendSelector(FileSelector $selector) {
- $this->fileset->appendSelector($selector);
- }
-
- /* Methods below all add specific selectors */
-
- /**
- * add a "Select" selector entry on the selector list
- * @return SelectSelector
- */
- public function createSelector() {
- return $this->fileset->createSelector();
- }
-
- /**
- * add an "And" selector entry on the selector list
- * @return AndSelector
- */
- public function createAnd() {
- return $this->fileset->createAnd();
- }
-
- /**
- * add an "Or" selector entry on the selector list
- * @return void
- */
- public function createOr() {
- return $this->fileset->createOr();
- }
-
- /**
- * add a "Not" selector entry on the selector list
- * @return NotSelector
- */
- public function createNot() {
- return $this->fileset->createNot();
- }
-
- /**
- * add a "None" selector entry on the selector list
- * @return NoneSelector
- */
- public function createNone() {
- return $this->fileset->createNone();
- }
-
- /**
- * add a majority selector entry on the selector list
- * @return MajoritySelector
- */
- public function createMajority() {
- return $this->fileset->createMajority();
- }
-
- /**
- * add a selector date entry on the selector list
- * @return DateSelector
- */
- public function createDate() {
- return $this->fileset->addDate();
- }
-
- /**
- * add a selector size entry on the selector list
- * @return SizeSelector
- */
- public function createSize() {
- return $this->fileset->createSize();
- }
-
- /**
- * add a selector filename entry on the selector list
- * @return FilenameSelector
- */
- public function createFilename() {
- return $this->fileset->createFilename();
- }
-
- /**
- * add an extended selector entry on the selector list
- * @return ExtendSelector
- */
- public function createCustom() {
- return $this->fileset->createCustom();
- }
-
- /**
- * add a contains selector entry on the selector list
- * @return ContainsSelector
- */
- public function createContains() {
- return $this->fileset->createContains();
- }
-
- /**
- * add a present selector entry on the selector list
- * @return PresentSelector
- */
- public function createPresent() {
- return $this->fileset->createPresent();
- }
-
- /**
- * add a depth selector entry on the selector list
- * @return DepthSelector
- */
- public function createDepth() {
- return $this->fileset->createDepth();
- }
-
- /**
- * add a depends selector entry on the selector list
- * @return DependSelector
- */
- public function createDepend() {
- return $this->fileset->createDepend();
- }
-
- /**
- * Accessor for the implict fileset.
- *
- * @return FileSet
- */
- protected final function getImplicitFileSet() {
- return $this->fileset;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/MkdirTask.php b/buildscripts/phing/classes/phing/tasks/system/MkdirTask.php
deleted file mode 100755
index 934b991f..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/MkdirTask.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/*
- * $Id: e7e3dbd896d8d46cd8694fca10d1d9a7b3ce54fc $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/system/io/PhingFile.php';
-
-/**
- * Task to create a directory.
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id$
- * @package phing.tasks.system
- */
-class MkdirTask extends Task {
-
- /** directory to create*/
- private $dir;
-
- /**
- * Mode to create directory with
- * @var integer
- */
- private $mode = 0755;
-
- /**
- * create the directory and all parents
- *
- * @throws BuildException if dir is somehow invalid, or creation failed.
- */
- function main() {
- if ($this->dir === null) {
- throw new BuildException("dir attribute is required", $this->location);
- }
- if ($this->dir->isFile()) {
- throw new BuildException("Unable to create directory as a file already exists with that name: " . $this->dir->getAbsolutePath());
- }
- if (!$this->dir->exists()) {
- $result = $this->dir->mkdirs($this->mode);
- if (!$result) {
- $msg = "Directory " . $this->dir->getAbsolutePath() . " creation was not successful for an unknown reason";
- throw new BuildException($msg, $this->location);
- }
- $this->log("Created dir: " . $this->dir->getAbsolutePath());
- }
- }
-
- /** the directory to create; required. */
- function setDir(PhingFile $dir) {
- $this->dir = $dir;
- }
-
- /**
- * Sets mode to create directory with
- * @param mixed $mode
- */
- function setMode($mode)
- {
- $this->mode = base_convert((int) $mode, 8, 10);
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/MoveTask.php b/buildscripts/phing/classes/phing/tasks/system/MoveTask.php
deleted file mode 100755
index e7041464..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/MoveTask.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/*
- * $Id: 01e6d627d455729bfed47d603188d8c56f54d9e5 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/CopyTask.php';
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/system/io/IOException.php';
-
-/**
- * Moves a file or directory to a new file or directory.
- *
- * By default, the destination file is overwritten if it
- * already exists. When overwrite is turned off, then files
- * are only moved if the source file is newer than the
- * destination file, or when the destination file does not
- * exist.
- *
- * Source files and directories are only deleted when the file or
- * directory has been copied to the destination successfully.
- *
- * @version $Id$
- * @package phing.tasks.system
- */
-class MoveTask extends CopyTask {
-
- function __construct() {
- parent::__construct();
- $this->forceOverwrite = true;
- }
-
- /**
- * Validates attributes coming in from XML
- *
- * @access private
- * @return void
- * @throws BuildException
- */
- protected function validateAttributes() {
- if ($this->file !== null && $this->file->isDirectory()) {
- if (($this->destFile !== null && $this->destDir !== null)
- || ($this->destFile === null && $this->destDir === null)) {
- throw new BuildException("One and only one of tofile and todir must be set.");
- }
-
- if ($this->destFile === null)
- {
- $this->destFile = new PhingFile($this->destDir, $this->file->getName());
- }
-
- if ($this->destDir === null)
- {
- $this->destDir = $this->destFile->getParentFile();
- }
-
- $this->completeDirMap[$this->file->getAbsolutePath()] = $this->destFile->getAbsolutePath();
-
- $this->file = null;
- } else {
- parent::validateAttributes();
- }
- }
-
- protected function doWork() {
- if (count($this->completeDirMap) > 0)
- {
- foreach ($this->completeDirMap as $from => $to)
- {
- $f = new PhingFile($from);
- $d = new PhingFile($to);
-
- $moved = false;
- try { // try to rename
- $this->log("Attempting to rename $from to $to", $this->verbosity);
- $this->fileUtils->copyFile($f, $d, $this->forceOverwrite, $this->preserveLMT, $this->filterChains, $this->getProject(), $this->mode);
- $f->delete(true);
- $moved = true;
- } catch (IOException $ioe) {
- $moved = false;
- $this->logError("Failed to rename $from to $to: " . $ioe->getMessage());
- }
- }
- }
-
- $copyMapSize = count($this->fileCopyMap);
- if ($copyMapSize > 0) {
- // files to move
- $this->log("Moving $copyMapSize files to " . $this->destDir->getAbsolutePath());
-
- foreach($this->fileCopyMap as $from => $to) {
- if ($from == $to) {
- $this->log("Skipping self-move of $from", $this->verbosity);
- continue;
- }
-
- $f = new PhingFile($from);
- $d = new PhingFile($to);
-
- try { // try to move
- $this->log("Moving $from to $to", $this->verbosity);
-
- $this->fileUtils->copyFile($f, $d, $this->forceOverwrite, $this->preserveLMT, $this->filterChains, $this->getProject(), $this->mode);
-
- $f->delete();
- } catch (IOException $ioe) {
- $this->logError("Failed to move $from to $to: " . $ioe->getMessage(), $this->location);
- }
- } // foreach fileCopyMap
- } // if copyMapSize
-
- // handle empty dirs if appropriate
- if ($this->includeEmpty) {
- $e = array_keys($this->dirCopyMap);
- $count = 0;
- foreach ($e as $dir) {
- $d = new PhingFile((string) $dir);
- if (!$d->exists()) {
- if (!$d->mkdirs()) {
- $this->logError("Unable to create directory " . $d->getAbsolutePath());
- } else {
- $count++;
- }
- }
- }
- if ($count > 0) {
- $this->log("moved $count empty director" . ($count == 1 ? "y" : "ies") . " to " . $this->destDir->getAbsolutePath());
- }
- }
-
- if (count($this->filesets) > 0) {
- // process filesets
- foreach($this->filesets as $fs) {
- $dir = $fs->getDir($this->project);
- if ($this->okToDelete($dir)) {
- $this->deleteDir($dir);
- }
- }
- }
- }
-
- /** Its only ok to delete a dir tree if there are no files in it. */
- private function okToDelete($d) {
- $list = $d->listDir();
- if ($list === null) {
- return false; // maybe io error?
- }
-
- foreach($list as $s) {
- $f = new PhingFile($d, $s);
- if ($f->isDirectory()) {
- if (!$this->okToDelete($f)) {
- return false;
- }
- } else {
- // found a file
- return false;
- }
- }
- return true;
- }
-
- /** Go and delete the directory tree. */
- private function deleteDir($d) {
-
- $list = $d->listDir();
- if ($list === null) {
- return; // on an io error list() can return null
- }
-
- foreach($list as $fname) {
- $f = new PhingFile($d, $fname);
- if ($f->isDirectory()) {
- $this->deleteDir($f);
- } else {
- throw new BuildException("UNEXPECTED ERROR - The file " . $f->getAbsolutePath() . " should not exist!");
- }
- }
-
- $this->log("Deleting directory " . $d->getPath(), $this->verbosity);
- try {
- $d->delete();
- } catch (Exception $e) {
- $this->logError("Unable to delete directory " . $d->__toString() . ": " . $e->getMessage());
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/PhingCallTask.php b/buildscripts/phing/classes/phing/tasks/system/PhingCallTask.php
deleted file mode 100755
index 2aec4db5..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/PhingCallTask.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-/*
- * $Id: 5d02fa25dc18b56093884ae756b1720aafb42937 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Call another target in the same project.
- *
- * <samp>
- * <target name="foo">
- * <phingcall target="bar">
- * <property name="property1" value="aaaaa" />
- * <property name="foo" value="baz" />
- * </phingcall>
- * </target>
- *
- * <target name="bar" depends="init">
- * <echo message="prop is ${property1} ${foo}" />
- * </target>
- * </samp>
- *
- * This only works as expected if neither property1 nor foo are defined in the project itself.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id: 5d02fa25dc18b56093884ae756b1720aafb42937 $
- * @access public
- * @package phing.tasks.system
- */
-class PhingCallTask extends Task {
-
- /**
- * The called Phing task.
- *
- * @var PhingTask
- */
- private $callee;
-
- /**
- * The target to call.
- *
- * @var string
- */
- private $subTarget;
-
- /**
- * Whether to inherit all properties from current project.
- *
- * @var boolean
- */
- private $inheritAll = true;
-
- /**
- * Whether to inherit refs from current project.
- *
- * @var boolean
- */
- private $inheritRefs = false;
-
- /**
- * If true, pass all properties to the new Phing project.
- * Defaults to true. Future use.
- * @param boolean new value
- */
- function setInheritAll($inherit) {
- $this->inheritAll = (boolean) $inherit;
- }
-
- /**
- * If true, pass all references to the new Phing project.
- * Defaults to false. Future use.
- *
- * @param boolean new value
- */
- function setInheritRefs($inheritRefs) {
- $this->inheritRefs = (boolean) $inheritRefs;
- }
-
- /**
- * Alias for createProperty
- * @see createProperty()
- */
- function createParam() {
- if ($this->callee === null) {
- $this->init();
- }
- return $this->callee->createProperty();
- }
-
- /**
- * Property to pass to the invoked target.
- */
- function createProperty() {
- if ($this->callee === null) {
- $this->init();
- }
- return $this->callee->createProperty();
- }
-
- /**
- * Target to execute, required.
- */
- function setTarget($target) {
- $this->subTarget = (string) $target;
- }
-
- /**
- * init this task by creating new instance of the phing task and
- * configuring it's by calling its own init method.
- */
- function init() {
- $this->callee = $this->project->createTask("phing");
- $this->callee->setOwningTarget($this->getOwningTarget());
- $this->callee->setTaskName($this->getTaskName());
- $this->callee->setHaltOnFailure(true);
- $this->callee->setLocation($this->getLocation());
- $this->callee->init();
- }
-
- /**
- * hand off the work to the phing task of ours, after setting it up
- * @throws BuildException on validation failure or if the target didn't
- * execute
- */
- function main() {
-
- $this->log("Running PhingCallTask for target '" . $this->subTarget . "'", Project::MSG_DEBUG);
- if ($this->callee === null) {
- $this->init();
- }
-
- if ($this->subTarget === null) {
- throw new BuildException("Attribute target is required.", $this->getLocation());
- }
-
- $this->callee->setPhingfile($this->project->getProperty("phing.file"));
- $this->callee->setTarget($this->subTarget);
- $this->callee->setInheritAll($this->inheritAll);
- $this->callee->setInheritRefs($this->inheritRefs);
- $this->callee->main();
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/PhingTask.php b/buildscripts/phing/classes/phing/tasks/system/PhingTask.php
deleted file mode 100755
index 6ac0b5ac..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/PhingTask.php
+++ /dev/null
@@ -1,627 +0,0 @@
-<?php
-
-/*
- * $Id: 2eec26f6ebaaeceb4eca76644de88bde7515f5dc $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/Task.php';
-include_once 'phing/util/FileUtils.php';
-include_once 'phing/types/Reference.php';
-include_once 'phing/tasks/system/PropertyTask.php';
-
-/**
- * Task that invokes phing on another build file.
- *
- * Use this task, for example, if you have nested buildfiles in your project. Unlike
- * AntTask, PhingTask can even support filesets:
- *
- * <pre>
- * <phing>
- * <fileset dir="${srcdir}">
- * <include name="** /build.xml" /> <!-- space added after ** is there because of PHP comment syntax -->
- * <exclude name="build.xml" />
- * </fileset>
- * </phing>
- * </pre>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: 2eec26f6ebaaeceb4eca76644de88bde7515f5dc $
- * @package phing.tasks.system
- */
-class PhingTask extends Task {
-
- /** the basedir where is executed the build file */
- private $dir;
-
- /** build.xml (can be absolute) in this case dir will be ignored */
- private $phingFile;
-
- /** the target to call if any */
- protected $newTarget;
-
- /** should we inherit properties from the parent ? */
- private $inheritAll = true;
-
- /** should we inherit references from the parent ? */
- private $inheritRefs = false;
-
- /** the properties to pass to the new project */
- private $properties = array();
-
- /** the references to pass to the new project */
- private $references = array();
-
- /** The filesets that contain the files PhingTask is to be run on. */
- private $filesets = array();
-
- /** the temporary project created to run the build file */
- private $newProject;
-
- /** Fail the build process when the called build fails? */
- private $haltOnFailure = false;
-
- /**
- * If true, abort the build process if there is a problem with or in the target build file.
- * Defaults to false.
- *
- * @param boolean new value
- */
- public function setHaltOnFailure($hof) {
- $this->haltOnFailure = (boolean) $hof;
- }
-
- /**
- * Creates a Project instance for the project to call.
- * @return void
- */
- public function init() {
- $this->newProject = new Project();
- $tdf = $this->project->getTaskDefinitions();
- $this->newProject->addTaskDefinition("property", $tdf["property"]);
- }
-
- /**
- * Called in execute or createProperty if newProject is null.
- *
- * <p>This can happen if the same instance of this task is run
- * twice as newProject is set to null at the end of execute (to
- * save memory and help the GC).</p>
- *
- * <p>Sets all properties that have been defined as nested
- * property elements.</p>
- */
- private function reinit() {
- $this->init();
- $count = count($this->properties);
- for ($i = 0; $i < $count; $i++) {
- $p = $this->properties[$i];
- $newP = $this->newProject->createTask("property");
- $newP->setName($p->getName());
- if ($p->getValue() !== null) {
- $newP->setValue($p->getValue());
- }
- if ($p->getFile() !== null) {
- $newP->setFile($p->getFile());
- }
- if ($p->getPrefix() !== null) {
- $newP->setPrefix($p->getPrefix());
- }
- if ($p->getRefid() !== null) {
- $newP->setRefid($p->getRefid());
- }
- if ($p->getEnvironment() !== null) {
- $newP->setEnvironment($p->getEnvironment());
- }
- if ($p->getUserProperty() !== null) {
- $newP->setUserProperty($p->getUserProperty());
- }
- if ($p->getOverride() !== null) {
- $newP->setOverride($p->getOverride());
- }
- $this->properties[$i] = $newP;
- }
- }
-
- /**
- * Main entry point for the task.
- *
- * @return void
- */
- public function main() {
-
- // Call Phing on the file set with the attribute "phingfile"
- if ($this->phingFile !== null or $this->dir !== null) {
- $this->processFile();
- }
-
- // if no filesets are given stop here; else process filesets
- if (!empty($this->filesets)) {
- // preserve old settings
- $savedDir = $this->dir;
- $savedPhingFile = $this->phingFile;
- $savedTarget = $this->newTarget;
-
- // set no specific target for files in filesets
- // [HL] I'm commenting this out; I don't know why this should not be supported!
- // $this->newTarget = null;
-
- foreach($this->filesets as $fs) {
-
- $ds = $fs->getDirectoryScanner($this->project);
-
- $fromDir = $fs->getDir($this->project);
- $srcFiles = $ds->getIncludedFiles();
-
- foreach($srcFiles as $fname) {
- $f = new PhingFile($ds->getbasedir(), $fname);
- $f = $f->getAbsoluteFile();
- $this->phingFile = $f->getAbsolutePath();
- $this->dir = $f->getParentFile();
- $this->processFile(); // run Phing!
- }
- }
-
- // side effect free programming ;-)
- $this->dir = $savedDir;
- $this->phingFile = $savedPhingFile;
- $this->newTarget = $savedTarget;
-
- // [HL] change back to correct dir
- if ($this->dir !== null) {
- chdir($this->dir->getAbsolutePath());
- }
- }
-
- // Remove any dangling references to help the GC
- foreach ($this->properties as $property) {
- $property->setFallback(null);
- }
- }
-
- /**
- * Execute phing file.
- *
- * @return void
- */
- private function processFile() {
-
- $buildFailed = false;
- $savedDir = $this->dir;
- $savedPhingFile = $this->phingFile;
- $savedTarget = $this->newTarget;
-
- $savedBasedirAbsPath = null; // this is used to save the basedir *if* we change it
-
- try {
-
- if ($this->newProject === null) {
- $this->reinit();
- }
-
- $this->initializeProject();
-
- if ($this->dir !== null) {
-
- $dirAbsPath = $this->dir->getAbsolutePath();
-
- // BE CAREFUL! -- when the basedir is changed for a project,
- // all calls to getAbsolutePath() on a relative-path dir will
- // be made relative to the project's basedir! This means
- // that subsequent calls to $this->dir->getAbsolutePath() will be WRONG!
-
- // We need to save the current project's basedir first.
- $savedBasedirAbsPath = $this->getProject()->getBasedir()->getAbsolutePath();
-
- $this->newProject->setBasedir($this->dir);
-
- // Now we must reset $this->dir so that it continues to resolve to the same
- // path.
- $this->dir = new PhingFile($dirAbsPath);
-
- if ($savedDir !== null) { // has been set explicitly
- $this->newProject->setInheritedProperty("project.basedir", $this->dir->getAbsolutePath());
- }
-
- } else {
-
- // Since we're not changing the basedir here (for file resolution),
- // we don't need to worry about any side-effects in this scanrio.
- $this->dir = $this->getProject()->getBasedir();
- }
-
- $this->overrideProperties();
- if ($this->phingFile === null) {
- $this->phingFile = "build.xml";
- }
-
- $fu = new FileUtils();
- $file = $fu->resolveFile($this->dir, $this->phingFile);
- $this->phingFile = $file->getAbsolutePath();
-
- $this->log("Calling Buildfile '" . $this->phingFile . "' with target '" . $this->newTarget . "'");
-
- $this->newProject->setUserProperty("phing.file", $this->phingFile);
-
- ProjectConfigurator::configureProject($this->newProject, new PhingFile($this->phingFile));
-
- if ($this->newTarget === null) {
- $this->newTarget = $this->newProject->getDefaultTarget();
- }
-
- // Are we trying to call the target in which we are defined?
- if ($this->newProject->getBaseDir() == $this->project->getBaseDir() &&
- $this->newProject->getProperty("phing.file") == $this->project->getProperty("phing.file") &&
- $this->getOwningTarget() !== null &&
- $this->newTarget == $this->getOwningTarget()->getName()) {
-
- throw new BuildException("phing task calling its own parent target");
- }
-
- $this->addReferences();
- $this->newProject->executeTarget($this->newTarget);
-
- } catch (Exception $e) {
- $buildFailed = true;
- $this->log($e->getMessage(), Project::MSG_ERR);
- if (Phing::getMsgOutputLevel() <= Project::MSG_DEBUG) {
- $lines = explode("\n", $e->getTraceAsString());
- foreach($lines as $line) {
- $this->log($line, Project::MSG_DEBUG);
- }
- }
- // important!!! continue on to perform cleanup tasks.
- }
-
-
- // reset environment values to prevent side-effects.
-
- $this->newProject = null;
- $pkeys = array_keys($this->properties);
- foreach($pkeys as $k) {
- $this->properties[$k]->setProject(null);
- }
-
- $this->dir = $savedDir;
- $this->phingFile = $savedPhingFile;
- $this->newTarget = $savedTarget;
-
- // If the basedir for any project was changed, we need to set that back here.
- if ($savedBasedirAbsPath !== null) {
- chdir($savedBasedirAbsPath);
- }
-
- if ($this->haltOnFailure && $buildFailed) {
- throw new BuildException("Execution of the target buildfile failed. Aborting.");
- }
- }
-
- /**
- * Configure the Project, i.e. make intance, attach build listeners
- * (copy from father project), add Task and Datatype definitions,
- * copy properties and references from old project if these options
- * are set via the attributes of the XML tag.
- *
- * Developer note:
- * This function replaces the old methods "init", "_reinit" and
- * "_initializeProject".
- *
- * @access protected
- */
- private function initializeProject() {
-
- $this->newProject->setInputHandler($this->project->getInputHandler());
-
- foreach($this->project->getBuildListeners() as $listener) {
- $this->newProject->addBuildListener($listener);
- }
-
- /* Copy things from old project. Datatypes and Tasks are always
- * copied, properties and references only if specified so/not
- * specified otherwise in the XML definition.
- */
- // Add Datatype definitions
- foreach ($this->project->getDataTypeDefinitions() as $typeName => $typeClass) {
- $this->newProject->addDataTypeDefinition($typeName, $typeClass);
- }
-
- // Add Task definitions
- foreach ($this->project->getTaskDefinitions() as $taskName => $taskClass) {
- if ($taskClass == "propertytask") {
- // we have already added this taskdef in init()
- continue;
- }
- $this->newProject->addTaskDefinition($taskName, $taskClass);
- }
-
- // set user-defined properties
- $this->project->copyUserProperties($this->newProject);
-
- if (!$this->inheritAll) {
- // set System built-in properties separately,
- // b/c we won't inherit them.
- $this->newProject->setSystemProperties();
-
- } else {
- // set all properties from calling project
- $properties = $this->project->getProperties();
- foreach ($properties as $name => $value) {
- if ($name == "basedir" || $name == "phing.file" || $name == "phing.version") {
- // basedir and phing.file get special treatment in main()
- continue;
- }
- // don't re-set user properties, avoid the warning message
- if ($this->newProject->getProperty($name) === null){
- // no user property
- $this->newProject->setNewProperty($name, $value);
- }
- }
-
- }
-
- }
-
- /**
- * Override the properties in the new project with the one
- * explicitly defined as nested elements here.
- * @return void
- * @throws BuildException
- */
- private function overrideProperties() {
- foreach(array_keys($this->properties) as $i) {
- $p = $this->properties[$i];
- $p->setProject($this->newProject);
- $p->main();
- }
- $this->project->copyInheritedProperties($this->newProject);
- }
-
- /**
- * Add the references explicitly defined as nested elements to the
- * new project. Also copy over all references that don't override
- * existing references in the new project if inheritrefs has been
- * requested.
- *
- * @return void
- * @throws BuildException
- */
- private function addReferences() {
-
- // parent project references
- $projReferences = $this->project->getReferences();
-
- $newReferences = $this->newProject->getReferences();
-
- $subprojRefKeys = array();
-
- if (count($this->references) > 0) {
- for ($i=0, $count=count($this->references); $i < $count; $i++) {
- $ref = $this->references[$i];
- $refid = $ref->getRefId();
-
- if ($refid === null) {
- throw new BuildException("the refid attribute is required"
- . " for reference elements");
- }
- if (!isset($projReferences[$refid])) {
- $this->log("Parent project doesn't contain any reference '"
- . $refid . "'",
- Project::MSG_WARN);
- continue;
- }
-
- $subprojRefKeys[] = $refid;
- //thisReferences.remove(refid);
- $toRefid = $ref->getToRefid();
- if ($toRefid === null) {
- $toRefid = $refid;
- }
- $this->copyReference($refid, $toRefid);
- }
- }
-
- // Now add all references that are not defined in the
- // subproject, if inheritRefs is true
- if ($this->inheritRefs) {
-
- // get the keys that are were not used by the subproject
- $unusedRefKeys = array_diff(array_keys($projReferences), $subprojRefKeys);
-
- foreach($unusedRefKeys as $key) {
- if (isset($newReferences[$key])) {
- continue;
- }
- $this->copyReference($key, $key);
- }
- }
- }
-
- /**
- * Try to clone and reconfigure the object referenced by oldkey in
- * the parent project and add it to the new project with the key
- * newkey.
- *
- * <p>If we cannot clone it, copy the referenced object itself and
- * keep our fingers crossed.</p>
- *
- * @param string $oldKey
- * @param string $newKey
- * @return void
- */
- private function copyReference($oldKey, $newKey) {
- $orig = $this->project->getReference($oldKey);
- if ($orig === null) {
- $this->log("No object referenced by " . $oldKey . ". Can't copy to "
- .$newKey,
- PROJECT_SG_WARN);
- return;
- }
-
- $copy = clone $orig;
-
- if ($copy instanceof ProjectComponent) {
- $copy->setProject($this->newProject);
- } elseif (in_array('setProject', get_class_methods(get_class($copy)))) {
- $copy->setProject($this->newProject);
- } elseif ($copy instanceof Project) {
- // don't copy the old "Project" itself
- } else {
- $msg = "Error setting new project instance for "
- . "reference with id " . $oldKey;
- throw new BuildException($msg);
- }
-
- $this->newProject->addReference($newKey, $copy);
- }
-
- /**
- * If true, pass all properties to the new phing project.
- * Defaults to true.
- *
- * @access public
- */
- function setInheritAll($value) {
- $this->inheritAll = (boolean) $value;
- }
-
- /**
- * If true, pass all references to the new phing project.
- * Defaults to false.
- *
- * @access public
- */
- function setInheritRefs($value) {
- $this->inheritRefs = (boolean)$value;
- }
-
- /**
- * The directory to use as a base directory for the new phing project.
- * Defaults to the current project's basedir, unless inheritall
- * has been set to false, in which case it doesn't have a default
- * value. This will override the basedir setting of the called project.
- *
- * @access public
- */
- function setDir($d) {
- if ( is_string($d) )
- $this->dir = new PhingFile($d);
- else
- $this->dir = $d;
- }
-
- /**
- * The build file to use.
- * Defaults to "build.xml". This file is expected to be a filename relative
- * to the dir attribute given.
- *
- * @access public
- */
- function setPhingfile($s) {
- // it is a string and not a file to handle relative/absolute
- // otherwise a relative file will be resolved based on the current
- // basedir.
- $this->phingFile = $s;
- }
-
- /**
- * Alias function for setPhingfile
- *
- * @access public
- */
- function setBuildfile($s) {
- $this->setPhingFile($s);
- }
-
- /**
- * The target of the new Phing project to execute.
- * Defaults to the new project's default target.
- *
- * @access public
- */
- function setTarget($s) {
- $this->newTarget = $s;
- }
-
- /**
- * Support for filesets; This method returns a reference to an instance
- * of a FileSet object.
- *
- * @return FileSet
- */
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Property to pass to the new project.
- * The property is passed as a 'user property'
- *
- * @access public
- */
- function createProperty() {
- $p = new PropertyTask();
- $p->setFallback($this->newProject);
- $p->setUserProperty(true);
- $this->properties[] = $p;
- return $p;
- }
-
- /**
- * Reference element identifying a data type to carry
- * over to the new project.
- *
- * @access public
- */
- function createReference() {
- $num = array_push($this->references, new PhingReference());
- return $this->references[$num-1];
- }
-
-}
-
-/**
- * Helper class that implements the nested <reference>
- * element of <phing> and <phingcall>.
- *
- * @package phing.tasks.system
- */
-class PhingReference extends Reference {
-
- private $targetid = null;
-
- /**
- * Set the id that this reference to be stored under in the
- * new project.
- *
- * @param targetid the id under which this reference will be passed to
- * the new project */
- public function setToRefid($targetid) {
- $this->targetid = $targetid;
- }
-
- /**
- * Get the id under which this reference will be stored in the new
- * project
- *
- * @return the id of the reference in the new project.
- */
- public function getToRefid() {
- return $this->targetid;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/PhpEvalTask.php b/buildscripts/phing/classes/phing/tasks/system/PhpEvalTask.php
deleted file mode 100755
index 99316f7b..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/PhpEvalTask.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-/*
- * $Id: 8c46403ac685f362e310ffcceff5d4193bf09ef0 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Executes PHP function or evaluates expression and sets return value to a property.
- *
- * WARNING:
- * This task can, of course, be abused with devastating effects. E.g. do not
- * modify internal Phing classes unless you know what you are doing.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- *
- * @todo Add support for evaluating expressions
- */
-class PhpEvalTask extends Task {
-
- protected $expression; // Expression to evaluate
- protected $function; // Function to execute
- protected $class; // Class containing function to execute
- protected $returnProperty = null; // name of property to set to return value
- protected $params = array(); // parameters for function calls
-
- protected $logLevel = Project::MSG_INFO;
-
- /**
- * Set level of log messages generated (default = info)
- * @param string $level
- */
- public function setLevel($level)
- {
- switch ($level)
- {
- case "error": $this->logLevel = Project::MSG_ERR; break;
- case "warning": $this->logLevel = Project::MSG_WARN; break;
- case "info": $this->logLevel = Project::MSG_INFO; break;
- case "verbose": $this->logLevel = Project::MSG_VERBOSE; break;
- case "debug": $this->logLevel = Project::MSG_DEBUG; break;
- }
- }
-
- /** Main entry point. */
- function main() {
-
- if ($this->function === null && $this->expression === null) {
- throw new BuildException("You must specify a function to execute or PHP expression to evalute.", $this->location);
- }
-
- if ($this->function !== null && $this->expression !== null) {
- throw new BuildException("You can specify function or expression, but not both.", $this->location);
- }
-
- if ($this->expression !== null && !empty($this->params)) {
- throw new BuildException("You cannot use nested <param> tags when evaluationg a PHP expression.", $this->location);
- }
-
- if ($this->function !== null) {
- $this->callFunction();
- } elseif ($this->expression !== null) {
- $this->evalExpression();
- }
- }
-
- /**
- * Calls function and returns results.
- * @return mixed
- */
- protected function callFunction() {
-
- if ($this->class !== null) {
- // import the classname & unqualify it, if necessary
- $this->class = Phing::import($this->class);
-
- $user_func = array($this->class, $this->function);
- $h_func = $this->class . '::' . $this->function; // human-readable (for log)
- } else {
- $user_func = $this->function;
- $h_func = $user_func; // human-readable (for log)
- }
-
- // put parameters into simple array
- $params = array();
- foreach($this->params as $p) {
- $params[] = $p->getValue();
- }
-
- $this->log("Calling PHP function: " . $h_func . "()", $this->logLevel);
- foreach($params as $p) {
- $this->log(" param: " . $p, Project::MSG_VERBOSE);
- }
-
- $return = call_user_func_array($user_func, $params);
-
- if ($this->returnProperty !== null) {
- $this->project->setProperty($this->returnProperty, $return);
- }
- }
-
- /**
- * Evaluates expression and returns resulting value.
- * @return mixed
- */
- protected function evalExpression() {
- $this->log("Evaluating PHP expression: " . $this->expression, $this->logLevel);
- if (!StringHelper::endsWith(';', trim($this->expression))) {
- $this->expression .= ';';
- }
-
- if ($this->returnProperty !== null) {
- $retval = null;
- eval('$retval = ' . $this->expression);
- $this->project->setProperty($this->returnProperty, $retval);
- } else {
- eval($this->expression);
- }
- }
-
- /** Set function to execute */
- public function setFunction($f) {
- $this->function = $f;
- }
-
- /** Set [static] class which contains function to execute */
- public function setClass($c) {
- $this->class = $c;
- }
-
- /** Sets property name to set with return value of function or expression.*/
- public function setReturnProperty($r) {
- $this->returnProperty = $r;
- }
-
- /** Set PHP expression to evaluate. */
- public function addText($expression) {
- $this->expression = $expression;
- }
-
- /** Set PHP expression to evaluate. */
- public function setExpression($expression) {
- $this->expression = $expression;
- }
-
- /** Add a nested <param> tag. */
- public function createParam() {
- $p = new FunctionParam();
- $this->params[] = $p;
- return $p;
- }
-}
-
-/**
- * Supports the <param> nested tag for PhpTask.
- *
- * @package phing.tasks.system
- */
-class FunctionParam {
-
- private $val;
-
- public function setValue($v) {
- $this->val = $v;
- }
-
- public function addText($v) {
- $this->val = $v;
- }
-
- public function getValue() {
- return $this->val;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/system/PropertyPromptTask.php b/buildscripts/phing/classes/phing/tasks/system/PropertyPromptTask.php
deleted file mode 100755
index 7a337764..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/PropertyPromptTask.php
+++ /dev/null
@@ -1,234 +0,0 @@
-<?php
-/*
- * $Id: d2de9371732599b179facb97ef937b2cfbfbead2 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/system/io/ConsoleReader.php';
-
-/**
- * Deprecated task that uses console to prompt user for property values.
- *
- * This class is very slightly simpler than the InputTask, but lacks the ability
- * to use a non-console input handler. You should, therefore, use InputTask. This
- * class can serve as a reference, but will be removed in the future.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Anthony J. Young-Garner <ajyoung@alum.mit.edu> (Ant)
- * @version $Id$
- * @package phing.tasks.system
- * @deprecated - in favor of the more capable InputTask
- */
-class PropertyPromptTask extends Task {
-
- /**
- * The property name to set with the output.
- * @var string
- */
- private $propertyName; // required
-
- /**
- * The default value to use if no input is entered.
- * @var string
- */
- private $defaultValue;
-
- /**
- * The entered value.
- * @var string
- */
- private $proposedValue;
-
- /**
- * The text to use for the prompt.
- * @var string
- */
- private $promptText;
-
- /**
- * The character to put after the text.
- * @var string
- */
- private $promptCharacter;
-
- /**
- *
- */
- private $useExistingValue;
-
- /**
- * Run the PropertyPrompt task.
- * @throws BuildException
- */
- public function main() {
-
- $this->proposedValue = $this->project->getProperty($this->propertyName);
- $currentValue = $this->defaultValue;
-
- if ($currentValue == "" && $this->proposedValue !== null) {
- $currentValue = $this->proposedValue;
- }
-
- if ($this->useExistingValue !== true || $this->proposedValue === null) {
-
- $this->log("Prompting user for " . $this->propertyName . ". " . $this->getDefaultMessage(), Project::MSG_VERBOSE);
-
- print "\n" . $this->promptText . " [" . $currentValue . "] " . $this->promptCharacter . " ";
-
- /** future version should probably have hooks for validation of user input.*/
- $reader = new ConsoleReader();
-
- try {
- $this->proposedValue = $reader->readLine();
- } catch (IOException $e) {
- $this->log("Prompt failed. Using default. (Failure reason: " . $e->getMessage().")");
- $this->proposedValue = $this->defaultValue;
- }
-
- if ($this->proposedValue === "") {
- $this->log("No value specified, using default.", Project::MSG_VERBOSE);
- $this->proposedValue = $this->defaultValue;
- }
-
- if (isset($this->proposedValue)) {
- $this->project->setProperty($this->propertyName, $this->proposedValue);
- }
-
- }
- }
-
- /**
- * Returns a string to be inserted in the log message
- * indicating whether a default response was specified
- * in the build file.
- */
- private function getDefaultMessage() {
- if ($this->defaultValue == "") {
- return "No default response specified.";
- } else return "Default response is " . $this->defaultValue . ".";
- }
-
- /**
- * Returns defaultValue specified
- * in this task for the Property
- * being set.
- * @return string
- */
- public function getDefaultValue() {
- return $this->defaultValue;
- }
-
- /**
- * Returns the terminating character used to
- * punctuate the prompt text.
- * @return string
- */
- public function getPromptCharacter() {
- return $this->promptCharacter;
- }
-
- /**
- * Returns text of the prompt.
- * @return java.lang.String
- */
- public function getPromptText() {
- return $this->promptText;
- }
-
- /**
- * Returns name of the Ant Project Property
- * being set by this task.
- * @return string
- */
- public function getPropertyName() {
- return $this->propertyName;
- }
- /**
- * Initializes this task.
- */
- public function init() {
- parent::init();
- $this->defaultValue = "";
- $this->promptCharacter = "?";
- $this->useExistingValue = false;
- }
-
- /**
- * Insert the method's description here.
- * Creation date: (12/10/2001 8:16:16 AM)
- * @return boolean
- */
- public function isUseExistingValue() {
- return $this->useExistingValue;
- }
-
- /**
- * Sets defaultValue for the Property
- * being set by this task.
- * @param string $newDefaultvalue
- */
- public function setDefaultvalue($newDefaultvalue) {
- $this->defaultValue = $newDefaultvalue;
- }
-
- /**
- * Sets the terminating character used to
- * punctuate the prompt text (default is "?").
- * @param string $newPromptcharacter
- */
- public function setPromptCharacter($newPromptcharacter) {
- $this->promptCharacter = $newPromptcharacter;
- }
-
- /**
- * Sets text of the prompt.
- * @param string $newPrompttext
- */
- public function setPromptText($newPrompttext) {
- $this->promptText = $newPrompttext;
- }
-
- /**
- * Specifies the Phing Project Property
- * being set by this task.
- * @param newPropertyname java.lang.String
- */
- public function setPropertyName($newPropertyname) {
- $this->propertyName = $newPropertyname;
- }
-
- /**
- *
- * @param boolean $newUseExistingValue
- */
- public function setUseExistingValue($newUseExistingValue) {
- $this->useExistingValue = $newUseExistingValue;
- }
-
- /**
- * Sets the prompt text that will be presented to the user.
- * @param string $prompt
- * @return void
- */
- public function addText($prompt) {
- $this->setPromptText($prompt);
- }
-
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/PropertyTask.php b/buildscripts/phing/classes/phing/tasks/system/PropertyTask.php
deleted file mode 100755
index 0d8854c8..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/PropertyTask.php
+++ /dev/null
@@ -1,438 +0,0 @@
-<?php
-
-/*
- * $Id: e6d7123b6331d5032ad1e67967cf54ef2aae3f7f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/Task.php';
-include_once 'phing/system/util/Properties.php';
-
-/**
- * Task for setting properties in buildfiles.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: e6d7123b6331d5032ad1e67967cf54ef2aae3f7f $
- * @package phing.tasks.system
- */
-class PropertyTask extends Task {
-
- /** name of the property */
- protected $name;
-
- /** value of the property */
- protected $value;
-
- protected $reference;
- protected $env; // Environment
- protected $file;
- protected $ref;
- protected $prefix;
- protected $fallback;
-
- /** Whether to force overwrite of existing property. */
- protected $override = false;
-
- /** Whether property should be treated as "user" property. */
- protected $userProperty = false;
-
- /**
- * Sets a the name of current property component
- */
- function setName($name) {
- $this->name = (string) $name;
- }
-
- /** Get property component name. */
- function getName() {
- return $this->name;
- }
-
- /**
- * Sets a the value of current property component.
- * @param mixed Value of name, all scalars allowed
- */
- function setValue($value) {
- $this->value = (string) $value;
- }
-
- /**
- * Sets value of property to CDATA tag contents.
- * @param string $values
- * @since 2.2.0
- */
- public function addText($value) {
- $this->setValue($value);
- }
-
- /** Get the value of current property component. */
- function getValue() {
- return $this->value;
- }
-
- /** Set a file to use as the source for properties. */
- function setFile($file) {
- if (is_string($file)) {
- $file = new PhingFile($file);
- }
- $this->file = $file;
- }
-
- /** Get the PhingFile that is being used as property source. */
- function getFile() {
- return $this->file;
- }
-
- function setRefid(Reference $ref) {
- $this->reference = $ref;
- }
-
- function getRefid() {
- return $this->reference;
- }
-
- /**
- * Prefix to apply to properties loaded using <code>file</code>.
- * A "." is appended to the prefix if not specified.
- * @param string $prefix prefix string
- * @return void
- * @since 2.0
- */
- public function setPrefix($prefix) {
- $this->prefix = $prefix;
- if (!StringHelper::endsWith(".", $prefix)) {
- $this->prefix .= ".";
- }
- }
-
- /**
- * @return string
- * @since 2.0
- */
- public function getPrefix() {
- return $this->prefix;
- }
-
- /**
- * the prefix to use when retrieving environment variables.
- * Thus if you specify environment="myenv"
- * you will be able to access OS-specific
- * environment variables via property names "myenv.PATH" or
- * "myenv.TERM".
- * <p>
- * Note that if you supply a property name with a final
- * "." it will not be doubled. ie environment="myenv." will still
- * allow access of environment variables through "myenv.PATH" and
- * "myenv.TERM". This functionality is currently only implemented
- * on select platforms. Feel free to send patches to increase the number of platforms
- * this functionality is supported on ;).<br>
- * Note also that properties are case sensitive, even if the
- * environment variables on your operating system are not, e.g. it
- * will be ${env.Path} not ${env.PATH} on Windows 2000.
- * @param env prefix
- */
- function setEnvironment($env) {
- $this->env = (string) $env;
- }
-
- function getEnvironment() {
- return $this->env;
- }
-
- /**
- * Set whether this is a user property (ro).
- * This is deprecated in Ant 1.5, but the userProperty attribute
- * of the class is still being set via constructor, so Phing will
- * allow this method to function.
- * @param boolean $v
- */
- function setUserProperty($v) {
- $this->userProperty = (boolean) $v;
- }
-
- function getUserProperty() {
- return $this->userProperty;
- }
-
- function setOverride($v) {
- $this->override = (boolean) $v;
- }
-
- function getOverride() {
- return $this->override;
- }
-
- function toString() {
- return (string) $this->value;
- }
-
- /**
- * @param Project $p
- */
- function setFallback($p) {
- $this->fallback = $p;
- }
-
- function getFallback() {
- return $this->fallback;
- }
- /**
- * set the property in the project to the value.
- * if the task was give a file or env attribute
- * here is where it is loaded
- */
- function main() {
- if ($this->name !== null) {
- if ($this->value === null && $this->ref === null) {
- throw new BuildException("You must specify value or refid with the name attribute", $this->getLocation());
- }
- } else {
- if ($this->file === null && $this->env === null ) {
- throw new BuildException("You must specify file or environment when not using the name attribute", $this->getLocation());
- }
- }
-
- if ($this->file === null && $this->prefix !== null) {
- throw new BuildException("Prefix is only valid when loading from a file.", $this->getLocation());
- }
-
- if (($this->name !== null) && ($this->value !== null)) {
- $this->addProperty($this->name, $this->value);
- }
-
- if ($this->file !== null) {
- $this->loadFile($this->file);
- }
-
- if ( $this->env !== null ) {
- $this->loadEnvironment($this->env);
- }
-
- if (($this->name !== null) && ($this->ref !== null)) {
- // get the refereced property
- try {
- $this->addProperty($this->name, $this->reference->getReferencedObject($this->project)->toString());
- } catch (BuildException $be) {
- if ($this->fallback !== null) {
- $this->addProperty($this->name, $this->reference->getReferencedObject($this->fallback)->toString());
- } else {
- throw $be;
- }
- }
- }
- }
-
- /**
- * load the environment values
- * @param string $prefix prefix to place before them
- */
- protected function loadEnvironment($prefix) {
-
- $props = new Properties();
- if ( substr($prefix, strlen($prefix)-1) == '.' ) {
- $prefix .= ".";
- }
- $this->log("Loading Environment $prefix", Project::MSG_VERBOSE);
- foreach($_ENV as $key => $value) {
- $props->setProperty($prefix . '.' . $key, $value);
- }
- $this->addProperties($props);
- }
-
- /**
- * iterate through a set of properties,
- * resolve them then assign them
- */
- protected function addProperties($props) {
- $this->resolveAllProperties($props);
- foreach($props->keys() as $name) {
- $value = $props->getProperty($name);
- $v = $this->project->replaceProperties($value);
- if ($this->prefix !== null) {
- $name = $this->prefix . $name;
- }
- $this->addProperty($name, $v);
- }
- }
-
- /**
- * add a name value pair to the project property set
- * @param string $name name of property
- * @param string $value value to set
- */
- protected function addProperty($name, $value) {
- if ($this->userProperty) {
- if ($this->project->getUserProperty($name) === null || $this->override) {
- $this->project->setInheritedProperty($name, $value);
- } else {
- $this->log("Override ignored for " . $name, Project::MSG_VERBOSE);
- }
- } else {
- if ($this->override) {
- $this->project->setProperty($name, $value);
- } else {
- $this->project->setNewProperty($name, $value);
- }
- }
- }
-
- /**
- * load properties from a file.
- * @param PhingFile $file
- */
- protected function loadFile(PhingFile $file) {
- $props = new Properties();
- $this->log("Loading ". $file->getAbsolutePath(), Project::MSG_INFO);
- try { // try to load file
- if ($file->exists()) {
- $props->load($file);
- $this->addProperties($props);
- } else {
- $this->log("Unable to find property file: ". $file->getAbsolutePath() ."... skipped", Project::MSG_WARN);
- }
- } catch (IOException $ioe) {
- throw new BuildException("Could not load properties from file.", $ioe);
- }
- }
-
- /**
- * Given a Properties object, this method goes through and resolves
- * any references to properties within the object.
- *
- * @param Properties $props The collection of Properties that need to be resolved.
- * @return void
- */
- protected function resolveAllProperties(Properties $props) {
-
- $keys = $props->keys();
-
- while(count($keys)) {
-
- // There may be a nice regex/callback way to handle this
- // replacement, but at the moment it is pretty complex, and
- // would probably be a lot uglier to work into a preg_replace_callback()
- // system. The biggest problem is the fact that a resolution may require
- // multiple passes.
-
- $name = array_shift($keys);
- $value = $props->getProperty($name);
- $resolved = false;
-
- while(!$resolved) {
-
- $fragments = array();
- $propertyRefs = array();
-
- // [HL] this was ::parsePropertyString($this->value ...) ... this seems wrong
- self::parsePropertyString($value, $fragments, $propertyRefs);
-
- $resolved = true;
- if (count($propertyRefs) !== 0) {
-
- $sb = "";
-
- $i = $fragments;
- $j = $propertyRefs;
- while(count($i)) {
- $fragment = array_shift($i);
- if ($fragment === null) {
- $propertyName = array_shift($j);
-
- if ($propertyName === $name) {
- // Should we maybe just log this as an error & move on?
- // $this->log("Property ".$name." was circularly defined.", Project::MSG_ERR);
- throw new BuildException("Property ".$name." was circularly defined.");
- }
-
- $fragment = $this->getProject()->getProperty($propertyName);
- if ($fragment === null) {
- if ($props->containsKey($propertyName)) {
- $fragment = $props->getProperty($propertyName);
- $resolved = false; // parse again (could have been replaced w/ another var)
- } else {
- $fragment = "\${".$propertyName."}";
- }
- }
- }
- $sb .= $fragment;
- }
-
- $this->log("Resolved Property \"$value\" to \"$sb\"", Project::MSG_DEBUG);
- $value = $sb;
- $props->setProperty($name, $value);
-
- } // if (count($propertyRefs))
-
- } // while (!$resolved)
-
- } // while (count($keys)
- }
-
-
- /**
- * This method will parse a string containing ${value} style
- * property values into two lists. The first list is a collection
- * of text fragments, while the other is a set of string property names
- * null entries in the first list indicate a property reference from the
- * second list.
- *
- * This is slower than regex, but useful for this class, which has to handle
- * multiple parsing passes for properties.
- *
- * @param string $value The string to be scanned for property references
- * @param array &$fragments The found fragments
- * @param array &$propertyRefs The found refs
- */
- protected function parsePropertyString($value, &$fragments, &$propertyRefs) {
-
- $prev = 0;
- $pos = 0;
-
- while (($pos = strpos($value, '$', $prev)) !== false) {
-
- if ($pos > $prev) {
- array_push($fragments, StringHelper::substring($value, $prev, $pos-1));
- }
- if ($pos === (strlen($value) - 1)) {
- array_push($fragments, '$');
- $prev = $pos + 1;
- } elseif ($value{$pos+1} !== '{' ) {
-
- // the string positions were changed to value-1 to correct
- // a fatal error coming from function substring()
- array_push($fragments, StringHelper::substring($value, $pos, $pos + 1));
- $prev = $pos + 2;
- } else {
- $endName = strpos($value, '}', $pos);
- if ($endName === false) {
- throw new BuildException("Syntax error in property: $value");
- }
- $propertyName = StringHelper::substring($value, $pos + 2, $endName-1);
- array_push($fragments, null);
- array_push($propertyRefs, $propertyName);
- $prev = $endName + 1;
- }
- }
-
- if ($prev < strlen($value)) {
- array_push($fragments, StringHelper::substring($value, $prev));
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/ReflexiveTask.php b/buildscripts/phing/classes/phing/tasks/system/ReflexiveTask.php
deleted file mode 100755
index d49c47f2..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ReflexiveTask.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-/*
- * $Id: 3dcb1ad6e9fd3b2801c1fe3bcbaf2fcab8ea6018 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * This task is for using filter chains to make changes to files and overwrite the original files.
- *
- * This task was created to serve the need for "cleanup" tasks -- e.g. a ReplaceRegexp task or strip task
- * being used to modify files and then overwrite the modified files. In many (most?) cases you probably
- * should just use a copy task to preserve the original source files, but this task supports situations
- * where there is no src vs. build directory, and modifying source files is actually desired.
- *
- * <code>
- * <reflexive>
- * <fileset dir=".">
- * <include pattern="*.html">
- * </fileset>
- * <filterchain>
- * <replaceregexp>
- * <regexp pattern="\n\r" replace="\n"/>
- * </replaceregexp>
- * </filterchain>
- * </reflexive>
- * </code>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class ReflexiveTask extends Task {
-
- /** Single file to process. */
- private $file;
-
- /** Any filesets that should be processed. */
- private $filesets = array();
-
- /** Any filters to be applied before append happens. */
- private $filterChains = array();
-
- /** Alias for setFrom() */
- function setFile(PhingFile $f) {
- $this->file = $f;
- }
-
- /** Nested creator, adds a set of files (nested fileset attribute). */
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Creates a filterchain
- *
- * @return object The created filterchain object
- */
- function createFilterChain() {
- $num = array_push($this->filterChains, new FilterChain($this->project));
- return $this->filterChains[$num-1];
- }
-
- /** Append the file(s). */
- function main() {
-
- if ($this->file === null && empty($this->filesets)) {
- throw new BuildException("You must specify a file or fileset(s) for the <reflexive> task.");
- }
-
- // compile a list of all files to modify, both file attrib and fileset elements
- // can be used.
-
- $files = array();
-
- if ($this->file !== null) {
- $files[] = $this->file;
- }
-
- if (!empty($this->filesets)) {
- $filenames = array();
- foreach($this->filesets as $fs) {
- try {
- $ds = $fs->getDirectoryScanner($this->project);
- $filenames = $ds->getIncludedFiles(); // get included filenames
- $dir = $fs->getDir($this->project);
- foreach ($filenames as $fname) {
- $files[] = new PhingFile($dir, $fname);
- }
- } catch (BuildException $be) {
- $this->log($be->getMessage(), Project::MSG_WARN);
- }
- }
- }
-
- $this->log("Applying reflexive processing to " . count($files) . " files.");
-
- // These "slots" allow filters to retrieve information about the currently-being-process files
- $slot = $this->getRegisterSlot("currentFile");
- $basenameSlot = $this->getRegisterSlot("currentFile.basename");
-
-
- foreach($files as $file) {
- // set the register slots
-
- $slot->setValue($file->getPath());
- $basenameSlot->setValue($file->getName());
-
- // 1) read contents of file, pulling through any filters
- $in = null;
- try {
- $contents = "";
- $in = FileUtils::getChainedReader(new FileReader($file), $this->filterChains, $this->project);
- while(-1 !== ($buffer = $in->read())) {
- $contents .= $buffer;
- }
- $in->close();
- } catch (Exception $e) {
- if ($in) $in->close();
- $this->log("Erorr reading file: " . $e->getMessage(), Project::MSG_WARN);
- }
-
- try {
- // now create a FileWriter w/ the same file, and write to the file
- $out = new FileWriter($file);
- $out->write($contents);
- $out->close();
- $this->log("Applying reflexive processing to " . $file->getPath(), Project::MSG_VERBOSE);
- } catch (Exception $e) {
- if ($out) $out->close();
- $this->log("Error writing file back: " . $e->getMessage(), Project::MSG_WARN);
- }
-
- }
-
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/ResolvePathTask.php b/buildscripts/phing/classes/phing/tasks/system/ResolvePathTask.php
deleted file mode 100755
index bdd707a2..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/ResolvePathTask.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-/*
- * $Id: 9635ed3f6605f5ed64b74e85731dbcd3ad43ce0f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Task for resolving relative paths and setting absolute path in property value.
- *
- * This task was created to address a need for resolving absolute paths of files / directories.
- * In many cases a relative directory (e.g. "./build") is specified, but it needs to be treated
- * as an absolute path since other build files (e.g. in subdirs) should all be using the same
- * path -- and not treating it as a relative path to their own directory.
- *
- * <code>
- * <property name="relative_path" value="./dirname"/>
- * <resolvepath propertyName="absolute_path" file="${relative_path}"/>
- * <echo>Resolved [absolute] path: ${absolute_path}</echo>
- * </code>
- *
- * TODO:
- * - Possibly integrate this with PackageAsPath, for handling/resolving dot-path paths.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class ResolvePathTask extends Task {
-
- /** Name of property to set. */
- private $propertyName;
-
- /** The [possibly] relative file/path that needs to be resolved. */
- private $file;
-
- /** Base directory used for resolution. */
- private $dir;
-
- /**
- * Log level
- */
- private $logLevel = Project::MSG_VERBOSE;
-
- /**
- * Set the name of the property to set.
- * @param string $v Property name
- * @return void
- */
- public function setPropertyName($v) {
- $this->propertyName = $v;
- }
-
- /**
- * Sets a base dir to use for resolution.
- * @param PhingFile $d
- */
- function setDir(PhingFile $d) {
- $this->dir = $d;
- }
-
- /**
- * Sets a path (file or directory) that we want to resolve.
- * This is the same as setFile() -- just more generic name so that it's
- * clear that you can also use it to set directory.
- * @param string $f
- * @see setFile()
- */
- function setPath($f) {
- $this->file = $f;
- }
-
- /**
- * Sets a file that we want to resolve.
- * @param string $f
- */
- function setFile($f) {
- $this->file = $f;
- }
-
- /**
- * Set level of log messages generated (default = verbose)
- *
- * @param string $level Log level
- *
- * @return void
- */
- public function setLevel($level)
- {
- switch ($level) {
- case 'error':
- $this->logLevel = Project::MSG_ERR;
- break;
- case 'warning':
- $this->logLevel = Project::MSG_WARN;
- break;
- case 'info':
- $this->logLevel = Project::MSG_INFO;
- break;
- case 'verbose':
- $this->logLevel = Project::MSG_VERBOSE;
- break;
- case 'debug':
- $this->logLevel = Project::MSG_DEBUG;
- break;
- default:
- throw new BuildException(
- sprintf('Unknown log level "%s"', $level)
- );
- }
- }
-
- /**
- * Perform the resolution & set property.
- */
- public function main() {
-
- if (!$this->propertyName) {
- throw new BuildException("You must specify the propertyName attribute", $this->getLocation());
- }
-
- // Currently only files are supported
- if ($this->file === null) {
- throw new BuildException("You must specify a path to resolve", $this->getLocation());
- }
-
- $fs = FileSystem::getFileSystem();
-
- // if dir attribute was specified then we should
- // use that as basedir to which file was relative.
- // -- unless the file specified is an absolute path
- if ($this->dir !== null && !$fs->isAbsolute(new PhingFile($this->file))) {
- $resolved = new PhingFile($this->dir->getPath(), $this->file);
- } else {
- // otherwise just resolve it relative to project basedir
- $resolved = $this->project->resolveFile($this->file);
- }
-
- $this->log("Resolved " . $this->file . " to " . $resolved->getAbsolutePath(), $this->logLevel);
- $this->project->setProperty($this->propertyName, $resolved->getAbsolutePath());
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/SequentialTask.php b/buildscripts/phing/classes/phing/tasks/system/SequentialTask.php
deleted file mode 100644
index d080deda..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/SequentialTask.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/*
- * $Id: e6be0ff54ade0fb900d101759d8788590e769831 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-require_once 'phing/TaskContainer.php';
-
-/**
- * Sequential is a container task that contains other Phing Task objects.
- *
- * The sequential task has no attributes and does not support any nested
- * elements apart from Ant tasks. Any valid Ant task may be embedded within the
- * sequential task.
- *
- * @since 2.1.2
- * @package phing.tasks.system
- */
-class SequentialTask extends Task implements TaskContainer {
-
- /** Optional Vector holding the nested tasks */
- protected $nestedTasks = array();
-
- /**
- * Add a nested task to Sequential.
- * @param Task $nestedTask Nested task to execute Sequential
- */
- public function addTask(Task $nestedTask) {
- $this->nestedTasks[] = $nestedTask;
- }
-
- /**
- * Execute all nestedTasks.
- * @throws BuildException if one of the nested tasks fails.
- */
- public function main() {
- foreach($this->nestedTasks as $task) {
- $task->perform();
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/TaskdefTask.php b/buildscripts/phing/classes/phing/tasks/system/TaskdefTask.php
deleted file mode 100755
index 84552d69..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/TaskdefTask.php
+++ /dev/null
@@ -1,165 +0,0 @@
-<?php
-
-/*
- * $Id: df52def0bb44ce1b0909f5e8858e79b2ef88ca0f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/system/io/PhingFile.php';
-
-/**
- * Register a task for use within a buildfile.
- *
- * This is for registering your own tasks -- or any non-core Task -- for use within a buildfile.
- * If you find that you are using a particular class frequently, you may want to edit the
- * phing/tasks/defaults.properties file so that it is included by default. You may also
- * want to submit it (if LGPL or compatible license) to be included in Phing distribution.
- *
- * <pre>
- * <taskdef name="mytag" classname="path.to.MyHandlingClass"/>
- * .
- * .
- * <mytag param1="val1" param2="val2"/>
- * </pre>
- *
- * TODO:
- * -- possibly refactor since this is almost the same as TypeDefTask
- * (right now these are just too simple to really justify creating an abstract class)
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id: df52def0bb44ce1b0909f5e8858e79b2ef88ca0f $
- * @package phing.tasks.system
- */
-class TaskdefTask extends Task {
-
- /** Tag name for task that will be used in XML */
- private $name;
-
- /**
- * Classname of task to register.
- * This can be a dot-path -- relative to a location on PHP include_path.
- * E.g. path.to.MyClass -> path/to/MyClass.php
- * @var string
- */
- private $classname;
-
- /**
- * Path to add to PHP include_path to aid in finding specified class.
- * @var Path
- */
- private $classpath;
-
- /**
- * Refid to already defined classpath
- */
- private $classpathId;
-
- /**
- * Name of file to load multiple definitions from.
- * @var string
- */
- private $typeFile;
-
- /**
- * Set the classpath to be used when searching for component being defined
- *
- * @param Path $classpath A Path object containing the classpath.
- */
- public function setClasspath(Path $classpath) {
- if ($this->classpath === null) {
- $this->classpath = $classpath;
- } else {
- $this->classpath->append($classpath);
- }
- }
-
- /**
- * Create the classpath to be used when searching for component being defined
- *
- * @return Path
- */
- public function createClasspath() {
- if ($this->classpath === null) {
- $this->classpath = new Path($this->project);
- }
- return $this->classpath->createPath();
- }
-
- /**
- * Reference to a classpath to use when loading the files.
- */
- public function setClasspathRef(Reference $r) {
- $this->classpathId = $r->getRefId();
- $this->createClasspath()->setRefid($r);
- }
-
- /**
- * Sets the name that will be used in XML buildfile.
- * @param string $name
- */
- public function setName($name) {
- $this->name = $name;
- }
-
- /**
- * Sets the class name / dotpath to use.
- * @param string $class
- */
- public function setClassname($class) {
- $this->classname = $class;
- }
-
- /**
- * Sets the file of definitionas to use to use.
- * @param string $file
- */
- public function setFile($file) {
- $this->typeFile = $file;
- }
-
- /** Main entry point */
- public function main() {
- if ($this->typeFile === null &&
- ($this->name === null || $this->classname === null)) {
- throw new BuildException("You must specify name and class attributes for <taskdef>.");
- }
- if ($this->typeFile == null) {
- $this->log("Task " . $this->name . " will be handled by class " . $this->classname, Project::MSG_VERBOSE);
- $this->project->addTaskDefinition($this->name, $this->classname, $this->classpath);
- } else {
- try { // try to load taskdefs given in file
- $props = new Properties();
- $in = new PhingFile((string) $this->typeFile);
-
- if ($in === null) {
- throw new BuildException("Can't load task list {$this->typeFile}");
- }
- $props->load($in);
-
- $enum = $props->propertyNames();
- foreach($enum as $key) {
- $value = $props->getProperty($key);
- $this->project->addTaskDefinition($key, $value, $this->classpath);
- }
- } catch (IOException $ioe) {
- throw new BuildException("Can't load task list {$this->typeFile}");
- }
- }
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/TouchTask.php b/buildscripts/phing/classes/phing/tasks/system/TouchTask.php
deleted file mode 100755
index 3c45d0d3..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/TouchTask.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-/*
- * $Id: e581b40ff4e3eac5f62a32b48b4a22285cbc51c1 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/util/DirectoryScanner.php';
-include_once 'phing/types/FileSet.php';
-include_once 'phing/util/FileUtils.php';
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/system/io/IOException.php';
-
-/**
- * Touch a file and/or fileset(s); corresponds to the Unix touch command.
- *
- * If the file to touch doesn't exist, an empty one is created.
- *
- * @version $Id$
- * @package phing.tasks.system
- */
-class TouchTask extends Task {
-
- private $file;
- private $millis = -1;
- private $dateTime;
- private $filesets = array();
- private $fileUtils;
-
- function __construct() {
- $this->fileUtils = new FileUtils();
- }
-
- /**
- * Sets a single source file to touch. If the file does not exist
- * an empty file will be created.
- */
- function setFile(PhingFile $file) {
- $this->file = $file;
- }
-
- /**
- * the new modification time of the file
- * in milliseconds since midnight Jan 1 1970.
- * Optional, default=now
- */
- function setMillis($millis) {
- $this->millis = (int) $millis;
- }
-
- /**
- * the new modification time of the file
- * in the format MM/DD/YYYY HH:MM AM or PM;
- * Optional, default=now
- */
- function setDatetime($dateTime) {
- $this->dateTime = (string) $dateTime;
- }
-
- /**
- * Nested creator, adds a set of files (nested fileset attribute).
- * @return FileSet
- */
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Execute the touch operation.
- */
- function main() {
- $savedMillis = $this->millis;
-
- if ($this->file === null && count($this->filesets) === 0) {
- throw new BuildException("Specify at least one source - a file or a fileset.");
- }
-
- if ($this->file !== null && $this->file->exists() && $this->file->isDirectory()) {
- throw new BuildException("Use a fileset to touch directories.");
- }
-
- try { // try to touch file
- if ($this->dateTime !== null) {
- $this->setMillis(strtotime($this->dateTime));
- if ($this->millis < 0) {
- throw new BuildException("Date of {$this->dateTime} results in negative milliseconds value relative to epoch (January 1, 1970, 00:00:00 GMT).");
- }
- }
- $this->_touch();
- } catch (Exception $ex) {
- throw new BuildException("Error touch()ing file", $ex, $this->location);
- }
-
- $this->millis = $savedMillis;
-
- }
-
- /**
- * Does the actual work.
- */
- function _touch() {
- if ($this->file !== null) {
- if (!$this->file->exists()) {
- $this->log("Creating " . $this->file->__toString(), Project::MSG_INFO);
- try { // try to create file
- $this->file->createNewFile();
- } catch(IOException $ioe) {
- throw new BuildException("Error creating new file " . $this->file->__toString(), $ioe, $this->location);
- }
- }
- }
-
- $resetMillis = false;
- if ($this->millis < 0) {
- $resetMillis = true;
- $this->millis = Phing::currentTimeMillis();
- }
-
- if ($this->file !== null) {
- $this->touchFile($this->file);
- }
-
- // deal with the filesets
- foreach($this->filesets as $fs) {
-
- $ds = $fs->getDirectoryScanner($this->getProject());
- $fromDir = $fs->getDir($this->getProject());
-
- $srcFiles = $ds->getIncludedFiles();
- $srcDirs = $ds->getIncludedDirectories();
-
- for ($j=0,$_j=count($srcFiles); $j < $_j; $j++) {
- $this->touchFile(new PhingFile($fromDir, (string) $srcFiles[$j]));
- }
-
- for ($j=0,$_j=count($srcDirs); $j < $_j ; $j++) {
- $this->touchFile(new PhingFile($fromDir, (string) $srcDirs[$j]));
- }
- }
-
- if ($resetMillis) {
- $this->millis = -1;
- }
- }
-
- private function touchFile($file) {
- if ( !$file->canWrite() ) {
- throw new BuildException("Can not change modification date of read-only file " . $file->__toString());
- }
- $file->setLastModified($this->millis);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/system/TryCatchTask.php b/buildscripts/phing/classes/phing/tasks/system/TryCatchTask.php
deleted file mode 100644
index b27d829b..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/TryCatchTask.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/*
- * $Id: acc9e5d431141ae13ea43c1ed1d3177a4fb60bf9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/Task.php';
-
-/**
- * A wrapper task that lets you run tasks(s) when another set
- * of tasks fails.
- *
- * Inspired by {@link http://ant-contrib.sourceforge.net/tasks/tasks/trycatch.html}
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: acc9e5d431141ae13ea43c1ed1d3177a4fb60bf9 $
- * @package phing.tasks.system
- */
-class TryCatchTask extends Task
-{
- protected $propertyName = "";
-
- protected $tryContainer = null;
- protected $catchContainer = null;
- protected $finallyContainer = null;
-
- /**
- * Main method
- *
- * @throws BuildException
- * @return void
- */
- public function main()
- {
- $exc = null;
-
- if (empty($this->tryContainer)) {
- throw new BuildException('A nested <try> element is required');
- }
-
- try {
- $this->tryContainer->perform();
- } catch (BuildException $e) {
- if (!empty($this->propertyName)) {
- $this->project->setProperty($this->propertyName, $e->getMessage());
- }
-
- if (!empty($this->referenceName)) {
- $this->project->addReference($this->referenceName, $e);
- }
-
- if (!empty($this->catchContainer)) {
- $this->catchContainer->perform();
- } else {
- $exc = $e;
- }
- }
-
- if (!empty($this->finallyContainer)) {
- $this->finallyContainer->perform();
- }
-
- if (!empty($exc)) {
- throw $exc;
- }
- }
-
- /**
- * Sets the name of the property that will
- * contain the exception message.
- *
- * @param string $property
- */
- public function setProperty($property)
- {
- $this->propertyName = (string) $property;
- }
-
- /**
- * Add nested <try> element
- *
- * @param SequentialTask $container
- */
- public function addTry(SequentialTask $container)
- {
- $this->tryContainer = $container;
- }
-
- /**
- * Add nested <catch> element
- *
- * @param SequentialTask $container
- */
- public function addCatch(SequentialTask $container)
- {
- $this->catchContainer = $container;
- }
-
- /**
- * Add nested <finally> element
- *
- * @param SequentialTask $container
- */
- public function addFinally(SequentialTask $container)
- {
- $this->finallyContainer = $container;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/TstampTask.php b/buildscripts/phing/classes/phing/tasks/system/TstampTask.php
deleted file mode 100755
index 44f2c3f0..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/TstampTask.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/*
- * $Id: c0693134153e6095ab198edb5cf204f53bb7ba69 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Sets properties to the current time, or offsets from the current time.
- * The default properties are TSTAMP, DSTAMP and TODAY;
- *
- * Based on Ant's Tstamp task.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id$
- * @package phing.tasks.system
- * @since 2.2.0
- */
-class TstampTask extends Task
-{
- private $customFormats = array();
-
- private $prefix = "";
-
- /**
- * Set a prefix for the properties. If the prefix does not end with a "."
- * one is automatically added.
- * @param prefix the prefix to use.
- */
- public function setPrefix($prefix)
- {
- $this->prefix = $prefix;
-
- if (!empty($this->prefix))
- {
- $this->prefix.= ".";
- }
- }
-
- /**
- * Adds a custom format
- *
- * @param TstampCustomFormat custom format
- */
- public function addFormat(TstampCustomFormat $cf)
- {
- $this->customFormats[] = $cf;
- }
-
- /**
- * Create the timestamps. Custom ones are done before
- * the standard ones.
- *
- * @throws BuildException
- */
- public function main()
- {
- foreach ($this->customFormats as $cf)
- {
- $cf->execute($this);
- }
-
- $dstamp = strftime('%Y%m%d');
- $this->prefixProperty('DSTAMP', $dstamp);
-
- $tstamp = strftime('%H%M');
- $this->prefixProperty('TSTAMP', $tstamp);
-
- $today = strftime('%B %d %Y');
- $this->prefixProperty('TODAY', $today);
- }
-
- /**
- * helper that encapsulates prefix logic and property setting
- * policy (i.e. we use setNewProperty instead of setProperty).
- */
- public function prefixProperty($name, $value)
- {
- $this->getProject()->setNewProperty($this->prefix . $name, $value);
- }
-}
-
-/**
- * @package phing.tasks.system
- */
-class TstampCustomFormat
-{
- private $propertyName = "";
- private $pattern = "";
- private $locale = "";
-
- /**
- * The property to receive the date/time string in the given pattern
- *
- * @param propertyName the name of the property.
- */
- public function setProperty($propertyName)
- {
- $this->propertyName = $propertyName;
- }
-
- /**
- * The date/time pattern to be used. The values are as
- * defined by the PHP strftime() function.
- *
- * @param pattern
- */
- public function setPattern($pattern)
- {
- $this->pattern = $pattern;
- }
-
- /**
- * The locale used to create date/time string.
- *
- * @param locale
- */
- public function setLocale($locale)
- {
- $this->locale = $locale;
- }
-
- /**
- * validate parameter and execute the format.
- *
- * @param TstampTask reference to task
- */
- public function execute(TstampTask $tstamp)
- {
- if (empty($this->propertyName))
- {
- throw new BuildException("property attribute must be provided");
- }
-
- if (empty($this->pattern))
- {
- throw new BuildException("pattern attribute must be provided");
- }
-
- if (!empty($this->locale))
- {
- setlocale(LC_ALL, $this->locale);
- }
-
- $value = strftime($this->pattern);
- $tstamp->prefixProperty($this->propertyName, $value);
-
- if (!empty($this->locale))
- {
- // reset locale
- setlocale(LC_ALL, NULL);
- }
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/system/TypedefTask.php b/buildscripts/phing/classes/phing/tasks/system/TypedefTask.php
deleted file mode 100755
index c03e716d..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/TypedefTask.php
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/*
- * $Id: 6122dcb36b79ffe3c3fb430a0b4586d9d145410b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Register a datatype for use within a buildfile.
- *
- * This is for registering your own datatypes for use within a buildfile.
- *
- * If you find that you are using a particular class frequently, you may want to edit the
- * phing/types/defaults.properties file so that it is included by default. You may also
- * want to submit it (if LGPL or compatible license) to be included in Phing distribution.
- *
- * <pre>
- * <typedef name="mytype" classname="path.to.MyHandlingClass"/>
- * .
- * <sometask ...>
- * <mytype param1="val1" param2="val2"/>
- * </sometask>
- * </pre>
- *
- * TODO:
- * -- possibly refactor since this is almost the same as TaskDefTask
- * (right now these are just too simple to really justify creating an abstract class)
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class TypedefTask extends Task {
-
- /** Tag name for datatype that will be used in XML */
- private $name;
-
- /**
- * Classname of task to register.
- * This can be a dot-path -- relative to a location on PHP include_path.
- * E.g. path.to.MyClass -> path/to/MyClass.php
- * @var string
- */
- private $classname;
-
- /**
- * Path to add to PHP include_path to aid in finding specified class.
- * @var Path
- */
- private $classpath;
-
- /** Refid to already defined classpath */
- private $classpathId;
-
- /**
- * Set the classpath to be used when searching for component being defined
- *
- * @param Path $classpath A Path object containing the classpath.
- */
- public function setClasspath(Path $classpath) {
- if ($this->classpath === null) {
- $this->classpath = $classpath;
- } else {
- $this->classpath->append($classpath);
- }
- }
-
- /**
- * Create the classpath to be used when searching for component being defined
- *
- * @return Path
- */
- public function createClasspath() {
- if ($this->classpath === null) {
- $this->classpath = new Path($this->project);
- }
- return $this->classpath->createPath();
- }
-
- /**
- * Reference to a classpath to use when loading the files.
- */
- public function setClasspathRef(Reference $r) {
- $this->classpathId = $r->getRefId();
- $this->createClasspath()->setRefid($r);
- }
-
- /** Main entry point */
- public function main() {
- if ($this->name === null || $this->classname === null) {
- throw new BuildException("You must specify name and class attributes for <typedef>.");
- }
- $this->project->addDataTypeDefinition($this->name, $this->classname, $this->classpath);
- }
-
- /**
- * Sets the name that will be used in XML buildfile.
- * @param string $name
- */
- public function setName($name) {
- $this->name = $name;
- }
-
- /**
- * Sets the class name / dotpath to use.
- * @param string $class
- */
- public function setClassname($class) {
- $this->classname = $class;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/UpToDateTask.php b/buildscripts/phing/classes/phing/tasks/system/UpToDateTask.php
deleted file mode 100755
index 1954fe88..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/UpToDateTask.php
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-/*
- * $Id: 5b0af63dfa9acb85374dcdd2d7fd866ce81391d0 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-include_once 'phing/tasks/system/condition/Condition.php';
-include_once 'phing/tasks/system/PropertyTask.php';
-include_once 'phing/util/DirectoryScanner.php';
-include_once 'phing/util/SourceFileScanner.php';
-include_once 'phing/mappers/MergeMapper.php';
-
-/**
- * Sets the given property if the specified target has a timestamp
- * greater than all of the source files.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author William Ferguson <williamf@mincom.com> (Ant)
- * @author Hiroaki Nakamura <hnakamur@mc.neweb.ne.jp> (Ant)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @version $Id$
- * @package phing.tasks.system
- */
-class UpToDateTask extends Task implements Condition {
-
- private $_property;
- private $_value;
- private $_sourceFile;
- private $_targetFile;
- private $sourceFileSets = array();
- private $_filelists = array();
-
- protected $mapperElement = null;
-
- /**
- * The property to set if the target file is more up-to-date than
- * (each of) the source file(s).
- *
- * @param property the name of the property to set if Target is up-to-date.
- */
- public function setProperty($property) {
- $this->_property = $property;
- }
-
- /**
- * Get property name
- * @param property the name of the property to set if Target is up-to-date.
- */
- public function getProperty() {
- return $this->_property;
- }
-
- /**
- * The value to set the named property to if the target file is more
- * up-to-date than (each of) the source file(s). Defaults to 'true'.
- *
- * @param value the value to set the property to if Target is up-to-date
- */
- public function setValue($value) {
- $this->_value = $value;
- }
-
- /**
- * Returns the value, or "true" if a specific value wasn't provided.
- */
- private function getValue() {
- return ($this->_value !== null) ? $this->_value : "true";
- }
-
- /**
- * The file which must be more up-to-date than (each of) the source file(s)
- * if the property is to be set.
- *
- * @param file the file we are checking against.
- */
- public function setTargetFile($file) {
- if (is_string($file)) {
- $file = new PhingFile($file);
- }
- $this->_targetFile = $file;
- }
-
- /**
- * The file that must be older than the target file
- * if the property is to be set.
- *
- * @param file the file we are checking against the target file.
- */
- public function setSrcfile($file) {
- if (is_string($file)) {
- $file = new PhingFile($file);
- }
- $this->_sourceFile = $file;
- }
-
- /**
- * Nested <srcfiles> element.
- *
- * @deprecated Deprecated since Phing 2.4.0
- */
- public function createSrcfiles() {
- $fs = new FileSet();
- $this->sourceFileSets[] = $fs;
- return $fs;
- }
-
- /**
- * Nested <fileset> element.
- */
- public function addFileset(FileSet $fs) {
- $this->sourceFileSets[] = $fs;
- }
-
- /**
- * Supports embedded <filelist> element.
- * @return FileList
- */
- public function createFileList() {
- $num = array_push($this->_filelists, new FileList());
- return $this->_filelists[$num-1];
- }
-
- /**
- * Defines the FileNameMapper to use (nested mapper element).
- */
- public function createMapper() {
- if ($this->mapperElement !== null) {
- throw new BuildException("Cannot define more than one mapper",
- $this->location);
- }
- $this->mapperElement = new Mapper($this->getProject());
- return $this->mapperElement;
- }
-
- /**
- * Evaluate (all) target and source file(s) to
- * see if the target(s) is/are up-to-date.
- * @return boolean
- */
- public function evaluate() {
- if (count($this->sourceFileSets) == 0 && count($this->_filelists) == 0 && $this->_sourceFile === null) {
- throw new BuildException("At least one srcfile or a nested "
- . "<fileset> or <filelist> element must be set.");
- }
-
- if ((count($this->sourceFileSets) > 0 || count($this->_filelists) > 0) && $this->_sourceFile !== null) {
- throw new BuildException("Cannot specify both the srcfile "
- . "attribute and a nested <fileset> "
- . "or <filelist> element.");
- }
-
- if ($this->_targetFile === null && $this->mapperElement === null) {
- throw new BuildException("The targetfile attribute or a nested "
- . "mapper element must be set.");
- }
-
- // if the target file is not there, then it can't be up-to-date
- if ($this->_targetFile !== null && !$this->_targetFile->exists()) {
- return false;
- }
-
- // if the source file isn't there, throw an exception
- if ($this->_sourceFile !== null && !$this->_sourceFile->exists()) {
- throw new BuildException($this->_sourceFile->getAbsolutePath()
- . " not found.");
- }
-
- $upToDate = true;
- for($i=0,$size=count($this->sourceFileSets); $i < $size && $upToDate; $i++) {
- $fs = $this->sourceFileSets[$i];
- $ds = $fs->getDirectoryScanner($this->project);
- $upToDate = $upToDate && $this->scanDir($fs->getDir($this->project),
- $ds->getIncludedFiles());
- }
-
- for($i=0,$size=count($this->_filelists); $i < $size && $upToDate; $i++) {
- $fl = $this->_filelists[$i];
- $srcFiles = $fl->getFiles($this->project);
- $upToDate = $upToDate && $this->scanDir($fs->getDir($this->project),
- $srcFiles);
- }
-
- if ($this->_sourceFile !== null) {
- if ($this->mapperElement === null) {
- $upToDate = $upToDate &&
- ($this->_targetFile->lastModified() >= $this->_sourceFile->lastModified());
- } else {
- $sfs = new SourceFileScanner($this);
- $upToDate = $upToDate &&
- count($sfs->restrict($this->_sourceFile->getAbsolutePath(),
- null, null,
- $this->mapperElement->getImplementation())) === 0;
- }
- }
- return $upToDate;
- }
-
-
- /**
- * Sets property to true if target file(s) have a more recent timestamp
- * than (each of) the corresponding source file(s).
- * @throws BuildException
- */
- public function main() {
- if ($this->_property === null) {
- throw new BuildException("property attribute is required.",
- $this->location);
- }
- $upToDate = $this->evaluate();
- if ($upToDate) {
- $property = $this->project->createTask('property');
- $property->setName($this->getProperty());
- $property->setValue($this->getValue());
- $property->setOverride(true);
- $property->main(); // execute
-
- if ($this->mapperElement === null) {
- $this->log("File \"" . $this->_targetFile->getAbsolutePath()
- . "\" is up-to-date.", Project::MSG_VERBOSE);
- } else {
- $this->log("All target files are up-to-date.",
- Project::MSG_VERBOSE);
- }
- }
- }
-
- protected function scanDir(PhingFile $srcDir, $files) {
- $sfs = new SourceFileScanner($this);
- $mapper = null;
- $dir = $srcDir;
- if ($this->mapperElement === null) {
- $mm = new MergeMapper();
- $mm->setTo($this->_targetFile->getAbsolutePath());
- $mapper = $mm;
- $dir = null;
- } else {
- $mapper = $this->mapperElement->getImplementation();
- }
- return (count($sfs->restrict($files, $srcDir, $dir, $mapper)) === 0);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/WaitForTask.php b/buildscripts/phing/classes/phing/tasks/system/WaitForTask.php
deleted file mode 100755
index 00bcff1e..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/WaitForTask.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-/*
- * $Id: dae67bf2b9c154d4614f30e9ba85c16782550bb3 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/Task.php';
-
-/**
- * Based on Apache Ant Wait For:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id$
- * @package phing.tasks.system
- */
-class WaitForTask extends ConditionBase
-{
- const ONE_MILLISECOND = 1;
- const ONE_SECOND = 1000;
- const ONE_MINUTE = 60000;
- const ONE_HOUR = 3600000;
- const ONE_DAY = 86400000;
- const ONE_WEEK = 604800000;
-
- const DEFAULT_MAX_WAIT_MILLIS = 180000;
- const DEFAULT_CHECK_MILLIS = 500;
-
- protected $maxWait = self::DEFAULT_MAX_WAIT_MILLIS;
- protected $maxWaitMultiplier = self::ONE_MILLISECOND;
-
- protected $checkEvery = self::DEFAULT_CHECK_MILLIS;
- protected $checkEveryMultiplier = self::ONE_MILLISECOND;
-
- protected $timeoutProperty = null;
-
- /**
- * Set the maximum length of time to wait.
- * @param int $maxWait
- */
- public function setMaxWait($maxWait)
- {
- $this->maxWait = (int) $maxWait;
- }
-
- /**
- * Set the max wait time unit
- * @param string $maxWaitUnit
- */
- public function setMaxWaitUnit($maxWaitUnit)
- {
- $this->maxWaitMultiplier = $this->_convertUnit($maxWaitUnit);
- }
-
- /**
- * Set the time between each check
- * @param int $checkEvery
- */
- public function setCheckEvery($checkEvery)
- {
- $this->checkEvery = (int) $checkEvery;
- }
-
- /**
- * Set the check every time unit
- * @param string $checkEveryUnit
- */
- public function setCheckEveryUnit($checkEveryUnit)
- {
- $this->checkEveryMultiplier = $this->_convertUnit($checkEveryUnit);
- }
-
- /**
- * Name of the property to set after a timeout.
- * @param string $timeoutProperty
- */
- public function setTimeoutProperty($timeoutProperty)
- {
- $this->timeoutProperty = $timeoutProperty;
- }
-
- /**
- * Convert the unit to a multipler.
- * @param string $unit
- */
- protected function _convertUnit($unit)
- {
- switch ($unit) {
- case "week": {
- return self::ONE_WEEK;
- }
-
- case "day": {
- return self::ONE_DAY;
- }
-
- case "hour": {
- return self::ONE_HOUR;
- }
-
- case "minute": {
- return self::ONE_MINUTE;
- }
-
- case "second": {
- return self::ONE_SECOND;
- }
-
- case "millisecond": {
- return self::ONE_MILLISECOND;
- }
-
- default: {
- throw new BuildException("Illegal unit '$unit'");
- }
- }
- }
-
- /**
- * Check repeatedly for the specified conditions until they become
- * true or the timeout expires.
- * @throws BuildException
- */
- public function main()
- {
- if ($this->countConditions() > 1) {
- throw new BuildException("You must not nest more than one condition into <waitfor>");
- }
-
- if ($this->countConditions() < 1) {
- throw new BuildException("You must nest a condition into <waitfor>");
- }
-
- $cs = $this->getIterator();
- $condition = $cs->current();
-
- $maxWaitMillis = $this->maxWait * $this->maxWaitMultiplier;
- $checkEveryMillis = $this->checkEvery * $this->checkEveryMultiplier;
-
- $start = microtime(true) * 1000;
- $end = $start + $maxWaitMillis;
-
- while (microtime(true) * 1000 < $end) {
- if ($condition->evaluate()) {
- $this->log("waitfor: condition was met", Project::MSG_VERBOSE);
-
- return;
- }
-
- usleep($checkEveryMillis * 1000);
- }
-
- $this->log("waitfor: timeout", Project::MSG_VERBOSE);
-
- if ($this->timeoutProperty != null) {
- $this->project->setNewProperty($this->timeoutProperty, "true");
- }
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/tasks/system/WarnTask.php b/buildscripts/phing/classes/phing/tasks/system/WarnTask.php
deleted file mode 100755
index 28f0ad92..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/WarnTask.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/*
- * $Id: a2192433abbea9c5fe4b4ddb518cde8c09a643da $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/EchoTask.php';
-
-/**
- * Simple task to echo a warning message (Project::MSG_WARN) to all output devices.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system
- */
-class WarnTask extends EchoTask {
- function main() {
- $this->log($this->msg, Project::MSG_WARN);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/XsltTask.php b/buildscripts/phing/classes/phing/tasks/system/XsltTask.php
deleted file mode 100644
index 7155caf8..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/XsltTask.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/*
- * $Id: 8f87e1c7908c06223382baf628d018c3a0f10824 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/CopyTask.php';
-include_once 'phing/system/io/FileReader.php';
-include_once 'phing/system/io/FileWriter.php';
-include_once 'phing/filters/XsltFilter.php';
-
-/**
- * Implements an XSLT processing filter while copying files.
- *
- * This is a shortcut for calling the <copy> task with the XSLTFilter used
- * in the <filterchains> section.
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id: 8f87e1c7908c06223382baf628d018c3a0f10824 $
- * @package phing.tasks.system
- */
-class XsltTask extends CopyTask {
-
- /** XSLTFilter object that we use to handle transformation. */
- private $xsltFilter;
-
- /** Parameters to pass to XSLT procesor. */
- private $parameters = array();
-
- /**
- * Setup the filterchains w/ XSLTFilter that we will use while copying the files.
- */
- function init() {
- $xf = new XsltFilter();
- $chain = $this->createFilterChain($this->getProject());
- $chain->addXsltFilter($xf);
- $this->xsltFilter = $xf;
- }
-
- /**
- * Set any XSLT Param and invoke CopyTask::main()
- * @see CopyTask::main()
- */
- function main() {
- $this->log("Doing XSLT transformation using stylesheet " . $this->xsltFilter->getStyle(), Project::MSG_VERBOSE);
- $this->xsltFilter->setParams($this->parameters);
- parent::main();
- }
-
- /**
- * Set the stylesheet to use.
- * @param PhingFile $style
- */
- function setStyle(PhingFile $style) {
- $this->xsltFilter->setStyle($style);
- }
-
- /**
- * Whether to resolve entities in the XML document.
- *
- * @param bool $resolveExternals
- *
- * @since 2.4
- */
- function setResolveDocumentExternals($resolveExternals) {
- $this->xsltFilter->setResolveDocumentExternals((bool)$resolveExternals);
- }
-
- /**
- * Whether to resolve entities in the stylesheet.
- *
- * @param bool $resolveExternals
- *
- * @since 2.4
- */
- function setResolveStylesheetExternals($resolveExternals) {
- $this->xsltFilter->setResolveStylesheetExternals((bool)$resolveExternals);
- }
-
- /**
- * Support nested <param> tags useing XSLTParam class.
- * @return XSLTParam
- */
- function createParam() {
- $num = array_push($this->parameters, new XSLTParam());
- return $this->parameters[$num-1];
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/AndCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/AndCondition.php
deleted file mode 100755
index 41b57a8e..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/AndCondition.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/*
- * $Id: 69074307e3d1aae5fbfaa03842f5a8fc14b49625 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/condition/ConditionBase.php';
-
-/**
- * <and> condition container.
- *
- * Iterates over all conditions and returns false as soon as one
- * evaluates to false.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing.tasks.system.condition
- */
-class AndCondition extends ConditionBase implements Condition {
-
- public function evaluate() {
- foreach($this as $c) { // ConditionBase implements IteratorAggregator
- if (!$c->evaluate()) {
- return false;
- }
- }
- return true;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/Condition.php b/buildscripts/phing/classes/phing/tasks/system/condition/Condition.php
deleted file mode 100755
index 9c9d90e5..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/Condition.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-/*
- * $Id: c971532805c4ac4c3d3cbf05a5c53abe7279b336 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Condition interface specification:
- *
- * Each condition must implement a method applying to this prototye:
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.tasks.system.condition
- */
-interface Condition {
- /**
- * @return boolean
- * @throws BuildException
- */
- public function evaluate();
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/ConditionBase.php b/buildscripts/phing/classes/phing/tasks/system/condition/ConditionBase.php
deleted file mode 100755
index e21ce4e4..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/ConditionBase.php
+++ /dev/null
@@ -1,197 +0,0 @@
-<?php
-/*
- * $Id: 8721880badf6aee475a8cb87c88ca3dc4299efb8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/ProjectComponent.php';
-include_once 'phing/Project.php';
-include_once 'phing/tasks/system/AvailableTask.php';
-include_once 'phing/tasks/system/condition/Condition.php';
-
-/**
- * Abstract baseclass for the <condition> task as well as several
- * conditions - ensures that the types of conditions inside the task
- * and the "container" conditions are in sync.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @package phing.tasks.system.condition
- */
-abstract class ConditionBase extends ProjectComponent implements IteratorAggregate {
-
- public $conditions = array(); // needs to be public for "inner" class access
-
- function countConditions() {
- return count($this->conditions);
- }
-
- /**
- * Required for IteratorAggregate
- */
- function getIterator() {
- return new ConditionEnumeration($this);
- }
-
- function getConditions() {
- return $this->conditions;
- }
-
- /**
- * @return void
- */
- function addAvailable(AvailableTask $a) {
- $this->conditions[] = $a;
- }
-
- /**
- * @return NotCondition
- */
- function createNot() {
- include_once 'phing/tasks/system/condition/NotCondition.php';
- $num = array_push($this->conditions, new NotCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return AndCondition
- */
- function createAnd() {
- include_once 'phing/tasks/system/condition/AndCondition.php';
- $num = array_push($this->conditions, new AndCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return OrCondition
- */
- function createOr() {
- include_once 'phing/tasks/system/condition/OrCondition.php';
- $num = array_push($this->conditions, new OrCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return EqualsCondition
- */
- function createEquals() {
- include_once 'phing/tasks/system/condition/EqualsCondition.php';
- $num = array_push($this->conditions, new EqualsCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return OsCondition
- */
- function createOs() {
- include_once 'phing/tasks/system/condition/OsCondition.php';
- $num = array_push($this->conditions, new OsCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return IsFalseCondition
- */
- function createIsFalse() {
- include_once 'phing/tasks/system/condition/IsFalseCondition.php';
- $num = array_push($this->conditions, new IsFalseCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return IsTrueCondition
- */
- function createIsTrue() {
- include_once 'phing/tasks/system/condition/IsTrueCondition.php';
- $num = array_push($this->conditions, new IsTrueCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return ContainsCondition
- */
- function createContains() {
- include_once 'phing/tasks/system/condition/ContainsCondition.php';
- $num = array_push($this->conditions, new ContainsCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return IsSetCondition
- */
- function createIsSet() {
- include_once 'phing/tasks/system/condition/IsSetCondition.php';
- $num = array_push($this->conditions, new IsSetCondition());
- return $this->conditions[$num-1];
- }
-
- /**
- * @return ReferenceExistsCondition
- */
- function createReferenceExists() {
- include_once 'phing/tasks/system/condition/ReferenceExistsCondition.php';
- $num = array_push($this->conditions, new ReferenceExistsCondition());
- return $this->conditions[$num-1];
- }
-
-}
-
-/**
- * "Inner" class for handling enumerations.
- * Uses build-in PHP5 iterator support.
- *
- * @package phing.tasks.system.condition
- */
-class ConditionEnumeration implements Iterator {
-
- /** Current element number */
- private $num = 0;
-
- /** "Outer" ConditionBase class. */
- private $outer;
-
- function __construct(ConditionBase $outer) {
- $this->outer = $outer;
- }
-
- public function valid() {
- return $this->outer->countConditions() > $this->num;
- }
-
- function current() {
- $o = $this->outer->conditions[$this->num];
- if ($o instanceof ProjectComponent) {
- $o->setProject($this->outer->getProject());
- }
- return $o;
- }
-
- function next() {
- $this->num++;
- }
-
- function key() {
- return $this->num;
- }
-
- function rewind() {
- $this->num = 0;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/ContainsCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/ContainsCondition.php
deleted file mode 100755
index d7fb80ac..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/ContainsCondition.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * $Id: 6cdecc53a715fce4601b1ceb64c8ec95d29c1468 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/condition/Condition.php';
-
-/**
- * Is one string part of another string?
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @version $Id: 6cdecc53a715fce4601b1ceb64c8ec95d29c1468 $
- * @package phing.tasks.system.condition
- */
-class ContainsCondition implements Condition {
-
- private $string;
- private $subString;
- private $caseSensitive = true;
-
- /**
- * The string to search in.
- * @param string $a1
- */
- public function setString($a1) {
- $this->string = $a1;
- }
-
- /**
- * The string to search for.
- * @param string $a2
- */
- public function setSubstring($a2) {
- $this->subString = $a2;
- }
-
- /**
- * Whether to search ignoring case or not.
- */
- public function setCaseSensitive($b) {
- $this->caseSensitive = (boolean) $b;
- }
-
- /**
- * Check whether string contains substring.
- * @throws BuildException
- */
- public function evaluate() {
- if ($this->string === null || $this->subString === null) {
- throw new BuildException("both string and substring are required "
- . "in contains");
- }
-
- return $this->caseSensitive
- ? strpos($this->string, $this->subString) !== false
- : strpos(strtolower($this->string), strtolower($this->subString)) !== false;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/EqualsCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/EqualsCondition.php
deleted file mode 100755
index 4be4e8fe..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/EqualsCondition.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-/*
- * $Id: faec716501a00cdeb84b8c893b5bbe5c76064dec $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/condition/Condition.php';
-
-/**
- * A simple string comparator. Compares two strings for eqiality in a
- * binary safe manner. Implements the condition interface specification.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id: faec716501a00cdeb84b8c893b5bbe5c76064dec $
- * @access public
- * @package phing.tasks.system.condition
- */
-class EqualsCondition implements Condition {
-
- private $arg1;
- private $arg2;
- private $trim = false;
- private $caseSensitive = true;
-
- public function setArg1($a1) {
- $this->arg1 = $a1;
- }
-
- public function setArg2($a2) {
- $this->arg2 = $a2;
- }
-
- /**
- * Should we want to trim the arguments before comparing them?
- * @param boolean $b
- */
- public function setTrim($b) {
- $this->trim = (boolean) $b;
- }
-
- /**
- * Should the comparison be case sensitive?
- * @param boolean $b
- */
- public function setCaseSensitive($b) {
- $this->caseSensitive = (boolean) $b;
- }
-
- public function evaluate() {
- if ($this->arg1 === null || $this->arg2 === null) {
- throw new BuildException("Both arg1 and arg2 are required in equals.");
- }
-
- if ($this->trim) {
- $this->arg1 = trim($this->arg1);
- $this->arg2 = trim($this->arg2);
- }
-
- //print("[comparison] Comparing '".$this->arg1."' and '".$this->arg2."'\n");
- return $this->caseSensitive ? $this->arg1 === $this->arg2 : strtolower($this->arg1) === strtolower($this->arg2);
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/IsFalseCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/IsFalseCondition.php
deleted file mode 100755
index 8a1b3dcf..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/IsFalseCondition.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/*
- * $Id: f7d355bdf8f7aa539afb572e2fe033ffd3bcd89b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/ProjectComponent.php';
-require_once 'phing/tasks/system/condition/Condition.php';
-
-/**
- * Condition that tests whether a given string evals to false.
- *
- * @author Hans Lellelid (Phing)
- * @author Steve Loughran (Ant)
- * @version $Id: f7d355bdf8f7aa539afb572e2fe033ffd3bcd89b $
- * @package phing.tasks.system.condition
- */
-class IsFalseCondition extends ProjectComponent implements Condition {
-
- /**
- * what we eval
- */
- private $value;
-
- /**
- * Set the value to be tested.
- * @param boolean $value
- */
- public function setValue($value) {
- $this->value = $value;
- }
-
- /**
- * return the inverted value;
- * @throws BuildException if someone forgot to spec a value
- */
- public function evaluate() {
- if ($this->value === null) {
- throw new BuildException("Nothing to test for falsehood");
- }
- return !$this->value;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/IsSetCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/IsSetCondition.php
deleted file mode 100755
index 24f3f609..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/IsSetCondition.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/*
- * $Id: 5c5924da5cff2626af09b4908703a21eec79c777 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/ProjectComponent.php';
-require_once 'phing/tasks/system/condition/Condition.php';
-
-/**
- * Condition that tests whether a given property has been set.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @version $Id$
- * @package phing.tasks.system.condition
- */
-class IsSetCondition extends ProjectComponent implements Condition {
-
- private $property;
-
- public function setProperty($p) {
- $this->property = $p;
- }
-
- /**
- * Check whether property is set.
- * @throws BuildException
- */
- public function evaluate() {
- if ($this->property === null) {
- throw new BuildException("No property specified for isset "
- . "condition");
- }
- return $this->project->getProperty($this->property) !== null;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/IsTrueCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/IsTrueCondition.php
deleted file mode 100644
index 8c6d19fc..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/IsTrueCondition.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/*
- * $Id: d567f7c477e075a5c06d3f8e07ff8a7412cf31cd $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/ProjectComponent.php';
-require_once 'phing/tasks/system/condition/Condition.php';
-
-/**
- * Condition that tests whether a given string evals to true.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Steve Loughran (Ant)
- * @package phing.tasks.system.condition
- */
-class IsTrueCondition extends ProjectComponent implements Condition {
-
- /**
- * what we eval
- */
- private $value;
-
- /**
- * Set the value to be tested.
- * @param boolean $value
- */
- public function setValue($value) {
- $this->value = $value;
- }
-
- /**
- * return the inverted value;
- * @throws BuildException if someone forgot to spec a value
- */
- public function evaluate() {
- if ($this->value === null) {
- throw new BuildException("Nothing to test for falsehood");
- }
- return $this->value;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/NotCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/NotCondition.php
deleted file mode 100755
index 081876af..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/NotCondition.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/*
- * $Id: d8c985da7c759357135cf717b1f4b52a1bd50cb6 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/condition/ConditionBase.php';
-
-/**
- * <not> condition.
- *
- * Evaluates to true if the single condition nested into it is false
- * and vice versa.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.tasks.system.condition
- */
-class NotCondition extends ConditionBase implements Condition {
-
- function evaluate() {
- if ($this->countConditions() > 1) {
- throw new BuildException("You must not nest more than one condition into <not>");
- }
- if ($this->countConditions() < 1) {
- throw new BuildException("You must nest a condition into <not>");
- }
- $conds = $this->getIterator();
- return !$conds->current()->evaluate();
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/OrCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/OrCondition.php
deleted file mode 100755
index d88df271..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/OrCondition.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/*
- * $Id: adcd6785a85304a0860cc3dd9a0146d965c1cb0c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/condition/ConditionBase.php';
-
-/**
- * <or> condition container.
- *
- * Iterates over all conditions and returns true as soon as one
- * evaluates to true.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.tasks.system.condition
- */
-class OrCondition extends ConditionBase implements Condition {
-
- function evaluate() {
- foreach($this as $c) { // ConditionBase implements IteratorAggregator
- if ($c->evaluate()) {
- return true;
- }
- }
- return false;
- }
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/OsCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/OsCondition.php
deleted file mode 100755
index 50a7174f..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/OsCondition.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/*
- * $Id: d63246e2d25230f5ba6e45a651497e3ba01abe2c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/tasks/system/condition/ConditionBase.php';
-
-/**
- * Condition that tests the OS type.
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @copyright 2001,2002 THYRELL. All rights reserved
- * @version $Id$
- * @access public
- * @package phing.tasks.system.condition
- */
-class OsCondition implements Condition {
-
- private $family;
-
- function setFamily($f) {
- $this->family = strtolower($f);
- }
-
- function evaluate() {
- $osName = strtolower(Phing::getProperty("os.name"));
-
- if ($this->family !== null) {
- if ($this->family === "windows") {
- return StringHelper::startsWith("win", $osName);
- } elseif ($this->family === "mac") {
- return (strpos($osName, "mac") !== false || strpos($osName, "darwin") !== false);
- } elseif ($this->family === ("unix")) {
- return (
- StringHelper::endsWith("ix", $osName) ||
- StringHelper::endsWith("ux", $osName) ||
- StringHelper::endsWith("bsd", $osName) ||
- StringHelper::startsWith("sunos", $osName) ||
- StringHelper::startsWith("darwin", $osName)
- );
- }
- throw new BuildException("Don't know how to detect os family '" . $this->family . "'");
- }
- return false;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/tasks/system/condition/ReferenceExistsCondition.php b/buildscripts/phing/classes/phing/tasks/system/condition/ReferenceExistsCondition.php
deleted file mode 100755
index 08e291e3..00000000
--- a/buildscripts/phing/classes/phing/tasks/system/condition/ReferenceExistsCondition.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/*
- * $Id: e62ed1e00cc6ed859746760c89bc0f873db4620a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/ProjectComponent.php'; require_once 'phing/tasks/system/condition/Condition.php';
-
-/**
- * Condition that tests whether a given reference exists.
- *
- * @author Matthias Pigulla <mp@webfactory.de> (Phing)
- * @version $Id$
- * @package phing.tasks.system.condition */
-class ReferenceExistsCondition extends ProjectComponent implements Condition {
-
- private $refid;
-
- public function setRef($id) {
- $this->refid = (string) $id;
- }
-
- /**
- * Check whether the reference exists.
- * @throws BuildException
- */
- public function evaluate() {
- if ($this->refid === null) {
- throw new BuildException("No ref attribute specified for reference-exists "
- . "condition");
- }
- $refs = $this->project->getReferences();
- return isset($refs[$this->refid]);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/AbstractFileSet.php b/buildscripts/phing/classes/phing/types/AbstractFileSet.php
deleted file mode 100755
index 60ca4d04..00000000
--- a/buildscripts/phing/classes/phing/types/AbstractFileSet.php
+++ /dev/null
@@ -1,587 +0,0 @@
-<?php
-/*
- * $Id: b7d8ccab6ed556e74626d880dcc09be20ea8bd58 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/PhingFile.php';
-include_once 'phing/types/DataType.php';
-include_once 'phing/types/PatternSet.php';
-include_once 'phing/types/selectors/BaseSelector.php';
-include_once 'phing/types/selectors/SelectorContainer.php';
-include_once 'phing/types/selectors/BaseSelectorContainer.php';
-
-// Load all of the selectors (not really necessary but
-// helps reveal parse errors right away)
-
-include_once 'phing/types/selectors/AndSelector.php';
-include_once 'phing/types/selectors/ContainsSelector.php';
-include_once 'phing/types/selectors/ContainsRegexpSelector.php';
-include_once 'phing/types/selectors/DateSelector.php';
-include_once 'phing/types/selectors/DependSelector.php';
-include_once 'phing/types/selectors/DepthSelector.php';
-include_once 'phing/types/selectors/ExtendSelector.php';
-include_once 'phing/types/selectors/FilenameSelector.php';
-include_once 'phing/types/selectors/MajoritySelector.php';
-include_once 'phing/types/selectors/NoneSelector.php';
-include_once 'phing/types/selectors/NotSelector.php';
-include_once 'phing/types/selectors/OrSelector.php';
-include_once 'phing/types/selectors/PresentSelector.php';
-include_once 'phing/types/selectors/SizeSelector.php';
-include_once 'phing/types/selectors/TypeSelector.php';
-
-include_once 'phing/util/DirectoryScanner.php';
-
-/**
- * The FileSet class provides methods and properties for accessing
- * and managing filesets. It extends ProjectComponent and thus inherits
- * all methods and properties (not explicitly declared). See ProjectComponent
- * for further detail.
- *
- * TODO:
- * - merge this with patternsets: FileSet extends PatternSet !!!
- * requires additional mods to the parsing algo
- * [HL] .... not sure if that really makes so much sense. I think
- * that perhaps they should use common utility class if there really
- * is that much shared functionality
- *
- * @author Andreas Aderhold <andi@binarycloud.com>
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @see ProjectComponent
- * @package phing.types
- */
-class AbstractFileSet extends DataType implements SelectorContainer {
-
- // These vars are public for cloning purposes
-
- /**
- * @var boolean
- */
- public $useDefaultExcludes = true;
-
- /**
- * Whether to expand/dereference symbolic links, default is false
- * @var boolean
- */
- protected $expandSymbolicLinks = false;
-
- /**
- * @var PatternSet
- */
- public $defaultPatterns;
-
- public $additionalPatterns = array();
- public $dir;
- public $isCaseSensitive = true;
- public $selectors = array();
-
- function __construct($fileset = null) {
- if ($fileset !== null && ($fileset instanceof FileSet)) {
- $this->dir = $fileset->dir;
- $this->defaultPatterns = $fileset->defaultPatterns;
- $this->additionalPatterns = $fileset->additionalPatterns;
- $this->useDefaultExcludes = $fileset->useDefaultExcludes;
- $this->isCaseSensitive = $fileset->isCaseSensitive;
- $this->selectors = $fileset->selectors;
- }
- $this->defaultPatterns = new PatternSet();
- }
-
- /**
- * Sets whether to expand/dereference symbolic links, default is false
- * @var boolean
- */
- function setExpandSymbolicLinks($expandSymbolicLinks)
- {
- $this->expandSymbolicLinks = $expandSymbolicLinks;
- }
-
- /**
- * Makes this instance in effect a reference to another PatternSet
- * instance.
- * You must not set another attribute or nest elements inside
- * this element if you make it a reference.
- */
- function setRefid(Reference $r) {
- if ((isset($this->dir) && !is_null($this->dir)) || $this->defaultPatterns->hasPatterns()) {
- throw $this->tooManyAttributes();
- }
- if (!empty($this->additionalPatterns)) {
- throw $this->noChildrenAllowed();
- }
- if (!empty($this->selectors)) {
- throw $this->noChildrenAllowed();
- }
- parent::setRefid($r);
- }
-
-
- function setDir($dir) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if ($dir instanceof PhingFile) {
- $dir = $dir->getPath();
- }
- $this->dir = new PhingFile((string) $dir);
- }
-
-
- function getDir(Project $p) {
- if ($this->isReference()) {
- return $this->getRef($p)->getDir($p);
- }
- return $this->dir;
- }
-
-
- function createPatternSet() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- $num = array_push($this->additionalPatterns, new PatternSet());
- return $this->additionalPatterns[$num-1];
- }
-
- /**
- * add a name entry on the include list
- */
- function createInclude() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- return $this->defaultPatterns->createInclude();
- }
-
- /**
- * add a name entry on the include files list
- */
- function createIncludesFile() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- return $this->defaultPatterns->createIncludesFile();
- }
-
- /**
- * add a name entry on the exclude list
- */
- function createExclude() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- return $this->defaultPatterns->createExclude();
- }
-
- /**
- * add a name entry on the include files list
- */
- function createExcludesFile() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- return;
- }
- return $this->defaultPatterns->createExcludesFile();
- }
-
- /**
- * Sets the set of include patterns. Patterns may be separated by a comma
- * or a space.
- */
- function setIncludes($includes) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->defaultPatterns->setIncludes($includes);
- }
-
- /**
- * Sets the set of exclude patterns. Patterns may be separated by a comma
- * or a space.
- */
- function setExcludes($excludes) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->defaultPatterns->setExcludes($excludes);
- }
-
- /**
- * Sets the name of the file containing the includes patterns.
- *
- * @param $incl The file to fetch the include patterns from.
- * @throws BE
- */
- function setIncludesfile($incl) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->defaultPatterns->setIncludesfile($incl);
- }
-
- /**
- * Sets the name of the file containing the includes patterns.
- *
- * @param $excl The file to fetch the exclude patterns from.
- * @throws BE
- */
- function setExcludesfile($excl) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->defaultPatterns->setExcludesfile($excl);
- }
-
- /**
- * Sets whether default exclusions should be used or not.
- *
- * @param $useDefaultExcludes "true"|"on"|"yes" when default exclusions
- * should be used, "false"|"off"|"no" when they
- * shouldn't be used.
- */
- function setDefaultexcludes($useDefaultExcludes) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->useDefaultExcludes = $useDefaultExcludes;
- }
-
- /**
- * Sets case sensitivity of the file system
- */
- function setCaseSensitive($isCaseSensitive) {
- $this->isCaseSensitive = $isCaseSensitive;
- }
-
- /** returns a reference to the dirscanner object belonging to this fileset */
- function getDirectoryScanner(Project $p) {
- if ($this->isReference()) {
- $o = $this->getRef($p);
- return $o->getDirectoryScanner($p);
- }
-
- if ($this->dir === null) {
- throw new BuildException("No directory specified for fileset.");
- }
- if (!$this->dir->exists()) {
- throw new BuildException("Directory ".$this->dir->getAbsolutePath()." not found.");
- }
- if (!$this->dir->isLink() || !$this->expandSymbolicLinks) {
- if (!$this->dir->isDirectory()) {
- throw new BuildException($this->dir->getAbsolutePath()." is not a directory.");
- }
- }
- $ds = new DirectoryScanner();
- $ds->setExpandSymbolicLinks($this->expandSymbolicLinks);
- $this->setupDirectoryScanner($ds, $p);
- $ds->scan();
- return $ds;
- }
-
- /** feed dirscanner with infos defined by this fileset */
- protected function setupDirectoryScanner(DirectoryScanner $ds, Project $p) {
- if ($ds === null) {
- throw new Exception("DirectoryScanner cannot be null");
- }
- // FIXME - pass dir directly wehn dirscanner supports File
- $ds->setBasedir($this->dir->getPath());
-
- foreach($this->additionalPatterns as $addPattern) {
- $this->defaultPatterns->append($addPattern, $p);
- }
-
- $ds->setIncludes($this->defaultPatterns->getIncludePatterns($p));
- $ds->setExcludes($this->defaultPatterns->getExcludePatterns($p));
-
- $p->log("FileSet: Setup file scanner in dir " . $this->dir->__toString() . " with " . $this->defaultPatterns->toString(), Project::MSG_DEBUG);
-
- if ($ds instanceof SelectorScanner) {
- $ds->setSelectors($this->getSelectors($p));
- }
-
- if ($this->useDefaultExcludes) {
- $ds->addDefaultExcludes();
- }
- $ds->setCaseSensitive($this->isCaseSensitive);
- }
-
-
- /**
- * Performs the check for circular references and returns the
- * referenced FileSet.
- */
- function getRef(Project $p) {
- if (!$this->checked) {
- $stk = array();
- array_push($stk, $this);
- $this->dieOnCircularReference($stk, $p);
- }
-
- $o = $this->ref->getReferencedObject($p);
- if (!($o instanceof FileSet)) {
- $msg = $this->ref->getRefId()." doesn't denote a fileset";
- throw new BuildException($msg);
- } else {
- return $o;
- }
- }
-
- // SelectorContainer methods
-
- /**
- * Indicates whether there are any selectors here.
- *
- * @return boolean Whether any selectors are in this container
- */
- public function hasSelectors() {
- if ($this->isReference() && $this->getProject() !== null) {
- return $this->getRef($this->getProject())->hasSelectors();
- }
- return !empty($this->selectors);
- }
-
- /**
- * Indicates whether there are any patterns here.
- *
- * @return boolean Whether any patterns are in this container.
- */
- public function hasPatterns() {
-
- if ($this->isReference() && $this->getProject() !== null) {
- return $this->getRef($this->getProject())->hasPatterns();
- }
-
- if ($this->defaultPatterns->hasPatterns($this->getProject())) {
- return true;
- }
-
- for($i=0,$size=count($this->additionalPatterns); $i < $size; $i++) {
- $ps = $this->additionalPatterns[$i];
- if ($ps->hasPatterns($this->getProject())) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Gives the count of the number of selectors in this container
- *
- * @return int The number of selectors in this container
- */
- public function selectorCount() {
- if ($this->isReference() && $this->getProject() !== null) {
- try {
- return $this->getRef($this->getProject())->selectorCount();
- } catch (Exception $e) {
- throw $e;
- }
- }
- return count($this->selectors);
- }
-
- /**
- * Returns the set of selectors as an array.
- *
- * @return an array of selectors in this container
- */
- public function getSelectors(Project $p) {
- if ($this->isReference()) {
- return $this->getRef($p)->getSelectors($p);
- } else {
- // *copy* selectors
- $result = array();
- for($i=0,$size=count($this->selectors); $i < $size; $i++) {
- $result[] = clone $this->selectors[$i];
- }
- return $result;
- }
- }
-
- /**
- * Returns an array for accessing the set of selectors.
- *
- * @return array The array of selectors
- */
- public function selectorElements() {
- if ($this->isReference() && $this->getProject() !== null) {
- return $this->getRef($this->getProject())->selectorElements();
- }
- return $this->selectors;
- }
-
- /**
- * Add a new selector into this container.
- *
- * @param selector the new selector to add
- */
- public function appendSelector(FileSelector $selector) {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- $this->selectors[] = $selector;
- }
-
- /* Methods below all add specific selectors */
-
- /**
- * add a "Select" selector entry on the selector list
- */
- public function createSelector() {
- $o = new SelectSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an "And" selector entry on the selector list
- */
- public function createAnd() {
- $o = new AndSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an "Or" selector entry on the selector list
- */
- public function createOr() {
- $o = new OrSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a "Not" selector entry on the selector list
- */
- public function createNot() {
- $o = new NotSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a "None" selector entry on the selector list
- */
- public function createNone() {
- $o = new NoneSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a majority selector entry on the selector list
- */
- public function createMajority() {
- $o = new MajoritySelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector date entry on the selector list
- */
- public function createDate() {
- $o = new DateSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector size entry on the selector list
- */
- public function createSize() {
- $o = new SizeSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector filename entry on the selector list
- */
- public function createFilename() {
- $o = new FilenameSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an extended selector entry on the selector list
- */
- public function createCustom() {
- $o = new ExtendSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContains() {
- $o = new ContainsSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContainsRegexp() {
- $o = new ContainsRegexpSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a present selector entry on the selector list
- */
- public function createPresent() {
- $o = new PresentSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a depth selector entry on the selector list
- */
- public function createDepth() {
- $o = new DepthSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a depends selector entry on the selector list
- */
- public function createDepend() {
- $o = new DependSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a type selector entry on the selector list
- */
- public function createType() {
- $o = new TypeSelector();
- $this->appendSelector($o);
- return $o;
- }
-}
diff --git a/buildscripts/phing/classes/phing/types/Commandline.php b/buildscripts/phing/classes/phing/types/Commandline.php
deleted file mode 100755
index d6b36e14..00000000
--- a/buildscripts/phing/classes/phing/types/Commandline.php
+++ /dev/null
@@ -1,475 +0,0 @@
-<?php
-/*
- * $Id: 891b349dcd88b825ae99edf53ed4c7ac2c1c2467 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-/**
- * Commandline objects help handling command lines specifying processes to
- * execute.
- *
- * The class can be used to define a command line as nested elements or as a
- * helper to define a command line by an application.
- * <p>
- * <code>
- * &lt;someelement&gt;<br>
- * &nbsp;&nbsp;&lt;acommandline executable="/executable/to/run"&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="argument 1" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument line="argument_1 argument_2 argument_3" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;argument value="argument 4" /&gt;<br>
- * &nbsp;&nbsp;&lt;/acommandline&gt;<br>
- * &lt;/someelement&gt;<br>
- * </code>
- * The element <code>someelement</code> must provide a method
- * <code>createAcommandline</code> which returns an instance of this class.
- *
- * @author thomas.haas@softwired-inc.com
- * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
- * @package phing.types
- */
-class Commandline {
-
- /**
- * @var array CommandlineArguments[]
- */
- public $arguments = array(); // public so "inner" class can access
-
- /**
- * Full path (if not on %PATH% env var) to executable program.
- * @var string
- */
- public $executable; // public so "inner" class can access
-
- const DISCLAIMER = "The ' characters around the executable and arguments are not part of the command.";
-
- public function __construct($to_process = null) {
- if ($to_process !== null) {
- $tmp = $this->translateCommandline($to_process);
- if ($tmp) {
- $this->setExecutable(array_shift($tmp)); // removes first el
- foreach($tmp as $arg) { // iterate through remaining elements
- $this->createArgument()->setValue($arg);
- }
- }
- }
- }
-
-
- /**
- * Creates an argument object and adds it to our list of args.
- *
- * <p>Each commandline object has at most one instance of the
- * argument class.</p>
- *
- * @param boolean $insertAtStart if true, the argument is inserted at the
- * beginning of the list of args, otherwise it is appended.
- * @return CommandlineArgument
- */
- public function createArgument($insertAtStart = false) {
- $argument = new CommandlineArgument($this);
- if ($insertAtStart) {
- array_unshift($this->arguments, $argument);
- } else {
- array_push($this->arguments, $argument);
- }
- return $argument;
- }
-
- /**
- * Sets the executable to run.
- */
- public function setExecutable($executable) {
- if (!$executable) {
- return;
- }
- $this->executable = $executable;
- $this->executable = strtr($this->executable, '/', DIRECTORY_SEPARATOR);
- $this->executable = strtr($this->executable, '\\', DIRECTORY_SEPARATOR);
- }
-
- public function getExecutable() {
- return $this->executable;
- }
-
- public function addArguments($line) {
- foreach($line as $arg) {
- $this->createArgument()->setValue($arg);
- }
- }
-
- /**
- * Returns the executable and all defined arguments.
- * @return array
- */
- public function getCommandline() {
- $args = $this->getArguments();
- if ($this->executable === null) {
- return $args;
- }
- return array_merge(array($this->executable), $args);
- }
-
-
- /**
- * Returns all arguments defined by <code>addLine</code>,
- * <code>addValue</code> or the argument object.
- */
- public function getArguments() {
- $result = array();
- foreach($this->arguments as $arg) {
- $parts = $arg->getParts();
- if ($parts !== null) {
- foreach($parts as $part) {
- $result[] = $part;
- }
- }
- }
- return $result;
- }
-
- public function __toString() {
- return self::toString($this->getCommandline());
- }
-
- /**
- * Put quotes around the given String if necessary.
- *
- * <p>If the argument doesn't include spaces or quotes, return it
- * as is. If it contains double quotes, use single quotes - else
- * surround the argument by double quotes.</p>
- *
- * @exception BuildException if the argument contains both, single
- * and double quotes.
- */
- public static function quoteArgument($argument, $escape = false) {
- if ($escape) {
- return escapeshellarg($argument);
- } elseif (strpos($argument, "\"") !== false) {
- if (strpos($argument, "'") !== false) {
- throw new BuildException("Can't handle single and double quotes in same argument");
- } else {
- return escapeshellarg($argument);
- }
- } elseif (strpos($argument, "'") !== false || strpos($argument, " ") !== false) {
- return escapeshellarg($argument);
- //return '\"' . $argument . '\"';
- } else {
- return $argument;
- }
- }
-
- /**
- * Quotes the parts of the given array in way that makes them
- * usable as command line arguments.
- */
- public static function toString($lines, $escape = false) {
- // empty path return empty string
- if (!$lines) {
- return "";
- }
-
- // path containing one or more elements
- $result = "";
- for ($i = 0, $len=count($lines); $i < $len; $i++) {
- if ($i > 0) {
- $result .= ' ';
- }
- $result .= self::quoteArgument($lines[$i], $escape);
- }
- return $result;
- }
-
- /**
- *
- * @param string $to_process
- * @return array
- */
- public static function translateCommandline($to_process) {
-
- if (!$to_process) {
- return array();
- }
-
- // parse with a simple finite state machine
-
- $normal = 0;
- $inQuote = 1;
- $inDoubleQuote = 2;
-
- $state = $normal;
- $args = array();
- $current = "";
- $lastTokenHasBeenQuoted = false;
-
- $tok = strtok($to_process, "");
- $tokens = preg_split('/(["\' ])/', $to_process, -1, PREG_SPLIT_DELIM_CAPTURE);
- while(($nextTok = array_shift($tokens)) !== null) {
- switch ($state) {
- case $inQuote:
- if ("'" == $nextTok) {
- $lastTokenHasBeenQuoted = true;
- $state = $normal;
- } else {
- $current .= $nextTok;
- }
- break;
- case $inDoubleQuote:
- if ("\"" == $nextTok) {
- $lastTokenHasBeenQuoted = true;
- $state = $normal;
- } else {
- $current .= $nextTok;
- }
- break;
- default:
- if ("'" == $nextTok) {
- $state = $inQuote;
- } elseif ("\"" == $nextTok) {
- $state = $inDoubleQuote;
- } elseif (" " == $nextTok) {
- if ($lastTokenHasBeenQuoted || strlen($current) != 0) {
- $args[] = $current;
- $current = "";
- }
- } else {
- $current .= $nextTok;
- }
- $lastTokenHasBeenQuoted = false;
- break;
- }
- }
-
- if ($lastTokenHasBeenQuoted || strlen($current) != 0) {
- $args[] = $current;
- }
-
- if ($state == $inQuote || $state == $inDoubleQuote) {
- throw new BuildException("unbalanced quotes in " . $to_process);
- }
-
- return $args;
- }
-
- /**
- * @return int Number of components in current commandline.
- */
- public function size() {
- return count($this->getCommandline());
- }
-
- public function __copy() {
- $c = new Commandline();
- $c->setExecutable($this->executable);
- $c->addArguments($this->getArguments());
- return $c;
- }
-
- /**
- * Clear out the whole command line. */
- public function clear() {
- $this->executable = null;
- $this->arguments->removeAllElements();
- }
-
- /**
- * Clear out the arguments but leave the executable in place for
- * another operation.
- */
- public function clearArgs() {
- $this->arguments = array();
- }
-
- /**
- * Return a marker.
- *
- * <p>This marker can be used to locate a position on the
- * commandline - to insert something for example - when all
- * parameters have been set.</p>
- * @return CommandlineMarker
- */
- public function createMarker() {
- return new CommandlineMarker($this, count($this->arguments));
- }
-
- /**
- * Returns a String that describes the command and arguments
- * suitable for verbose output before a call to
- * <code>Runtime.exec(String[])</code>.
- *
- * <p>This method assumes that the first entry in the array is the
- * executable to run.</p>
- * @param array $args CommandlineArgument[] to use
- * @return string
- */
- public function describeCommand($args = null) {
-
- if ($args === null) {
- $args = $this->getCommandline();
- }
-
- if (!$args) {
- return "";
- }
-
- $buf = "Executing '";
- $buf .= $args[0];
- $buf .= "'";
- if (count($args) > 0) {
- $buf .= " with ";
- $buf .= $this->describeArguments($args, 1);
- } else {
- $buf .= self::DISCLAIMER;
- }
- return $buf;
- }
-
- /**
- * Returns a String that describes the arguments suitable for
- * verbose output before a call to
- * <code>Runtime.exec(String[])</code>
- * @param $args arguments to use (default is to use current class args)
- * @param $offset ignore entries before this index
- * @return string
- */
- protected function describeArguments($args = null, $offset = 0) {
- if ($args === null) {
- $args = $this->getArguments();
- }
-
- if ($args === null || count($args) <= $offset) {
- return "";
- }
-
- $buf = "argument";
- if (count($args) > $offset) {
- $buf .= "s";
- }
- $buf .= ":" . PHP_EOL;
- for ($i = $offset, $alen=count($args); $i < $alen; $i++) {
- $buf .= "'" . $args[$i] . "'" . PHP_EOL;
- }
- $buf .= self::DISCLAIMER;
- return $buf;
- }
-}
-
-
-/**
- * "Inner" class used for nested xml command line definitions.
- *
- * @package phing.types
- */
-class CommandlineArgument {
-
- private $parts = array();
- private $outer;
-
- public function __construct(Commandline $outer) {
- $this->outer = $outer;
- }
-
- /**
- * Sets a single commandline argument.
- *
- * @param string $value a single commandline argument.
- */
- public function setValue($value) {
- $this->parts = array($value);
- }
-
- /**
- * Line to split into several commandline arguments.
- *
- * @param line line to split into several commandline arguments
- */
- public function setLine($line) {
- if ($line === null) {
- return;
- }
- $this->parts = $this->outer->translateCommandline($line);
- }
-
- /**
- * Sets a single commandline argument and treats it like a
- * PATH - ensures the right separator for the local platform
- * is used.
- *
- * @param value a single commandline argument.
- */
- public function setPath($value) {
- $this->parts = array( (string) $value );
- }
-
- /**
- * Sets a single commandline argument to the absolute filename
- * of the given file.
- *
- * @param value a single commandline argument.
- */
- public function setFile(PhingFile $value) {
- $this->parts = array($value->getAbsolutePath());
- }
-
- /**
- * Returns the parts this Argument consists of.
- * @return array string[]
- */
- public function getParts() {
- return $this->parts;
- }
-}
-
-/**
- * Class to keep track of the position of an Argument.
- *
- * <p>This class is there to support the srcfile and targetfile
- * elements of &lt;execon&gt; and &lt;transform&gt; - don't know
- * whether there might be additional use cases.</p> --SB
- *
- * @package phing.types
- */
-class CommandlineMarker {
-
- private $position;
- private $realPos = -1;
- private $outer;
-
- public function __construct(Comandline $outer, $position) {
- $this->outer = $outer;
- $this->position = $position;
- }
-
- /**
- * Return the number of arguments that preceeded this marker.
- *
- * <p>The name of the executable - if set - is counted as the
- * very first argument.</p>
- */
- public function getPosition() {
- if ($this->realPos == -1) {
- $realPos = ($this->outer->executable === null ? 0 : 1);
- for ($i = 0; $i < $position; $i++) {
- $arg = $this->arguments[$i];
- $realPos += count($arg->getParts());
- }
- }
- return $this->realPos;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/types/DataType.php b/buildscripts/phing/classes/phing/types/DataType.php
deleted file mode 100644
index 8aa3b487..00000000
--- a/buildscripts/phing/classes/phing/types/DataType.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-/*
- * $Id: 3b15630144c62dda1f447d8eed1e5eda7ac8a466 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/ProjectComponent.php';
-include_once 'phing/BuildException.php';
-
-/**
- * Base class for those classes that can appear inside the build file
- * as stand alone data types.
- *
- * This class handles the common description attribute and provides
- * a default implementation for reference handling and checking for
- * circular references that is appropriate for types that can not be
- * nested inside elements of the same type (i.e. patternset but not path)
- *
- * @package phing.types
- */
-class DataType extends ProjectComponent {
-
- /** The descriptin the user has set. */
- public $description = null;
-
- /** Value to the refid attribute. Type of Reference*/
- public $ref = null;
-
- /**
- * Are we sure we don't hold circular references?
- *
- * Subclasses are responsible for setting this value to false
- * if we'd need to investigate this condition (usually because a
- * child element has been added that is a subclass of DataType).
- * @var boolean
- */
- protected $checked = true;
-
- /**
- * Sets a description of the current data type. It will be useful
- * in commenting what we are doing.
- */
- function setDescription($desc) {
- $this->description = (string) $desc;
- }
-
- /** Return the description for the current data type. */
- function getDescription() {
- return $this->description;
- }
-
- /** Has the refid attribute of this element been set? */
- function isReference() {
- return ($this->ref !== null);
- }
-
- /**
- * Set the value of the refid attribute.
- *
- * Subclasses may need to check whether any other attributes
- * have been set as well or child elements have been created and
- * thus override this method. if they do they must call parent::setRefid()
- *
- * @param Reference $r
- * @return void
- */
- function setRefid(Reference $r) {
- $this->ref = $r;
- $this->checked = false;
- }
-
- /**
- * Check to see whether any DataType we hold references to is
- * included in the Stack (which holds all DataType instances that
- * directly or indirectly reference this instance, including this
- * instance itself).
- *
- * If one is included, throw a BuildException created by circularReference
- *
- * This implementation is appropriate only for a DataType that
- * cannot hold other DataTypes as children.
- *
- * The general contract of this method is that it shouldn't do
- * anything if checked is true and set it to true on exit.
- */
- function dieOnCircularReference(&$stk, Project $p) {
- if ($this->checked || !$this->isReference()) {
- return;
- }
-
- $o = $this->ref->getReferencedObject($p);
-
- if ($o instanceof DataType) {
-
- // TESTME - make sure that in_array() works just as well here
- //
- // check if reference is in stack
- //$contains = false;
- //for ($i=0, $size=count($stk); $i < $size; $i++) {
- // if ($stk[$i] === $o) {
- // $contains = true;
- // break;
- // }
- //}
-
- if (in_array($o, $stk, true)) {
- // throw build exception
- throw $this->circularReference();
- } else {
- array_push($stk, $o);
- $o->dieOnCircularReference($stk, $p);
- array_pop($stk);
- }
- }
- $this->checked = true;
- }
-
- /** Performs the check for circular references and returns the referenced object. */
- function getCheckedRef($requiredClass, $dataTypeName) {
-
- if (!$this->checked) {
- // should be in stack
- $stk = array();
- $stk[] = $this;
- $this->dieOnCircularReference($stk, $this->getProject());
- }
-
- $o = $this->ref->getReferencedObject($this->getProject());
- if (!($o instanceof $requiredClass) ) {
- throw new BuildException($this->ref->getRefId()." doesn't denote a " . $dataTypeName);
- } else {
- return $o;
- }
- }
-
- /**
- * Creates an exception that indicates that refid has to be the
- * only attribute if it is set.
- */
- function tooManyAttributes() {
- return new BuildException( "You must not specify more than one attribute when using refid" );
- }
-
- /**
- * Creates an exception that indicates that this XML element must
- * not have child elements if the refid attribute is set.
- */
- function noChildrenAllowed() {
- return new BuildException("You must not specify nested elements when using refid");
- }
-
- /**
- * Creates an exception that indicates the user has generated a
- * loop of data types referencing each other.
- */
- function circularReference() {
- return new BuildException("This data type contains a circular reference.");
- }
-
- /**
- * Template method being called when the data type has been
- * parsed completely.
- * @return void
- */
- function parsingComplete() {}
-}
-
diff --git a/buildscripts/phing/classes/phing/types/Description.php b/buildscripts/phing/classes/phing/types/Description.php
deleted file mode 100644
index 85b2c529..00000000
--- a/buildscripts/phing/classes/phing/types/Description.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * $Id: bb303eb742207be6958c8107e21ec7c964c09dee $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Description is used to provide a project-wide description element
- * (that is, a description that applies to a buildfile as a whole).
- * If present, the &lt;description&gt; element is printed out before the
- * target descriptions.
- *
- * Description has no attributes, only text. There can only be one
- * project description per project. A second description element will
- * overwrite the first.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Craeg Strong <cstrong@arielpartners.com> (Ant)
- * @package phing.types
- */
-class Description extends DataType {
-
- /**
- * Adds descriptive text to the project.
- *
- * @return void
- */
- public function addText($text) {
- $currentDescription = $this->project->getDescription();
- if ($currentDescription === null) {
- $this->project->setDescription($text);
- } else {
- $this->project->setDescription($currentDescription . $text);
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/types/DirSet.php b/buildscripts/phing/classes/phing/types/DirSet.php
deleted file mode 100644
index 527127bb..00000000
--- a/buildscripts/phing/classes/phing/types/DirSet.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-/*
- * $Id: 1ab2ec4f1b43daee6cf4c247b4b18b78d87052bc $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/types/AbstractFileSet.php';
-
-/**
- * Subclass as hint for supporting tasks that the included directories
- * instead of files should be used.
- *
- * @package phing.types
- */
-class DirSet extends AbstractFileSet {
-
- public function __construct($dirset = null) {
- parent::__construct($dirset);
- }
-
- /**
- * Return a DirSet that has the same basedir and same patternsets
- * as this one.
- */
- public function __clone() {
- if ($this->isReference()) {
- return new DirSet($this->getRef($this->getProject()));
- } else {
- return new DirSet($this);
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/types/Excludes.php b/buildscripts/phing/classes/phing/types/Excludes.php
deleted file mode 100644
index 2d45b593..00000000
--- a/buildscripts/phing/classes/phing/types/Excludes.php
+++ /dev/null
@@ -1,208 +0,0 @@
-<?php
-/*
- * $Id: 0c22f261d1984da235c6cf4993d1275c225a33ba $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/types/DataType.php';
-include_once 'phing/types/FileSet.php';
-require_once 'phing/types/ExcludesNameEntry.php';
-
-/**
- * Datatype which handles excluded files, classes and methods.
- *
- * @package phing.types
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: 0c22f261d1984da235c6cf4993d1275c225a33ba $
- * @since 2.4.6
- */
-class Excludes extends DataType
-{
- /**
- * The directory scanner for getting the excluded files
- *
- * @var DirectoryScanner
- */
- private $_directoryScanner = null;
-
- /**
- * Holds the excluded file patterns
- *
- * @var array
- */
- private $_files = array();
-
- /**
- * Holds the excluded classes
- *
- * @var array
- */
- private $_classes = array();
-
- /**
- * Holds the excluded methods
- *
- * @var array
- */
- private $_methods = array();
-
- /**
- * ctor
- *
- * @param Project $project
- */
- public function __construct(Project $project)
- {
- $this->_directoryScanner = new DirectoryScanner();
- $this->_directoryScanner->setBasedir($project->getBasedir());
- }
-
- /**
- * Add a name entry on the exclude file list
- *
- * @return ExcludesNameEntry Reference to object
- */
- public function createFile()
- {
- return $this->_addFile($this->_files);
- }
-
- /**
- * Add a name entry on the exclude class list
- *
- * @return ExcludesNameEntry Reference to object
- */
- public function createClass()
- {
- return $this->_addClass($this->_classes);
- }
-
- /**
- * Add a name entry on the exclude method list
- *
- * @return ExcludesNameEntry Reference to object
- */
- public function createMethod()
- {
- return $this->_addMethod($this->_methods);
- }
-
- /**
- * Adds a file to the exclusion list
- *
- * @param FileSet $fileSet The FileSet into which the nameentry should be added
- *
- * @return ExcludesNameEntry Reference to the created ExcludesNameEntry instance
- */
- private function _addFile(&$fileList)
- {
- $file = new ExcludesNameEntry();
- $fileList[] = $file;
-
- return $file;
- }
-
- /**
- * Adds a class to the exclusion list
- *
- * @return ExcludesNameEntry Reference to the created ExcludesNameEntry instance
- */
- private function _addClass(&$classList)
- {
- $excludedClass = new ExcludesNameEntry();
- $classList[] = $excludedClass;
-
- return $excludedClass;
- }
-
- /**
- * Adds a method to the exclusion list
- *
- * @return ExcludesNameEntry Reference to the created ExcludesNameEntry instance
- */
- private function _addMethod(&$methodList)
- {
- $excludedMethod = new ExcludesNameEntry();
- $methodList[] = $excludedMethod;
-
- return $excludedMethod;
- }
-
- /**
- * Returns the excluded files
- *
- * @return array
- */
- public function getExcludedFiles()
- {
- $includes = array();
-
- foreach ($this->_files as $file) {
- $includes[] = $file->getName();
- }
-
- $this->_directoryScanner->setIncludes($includes);
- $this->_directoryScanner->scan();
-
- $files = $this->_directoryScanner->getIncludedFiles();
- $dir = $this->_directoryScanner->getBasedir();
- $fileList = array();
-
- foreach ($files as $file) {
- $fileList[] = $dir . DIRECTORY_SEPARATOR . $file;
- }
-
- return $fileList;
- }
-
- /**
- * Returns the excluded class names
- *
- * @return array
- */
- public function getExcludedClasses()
- {
- $excludedClasses = array();
-
- foreach ($this->_classes as $excludedClass) {
- $excludedClasses[] = $excludedClass->getName();
- }
-
- return $excludedClasses;
- }
-
- /**
- * Returns the excluded method names
- *
- * @return array
- */
- public function getExcludedMethods()
- {
- $excludedMethods = array();
-
- foreach ($this->_methods as $excludedMethod) {
- $classAndMethod = explode('::', $excludedMethod->getName());
- $className = $classAndMethod[0];
- $methodName = $classAndMethod[1];
-
- $excludedMethods[$className][] = $methodName;
- }
-
- return $excludedMethods;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/types/ExcludesNameEntry.php b/buildscripts/phing/classes/phing/types/ExcludesNameEntry.php
deleted file mode 100644
index 1aa6aae5..00000000
--- a/buildscripts/phing/classes/phing/types/ExcludesNameEntry.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-/*
- * $Id: a1098700b4f205baacfd5adf5434e5a4803a6a3f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Class for holding nested excludes elements (file, class, method).
- *
- * @package phing.types
- * @author Benjamin Schultz <bschultz@proqrent.de>
- * @version $Id: a1098700b4f205baacfd5adf5434e5a4803a6a3f $
- * @since 2.4.6
- */
-class ExcludesNameEntry
-{
- /**
- * Holds the name of a file, class or method or a file pattern
- *
- * @var string
- */
- private $_name;
-
- /**
- * An alias for the setName() method.
- * Set the name of a file pattern.
- *
- * @see setName()
- *
- * @param string $pattern The file pattern
- */
- public function addText($pattern)
- {
- $this->setName($pattern);
- }
-
- /**
- * Set the name of a file, class or method
- *
- * @param string $name
- */
- public function setName($name)
- {
- $this->_name = (string) $name;
- }
-
- /**
- * Get the name of a file, class or method or the file pattern
- *
- * @return string The name of a file, class or method or the file pattern
- */
- public function getName()
- {
- return $this->_name;
- }
-
- /**
- * Gets a string representation of this name or pattern.
- *
- * @return string
- */
- public function toString()
- {
- return $this->_name;
- }
-} \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/types/FileList.php b/buildscripts/phing/classes/phing/types/FileList.php
deleted file mode 100755
index bc7c6b18..00000000
--- a/buildscripts/phing/classes/phing/types/FileList.php
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-/*
- * $Id: aab0ffb8e2266923f6cdaf165741dc38931a2aed $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/DataType.php';
-include_once 'phing/system/io/PhingFile.php';
-
-/**
- * FileList represents an explicitly named list of files. FileLists
- * are useful when you want to capture a list of files regardless of
- * whether they currently exist.
- *
- * <filelist
- * id="docfiles"
- * dir="${phing.docs.dir}"
- * files="chapters/Installation.html,chapters/Setup.html"/>
- *
- * OR
- *
- * <filelist
- * dir="${doc.src.dir}"
- * listfile="${phing.docs.dir}/PhingGuide.book"/>
- *
- * (or a mixture of files="" and listfile="" can be used)
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @version $Id$
- * @package phing.types
- */
-class FileList extends DataType {
-
- // public for "cloning" purposes
-
- /** Array containing all filenames. */
- public $filenames = array();
-
- /** Base directory for this file list. */
- public $dir;
-
- /** PhingFile that contains a list of files (one per line). */
- public $listfile;
-
- /**
- * Construct a new FileList.
- * @param array $filelist;
- */
- function __construct($filelist = null) {
- if ($filelist !== null) {
- $this->dir = $filelist->dir;
- $this->filenames = $filelist->filenames;
- $this->listfile = $filelist->listfile;
- }
- }
-
- /**
- * Makes this instance in effect a reference to another FileList
- * instance.
- */
- function setRefid(Reference $r) {
- if ($this->dir !== null || count($this->filenames) !== 0) {
- throw $this->tooManyAttributes();
- }
- parent::setRefid($r);
- }
-
- /**
- * Base directory for files in list.
- * @param PhingFile $dir
- */
- function setDir(PhingFile $dir) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if (!($dir instanceof PhingFile)) {
- $dir = new PhingFile($dir);
- }
- $this->dir = $dir;
- }
-
- /**
- * Get the basedir for files in list.
- * @return PhingFile
- */
- function getDir(Project $p) {
- if ($this->isReference()) {
- $ref = $this->getRef($p);
- return $ref->getDir($p);
- }
- return $this->dir;
- }
-
- /**
- * Set the array of files in list.
- * @param array $filenames
- */
- function setFiles($filenames) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if (!empty($filenames)) {
- $tok = strtok($filenames, ", \t\n\r");
- while ($tok !== false) {
- $fname = trim($tok);
- if ($fname !== "") {
- $this->filenames[] = $tok;
- }
- $tok = strtok(", \t\n\r");
- }
- }
- }
-
- /**
- * Sets a source "list" file that contains filenames to add -- one per line.
- * @param string $file
- */
- function setListFile($file) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if (!($file instanceof PhingFile)) {
- $file = new PhingFile($file);
- }
- $this->listfile = $file;
- }
-
- /**
- * Get the source "list" file that contains file names.
- * @param Project $p
- * @return PhingFile
- */
- function getListFile(Project $p) {
- if ($this->isReference()) {
- $ref = $this->getRef($p);
- return $ref->getListFile($p);
- }
- return $this->listfile;
- }
-
- /**
- * Returns the list of files represented by this FileList.
- * @param Project $p
- * @return array
- */
- function getFiles(Project $p) {
-
- if ($this->isReference()) {
- $ret = $this->getRef($p);
- $ret = $ret->getFiles($p);
- return $ret;
- }
-
- if ($this->listfile !== null) {
- $this->readListFile($p);
- }
-
- return $this->filenames;
- }
-
-
- /**
- * Performs the check for circular references and returns the
- * referenced FileSet.
- * @param Project $p
- */
- function getRef(Project $p) {
- if (!$this->checked) {
- $stk = array();
- array_push($stk, $this);
- $this->dieOnCircularReference($stk, $p);
- }
-
- $o = $this->ref->getReferencedObject($p);
- if (!($o instanceof FileList)) {
- throw new BuildException($this->ref->getRefId()." doesn't denote a filelist");
- } else {
- return $o;
- }
- }
-
- /**
- * Reads file names from a file and adds them to the files array.
- * @param Project $p
- */
- private function readListFile(Project $p) {
- $listReader = null;
- try {
- // Get a FileReader
- $listReader = new BufferedReader(new FileReader($this->listfile));
-
- $line = $listReader->readLine();
- while ($line !== null) {
- if (!empty($line)) {
- $line = $p->replaceProperties($line);
- $this->filenames[] = trim($line);
- }
- $line = $listReader->readLine();
- }
- } catch (Exception $e) {
- if ($listReader) $listReader->close();
- throw new BuildException("An error occured while reading from list file " . $this->listfile->__toString() . ": " . $e->getMessage());
- }
-
- $listReader->close();
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/FileSet.php b/buildscripts/phing/classes/phing/types/FileSet.php
deleted file mode 100644
index 229e4419..00000000
--- a/buildscripts/phing/classes/phing/types/FileSet.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/*
- * $Id: 1fbeb217059bb26788059dd46affde1428d5a52e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/AbstractFileSet.php';
-
-/**
- * Moved out of MatchingTask to make it a standalone object that could
- * be referenced (by scripts for example).
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Arnout J. Kuiper <ajkuiper@wxs.nl> (Ant)
- * @author Stefano Mazzocchi <stefano@apache.org> (Ant)
- * @author Sam Ruby <rubys@us.ibm.com> (Ant)
- * @author Jon S. Stevens <jon@clearink.com> (Ant)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @author Magesh Umasankar (Ant)
- * @package phing.types
- */
-class FileSet extends AbstractFileSet {
-
- function __construct($fileset = null) {
- parent::__construct($fileset);
- }
-
- /**
- * Return a FileSet that has the same basedir and same patternsets
- * as this one.
- */
- public function __clone() {
- if ($this->isReference()) {
- return new FileSet($this->getRef($this->getProject()));
- } else {
- return new FileSet($this);
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/types/FilterChain.php b/buildscripts/phing/classes/phing/types/FilterChain.php
deleted file mode 100755
index e6575c33..00000000
--- a/buildscripts/phing/classes/phing/types/FilterChain.php
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-/*
- * $Id: ec2362b430c0a863a77968e9003b09c4b9a78d7e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/types/DataType.php';
-include_once 'phing/filters/HeadFilter.php';
-include_once 'phing/filters/IconvFilter.php';
-include_once 'phing/filters/TailFilter.php';
-include_once 'phing/filters/LineContains.php';
-include_once 'phing/filters/LineContainsRegexp.php';
-include_once 'phing/filters/ExpandProperties.php';
-include_once 'phing/filters/PrefixLines.php';
-include_once 'phing/filters/ReplaceRegexp.php';
-include_once 'phing/filters/ReplaceTokens.php';
-include_once 'phing/filters/ReplaceTokensWithFile.php';
-include_once 'phing/filters/StripPhpComments.php';
-include_once 'phing/filters/StripLineBreaks.php';
-include_once 'phing/filters/StripLineComments.php';
-include_once 'phing/filters/StripWhitespace.php';
-include_once 'phing/filters/TabToSpaces.php';
-include_once 'phing/filters/TidyFilter.php';
-include_once 'phing/filters/TranslateGettext.php';
-include_once 'phing/filters/XincludeFilter.php';
-include_once 'phing/filters/XsltFilter.php';
-
-/**
- * FilterChain may contain a chained set of filter readers.
- *
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @version $Id$
- * @package phing.types
- */
-class FilterChain extends DataType {
-
- private $filterReaders = array();
-
- function __construct($project = null) {
- if ($project)
- {
- $this->project = $project;
- }
- }
-
- function getFilterReaders() {
- return $this->filterReaders;
- }
-
- function addExpandProperties(ExpandProperties $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addGettext(TranslateGettext $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addHeadFilter(HeadFilter $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addIconvFilter(IconvFilter $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addTailFilter(TailFilter $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addLineContains(LineContains $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addLineContainsRegExp(LineContainsRegExp $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addPrefixLines(PrefixLines $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addReplaceTokens(ReplaceTokens $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addReplaceTokensWithFile(ReplaceTokensWithFile $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addReplaceRegexp(ReplaceRegexp $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addStripPhpComments(StripPhpComments $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addStripLineBreaks(StripLineBreaks $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addStripLineComments(StripLineComments $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addStripWhitespace(StripWhitespace $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addTidyFilter(TidyFilter $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addTabToSpaces(TabToSpaces $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addXincludeFilter(XincludeFilter $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addXsltFilter(XsltFilter $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- function addFilterReader(PhingFilterReader $o) {
- $o->setProject($this->project);
- $this->filterReaders[] = $o;
- }
-
- /*
- * Makes this instance in effect a reference to another FilterChain
- * instance.
- *
- * <p>You must not set another attribute or nest elements inside
- * this element if you make it a reference.</p>
- *
- * @param $r the reference to which this instance is associated
- * @throws BuildException if this instance already has been configured.
- */
- function setRefid(Reference $r) {
-
- if ( count($this->filterReaders) !== 0 ) {
- throw $this->tooManyAttributes();
- }
-
- // change this to get the objects from the other reference
- $o = $r->getReferencedObject($this->getProject());
- if ( $o instanceof FilterChain ) {
- $this->filterReaders = $o->getFilterReaders();
- } else {
- throw new BuildException($r->getRefId()." doesn't refer to a FilterChain");
- }
- parent::setRefid($r);
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/types/IterableFileSet.php b/buildscripts/phing/classes/phing/types/IterableFileSet.php
deleted file mode 100644
index bc800bbe..00000000
--- a/buildscripts/phing/classes/phing/types/IterableFileSet.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/*
- * $Id: a607a54aa4e434c01a1f36600274fb31041549e2 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * FileSet adapter to SPL's Iterator.
- *
- * @package phing.types
- * @author Alexey Shockov <alexey@shockov.com>
- * @since 2.4.0
- * @internal
- */
-class IterableFileSet
- extends FileSet
- implements IteratorAggregate
-{
- /**
- * @return Iterator
- */
- public function getIterator()
- {
- return new ArrayIterator($this->getFiles());
- }
- /**
- * @return array
- */
- private function getFiles()
- {
- $directoryScanner = $this->getDirectoryScanner($this->getProject());
- $files = $directoryScanner->getIncludedFiles();
-
- $baseDirectory = $directoryScanner->getBasedir();
- foreach ($files as $index => $file) {
- $files[$index] = realpath($baseDirectory.'/'.$file);
- }
-
- return $files;
- }
-}
diff --git a/buildscripts/phing/classes/phing/types/Mapper.php b/buildscripts/phing/classes/phing/types/Mapper.php
deleted file mode 100644
index 03042c64..00000000
--- a/buildscripts/phing/classes/phing/types/Mapper.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-/*
- * $Id: bab760877500c0bb1ed4d6879c7e31c60c3fd307 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/types/DataType.php';
-include_once 'phing/types/Path.php';
-
-/**
- * Filename Mapper maps source file name(s) to target file name(s).
- *
- * Built-in mappers can be accessed by specifying they "type" attribute:
- * <code>
- * <mapper type="glob" from="*.php" to="*.php.bak"/>
- * </code>
- * Custom mappers can be specified by providing a dot-path to a include_path-relative
- * class:
- * <code>
- * <mapper classname="myapp.mappers.DevToProdMapper" from="*.php" to="*.php"/>
- * <!-- maps all PHP files from development server to production server, for example -->
- * </code>
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.types
- */
-class Mapper extends DataType {
-
- protected $type;
- protected $classname;
- protected $from;
- protected $to;
- protected $classpath;
- protected $classpathId;
-
-
- function __construct(Project $project) {
- $this->project = $project;
- }
-
- /**
- * Set the classpath to be used when searching for component being defined
- *
- * @param Path $classpath An Path object containing the classpath.
- */
- public function setClasspath(Path $classpath) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if ($this->classpath === null) {
- $this->classpath = $classpath;
- } else {
- $this->classpath->append($classpath);
- }
- }
-
- /**
- * Create the classpath to be used when searching for component being defined
- */
- public function createClasspath() {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if ($this->classpath === null) {
- $this->classpath = new Path($this->project);
- }
- return $this->classpath->createPath();
- }
-
- /**
- * Reference to a classpath to use when loading the files.
- */
- public function setClasspathRef(Reference $r) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->classpathId = $r->getRefId();
- $this->createClasspath()->setRefid($r);
- }
-
- /** Set the type of FileNameMapper to use. */
- function setType($type) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->type = $type;
- }
-
- /** Set the class name of the FileNameMapper to use. */
- function setClassname($classname) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->classname = $classname;
- }
-
- /**
- * Set the argument to FileNameMapper.setFrom
- */
- function setFrom($from) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->from = $from;
- }
-
- /**
- * Set the argument to FileNameMapper.setTo
- */
- function setTo($to) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->to = $to;
- }
-
- /**
- * Make this Mapper instance a reference to another Mapper.
- *
- * You must not set any other attribute if you make it a reference.
- */
- function setRefid(Reference $r) {
- if ($this->type !== null || $this->from !== null || $this->to !== null) {
- throw DataType::tooManyAttributes();
- }
- parent::setRefid($r);
- }
-
- /** Factory, returns inmplementation of file name mapper as new instance */
- function getImplementation() {
- if ($this->isReference()) {
- $tmp = $this->getRef();
- return $tmp->getImplementation();
- }
-
- if ($this->type === null && $this->classname === null) {
- throw new BuildException("either type or classname attribute must be set for <mapper>");
- }
-
- if ($this->type !== null) {
- switch($this->type) {
- case 'identity':
- $this->classname = 'phing.mappers.IdentityMapper';
- break;
- case 'flatten':
- $this->classname = 'phing.mappers.FlattenMapper';
- break;
- case 'glob':
- $this->classname = 'phing.mappers.GlobMapper';
- break;
- case 'regexp':
- case 'regex':
- $this->classname = 'phing.mappers.RegexpMapper';
- break;
- case 'merge':
- $this->classname = 'phing.mappers.MergeMapper';
- break;
- default:
- throw new BuildException("Mapper type {$this->type} not known");
- break;
- }
- }
-
- // get the implementing class
- $cls = Phing::import($this->classname, $this->classpath);
-
- $m = new $cls;
- $m->setFrom($this->from);
- $m->setTo($this->to);
-
- return $m;
- }
-
- /** Performs the check for circular references and returns the referenced Mapper. */
- private function getRef() {
- if (!$this->checked) {
- $stk = array();
- $stk[] = $this;
- $this->dieOnCircularReference($stk, $this->project);
- }
-
- $o = $this->ref->getReferencedObject($this->project);
- if (!($o instanceof Mapper)) {
- $msg = $this->ref->getRefId()." doesn't denote a mapper";
- throw new BuildException($msg);
- } else {
- return $o;
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/Parameter.php b/buildscripts/phing/classes/phing/types/Parameter.php
deleted file mode 100644
index cbba153c..00000000
--- a/buildscripts/phing/classes/phing/types/Parameter.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/*
- * $Id: 725ec7b7d585219471bb8793da0210c7ab1452c0 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/types/DataType.php';
-
-/**
- * A parameter is composed of a name, type and value. Nested
- * Parameters are also possible, but the using task/type has
- * to support them
- *
- * @author Manuel Holtgrewe
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @package phing.types
- */
-class Parameter extends DataType {
-
- /** Parameter name */
- protected $name;
-
- /** Paramter type */
- protected $type;
-
- /** Parameter value */
- protected $value;
-
- /** Nested parameters */
- protected $parameters = array();
-
- function setName($name) {
- $this->name = (string) $name;
- }
-
- function setType($type) {
- $this->type = (string) $type;
- }
-
- /**
- * Sets value to dynamic register slot.
- * @param RegisterSlot $value
- */
- public function setListeningValue(RegisterSlot $value) {
- $this->value = $value;
- }
-
- function setValue($value) {
- $this->value = (string) $value;
- }
-
- function getName() {
- return $this->name;
- }
-
- function getType() {
- return $this->type;
- }
-
- function getValue() {
- if ($this->value instanceof RegisterSlot) {
- return $this->value->getValue();
- } else {
- return $this->value;
- }
- }
-
- /**
- * @return Parameter
- */
- function createParam() {
- $num = array_push($this->parameters, new Parameter());
- return $this->parameters[$num-1];
- }
-
- /**
- * @return array Nested parameters.
- */
- function getParams() {
- return $this->parameters;
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/Parameterizable.php b/buildscripts/phing/classes/phing/types/Parameterizable.php
deleted file mode 100644
index 7efe790a..00000000
--- a/buildscripts/phing/classes/phing/types/Parameterizable.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/*
- * $Id: e0d41388dad173e2dd61527524d6c3958683171b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Parameterizable objects take genric key value pairs.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Magesh Umasankar (Ant)
- * @package phing.types
- */
-interface Parameterizable {
- function setParameters($parameters);
-}
diff --git a/buildscripts/phing/classes/phing/types/Path.php b/buildscripts/phing/classes/phing/types/Path.php
deleted file mode 100644
index b8525628..00000000
--- a/buildscripts/phing/classes/phing/types/Path.php
+++ /dev/null
@@ -1,452 +0,0 @@
-<?php
-/*
- * $Id: 762715ec83a12704f4ab528e507c28396c159083 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/DataType.php';
-include_once 'phing/util/PathTokenizer.php';
-include_once 'phing/types/FileSet.php';
-
-/**
- * This object represents a path as used by include_path or PATH
- * environment variable.
- *
- * This class has been adopted from the Java Ant equivalent. The ability have
- * path structures in Phing is important; however, because of how PHP classes interact
- * the ability to specify CLASSPATHs makes less sense than Java.Rather than providing
- * CLASSPATH for any tasks that take classes as parameters, perhaps a better
- * solution in PHP is to have an IncludePath task, which prepends paths to PHP's include_path
- * INI variable. This gets around the problem that simply using a path to load the initial
- * PHP class is not enough (in most cases the loaded class may assume that it is on the global
- * PHP include_path, and will try to load dependent classes accordingly). The other option is
- * to provide a way for this class to add paths to the include path, if desired -- or to create
- * an IncludePath subclass. Once added, though, when would a path be removed from the include path?
- *
- * <p>
- * <code>
- * &lt;sometask&gt;<br>
- * &nbsp;&nbsp;&lt;somepath&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement path="/path/to/class2;/path/to/class3" /&gt;<br>
- * &nbsp;&nbsp;&nbsp;&nbsp;&lt;pathelement location="/path/to/file3" /&gt;<br>
- * &nbsp;&nbsp;&lt;/somepath&gt;<br>
- * &lt;/sometask&gt;<br>
- * </code>
- * <p>
- * The object implemention <code>sometask</code> must provide a method called
- * <code>createSomepath</code> which returns an instance of <code>Path</code>.
- * Nested path definitions are handled by the Path object and must be labeled
- * <code>pathelement</code>.<p>
- *
- * The path element takes a parameter <code>path</code> which will be parsed
- * and split into single elements. It will usually be used
- * to define a path from an environment variable.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Thomas.Haas@softwired-inc.com (Ant)
- * @author Stefan Bodewig <stefan.bodewig@epost.de> (Ant)
- * @package phing.types
- */
-class Path extends DataType {
-
- private $elements = array();
-
- /**
- * Constructor for internally instantiated objects sets project.
- * @param Project $project
- * @param string $path (for use by IntrospectionHelper)
- */
- public function __construct($project = null, $path = null) {
- if ($project !== null) {
- $this->setProject($project);
- }
- if ($path !== null) {
- $this->createPathElement()->setPath($path);
- }
- }
-
- /**
- * Adds a element definition to the path.
- * @param $location the location of the element to add (must not be
- * <code>null</code> nor empty.
- * @throws BuildException
- */
- public function setDir(PhingFile $location) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->createPathElement()->setDir($location);
- }
-
- /**
- * Parses a path definition and creates single PathElements.
- * @param path the path definition.
- * @throws BuildException
- */
- public function setPath($path) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- $this->createPathElement()->setPath($path);
- }
-
- /**
- * Makes this instance in effect a reference to another Path instance.
- *
- * <p>You must not set another attribute or nest elements inside
- * this element if you make it a reference.</p>
- * @throws BuildException
- */
- public function setRefid(Reference $r) {
- if (!empty($this->elements)) {
- throw $this->tooManyAttributes();
- }
- $this->elements[] = $r;
- parent::setRefid($r);
- }
-
- /**
- * Creates the nested <code>&lt;pathelement&gt;</code> element.
- * @throws BuildException
- */
- public function createPathElement() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- $pe = new PathElement($this);
- $this->elements[] = $pe;
- return $pe;
- }
-
- /**
- * Adds a nested <code>&lt;fileset&gt;</code> element.
- * @throws BuildException
- */
- public function addFileset(FileSet $fs) {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- $this->elements[] = $fs;
- $this->checked = false;
- }
-
- /**
- * Adds a nested <code>&lt;dirset&gt;</code> element.
- * @throws BuildException
- */
- public function addDirset(DirSet $dset) {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- $this->elements[] = $dset;
- $this->checked = false;
- }
-
- /**
- * Creates a nested <code>&lt;path&gt;</code> element.
- * @throws BuildException
- */
- public function createPath() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- $p = new Path($this->project);
- $this->elements[] = $p;
- $this->checked = false;
- return $p;
- }
-
- /**
- * Append the contents of the other Path instance to this.
- */
- public function append(Path $other) {
- if ($other === null) {
- return;
- }
- $l = $other->listPaths();
- foreach($l as $path) {
- if (!in_array($path, $this->elements, true)) {
- $this->elements[] = $path;
- }
- }
- }
-
- /**
- * Adds the components on the given path which exist to this
- * Path. Components that don't exist, aren't added.
- *
- * @param Path $source - Source path whose components are examined for existence.
- */
- public function addExisting(Path $source) {
- $list = $source->listPaths();
- foreach($list as $el) {
- $f = null;
- if ($this->project !== null) {
- $f = $this->project->resolveFile($el);
- } else {
- $f = new PhingFile($el);
- }
-
- if ($f->exists()) {
- $this->setDir($f);
- } else {
- $this->log("dropping " . $f->__toString() . " from path as it doesn't exist",
- Project::MSG_VERBOSE);
- }
- }
- }
-
- /**
- * Returns all path elements defined by this and nested path objects.
- * @return array List of path elements.
- */
- public function listPaths() {
- if (!$this->checked) {
- // make sure we don't have a circular reference here
- $stk = array();
- array_push($stk, $this);
- $this->dieOnCircularReference($stk, $this->project);
- }
-
- $result = array();
- for ($i = 0, $elSize=count($this->elements); $i < $elSize; $i++) {
- $o = $this->elements[$i];
- if ($o instanceof Reference) {
- $o = $o->getReferencedObject($this->project);
- // we only support references to paths right now
- if (!($o instanceof Path)) {
- $msg = $r->getRefId() . " doesn't denote a path";
- throw new BuildException($msg);
- }
- }
-
- if (is_string($o)) {
- $result[] = $o;
- } elseif ($o instanceof PathElement) {
- $parts = $o->getParts();
- if ($parts === null) {
- throw new BuildException("You must either set location or"
- . " path on <pathelement>");
- }
- foreach($parts as $part) {
- $result[] = $part;
- }
- } elseif ($o instanceof Path) {
- $p = $o;
- if ($p->getProject() === null) {
- $p->setProject($this->getProject());
- }
- $parts = $p->listPaths();
- foreach($parts as $part) {
- $result[] = $part;
- }
- } elseif ($o instanceof DirSet) {
- $dset = $o;
- $ds = $dset->getDirectoryScanner($this->project);
- $dirstrs = $ds->getIncludedDirectories();
- $dir = $dset->getDir($this->project);
- foreach($dirstrs as $dstr) {
- $d = new PhingFile($dir, $dstr);
- $result[] = $d->getAbsolutePath();
- }
- } elseif ($o instanceof FileList) {
- $fl = $o;
- $dirstrs = $fl->getFiles($this->project);
- $dir = $fl->getDir($this->project);
- foreach($dirstrs as $dstr) {
- $d = new PhingFile($dir, $dstr);
- $result[] = $d->getAbsolutePath();
- }
- }
- }
-
- return array_unique($result);
- }
-
-
- /**
- * Returns a textual representation of the path, which can be used as
- * CLASSPATH or PATH environment variable definition.
- * @return string A textual representation of the path.
- */
- public function __toString() {
-
- $list = $this->listPaths();
-
- // empty path return empty string
- if (empty($list)) {
- return "";
- }
-
- return implode(PATH_SEPARATOR, $list);
- }
-
- /**
- * Splits a PATH (with : or ; as separators) into its parts.
- * @param Project $project
- * @param string $source
- */
- public static function translatePath(Project $project, $source) {
- $result = array();
- if ($source == null) {
- return "";
- }
-
- $tok = new PathTokenizer($source);
- while ($tok->hasMoreTokens()) {
- $pathElement = $tok->nextToken();
- try {
- $element = self::resolveFile($project, $pathElement);
- for ($i = 0, $_i=strlen($element); $i < $_i; $i++) {
- self::translateFileSep($element, $i);
- }
- $result[] = $element;
- } catch (BuildException $e) {
- $this->project->log("Dropping path element " . $pathElement
- . " as it is not valid relative to the project",
- Project::MSG_VERBOSE);
- }
- }
-
- return $result;
- }
-
- /**
- * Returns its argument with all file separator characters
- * replaced so that they match the local OS conventions.
- */
- public static function translateFile($source) {
- if ($source == null) {
- return "";
- }
-
- $result = $source;
- for ($i = 0, $_i=strlen($source); $i < $_i; $i++) {
- self::translateFileSep($result, $i);
- }
-
- return $result;
- }
-
- /**
- * Translates all occurrences of / or \ to correct separator of the
- * current platform and returns whether it had to do any
- * replacements.
- */
- protected static function translateFileSep(&$buffer, $pos) {
- if ($buffer{$pos} == '/' || $buffer{$pos} == '\\') {
- $buffer{$pos} = DIRECTORY_SEPARATOR;
- return true;
- }
- return false;
- }
-
- /**
- * How many parts does this Path instance consist of.
- * DEV NOTE: expensive call! list is generated, counted, and then
- * discareded.
- * @return int
- */
- public function size() {
- return count($this->listPaths());
- }
-
- /**
- * Return a Path that holds the same elements as this instance.
- */
- public function __clone() {
- $p = new Path($this->project);
- $p->append($this);
- return $p;
- }
-
- /**
- * Overrides the version of DataType to recurse on all DataType
- * child elements that may have been added.
- * @throws BuildException
- */
- public function dieOnCircularReference(&$stk, Project $p) {
-
- if ($this->checked) {
- return;
- }
-
- // elements can contain strings, FileSets, Reference, etc.
- foreach($this->elements as $o) {
-
- if ($o instanceof Reference) {
- $o = $o->getReferencedObject($p);
- }
-
- if ($o instanceof DataType) {
- if (in_array($o, $stk, true)) {
- throw $this->circularReference();
- } else {
- array_push($stk, $o);
- $o->dieOnCircularReference($stk, $p);
- array_pop($stk);
- }
- }
- }
-
- $this->checked = true;
- }
-
- /**
- * Resolve a filename with Project's help - if we know one that is.
- *
- * <p>Assume the filename is absolute if project is null.</p>
- */
- private static function resolveFile(Project $project, $relativeName) {
- if ($project !== null) {
- $f = $project->resolveFile($relativeName);
- return $f->getAbsolutePath();
- }
- return $relativeName;
- }
-
-}
-
-
-/**
- * Helper class, holds the nested <code>&lt;pathelement&gt;</code> values.
- *
- * @package phing.types
- */
-class PathElement {
-
- private $parts = array();
- private $outer;
-
- public function __construct(Path $outer) {
- $this->outer = $outer;
- }
-
- public function setDir(PhingFile $loc) {
- $this->parts = array(Path::translateFile($loc->getAbsolutePath()));
- }
-
- public function setPath($path) {
- $this->parts = Path::translatePath($this->outer->getProject(), $path);
- }
-
- public function getParts() {
- return $this->parts;
- }
-}
diff --git a/buildscripts/phing/classes/phing/types/PatternSet.php b/buildscripts/phing/classes/phing/types/PatternSet.php
deleted file mode 100755
index 32967d62..00000000
--- a/buildscripts/phing/classes/phing/types/PatternSet.php
+++ /dev/null
@@ -1,493 +0,0 @@
-<?php
-/*
- * $Id: af3bd3709d79ad0299bf6ec0130a8a244ee325ab $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/io/FileReader.php';
-include_once 'phing/types/DataType.php';
-
-/**
- * The patternset storage component. Carries all necessary data and methods
- * for the patternset stuff.
- *
- * @author Andreas Aderhold, andi@binarycloud.com
- * @version $Id: af3bd3709d79ad0299bf6ec0130a8a244ee325ab $
- * @package phing.types
- */
-class PatternSet extends DataType {
-
- private $includeList = array();
- private $excludeList = array();
- private $includesFileList = array();
- private $excludesFileList = array();
-
- /**
- * Makes this instance in effect a reference to another PatternSet
- * instance.
- * You must not set another attribute or nest elements inside
- * this element if you make it a reference.
- */
- function setRefid(Reference $r) {
- if (!empty($this->includeList) || !empty($this->excludeList)) {
- throw $this->tooManyAttributes();
- }
- parent::setRefid($r);
- }
-
-
- /**
- * Add a name entry on the include list
- *
- * @return PatternSetNameEntry Reference to object
- * @throws BuildException
- */
- function createInclude() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- return $this->addPatternToList($this->includeList);
- }
-
-
- /**
- * Add a name entry on the include files list
- *
- * @return PatternSetNameEntry Reference to object
- * @throws BuildException
- */
- function createIncludesFile() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- return $this->addPatternToList($this->includesFileList);
- }
-
- /**
- * Add a name entry on the exclude list
- *
- * @return PatternSetNameEntry Reference to object
- * @throws BuildException
- */
- function createExclude() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- return $this->addPatternToList($this->excludeList);
- }
-
- /**
- * add a name entry on the exclude files list
- *
- * @return PatternSetNameEntry Reference to object
- * @throws BuildException
- */
- function createExcludesFile() {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- return;
- }
- return $this->addPatternToList($this->excludesFileList);
- }
-
-
- /**
- * Sets the set of include patterns. Patterns may be separated by a comma
- * or a space.
- *
- * @param string the string containing the include patterns
- * @return void
- * @throws BuildException
- */
- function setIncludes($includes) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if ($includes !== null && strlen($includes) > 0) {
- $tok = strtok($includes, ", ");
- while ($tok !== false) {
- $o = $this->createInclude();
- $o->setName($tok);
- $tok = strtok(", ");
- }
- }
- }
-
-
- /**
- * Sets the set of exclude patterns. Patterns may be separated by a comma
- * or a space.
- *
- * @param string the string containing the exclude patterns
- * @return void
- * @throws BuildException
- */
- function setExcludes($excludes) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if ($excludes !== null && strlen($excludes) > 0) {
- $tok = strtok($excludes, ", ");
- while ($tok !== false) {
- $o = $this->createExclude();
- $o->setName($tok);
- $tok = strtok(", ");
- }
- }
- }
-
- /**
- * add a name entry to the given list
- *
- * @param array List onto which the nameentry should be added
- * @return PatternSetNameEntry Reference to the created PsetNameEntry instance
- */
- private function addPatternToList(&$list) {
- $num = array_push($list, new PatternSetNameEntry());
- return $list[$num-1];
- }
-
- /**
- * Sets the name of the file containing the includes patterns.
- *
- * @param includesFile The file to fetch the include patterns from.
- */
- function setIncludesFile($includesFile) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if ($includesFile instanceof File) {
- $includesFile = $includesFile->getPath();
- }
- $o = $this->createIncludesFile();
- $o->setName($includesFile);
- }
-
- /**
- * Sets the name of the file containing the excludes patterns.
- *
- * @param excludesFile The file to fetch the exclude patterns from.
- */
- function setExcludesFile($excludesFile) {
- if ($this->isReference()) {
- throw $this->tooManyAttributes();
- }
- if ($excludesFile instanceof File) {
- $excludesFile = $excludesFile->getPath();
- }
- $o = $this->createExcludesFile();
- $o->setName($excludesFile);
- }
-
-
- /**
- * Reads path matching patterns from a file and adds them to the
- * includes or excludes list
- */
- private function readPatterns(PhingFile $patternfile, &$patternlist, Project $p) {
- $patternReader = null;
- try {
- // Get a FileReader
- $patternReader = new BufferedReader(new FileReader($patternfile));
-
- // Create one NameEntry in the appropriate pattern list for each
- // line in the file.
- $line = $patternReader->readLine();
- while ($line !== null) {
- if (!empty($line)) {
- $line = $p->replaceProperties($line);
- $this->addPatternToList($patternlist)->setName($line);
- }
- $line = $patternReader->readLine();
- }
-
- } catch (IOException $ioe) {
- $msg = "An error occured while reading from pattern file: " . $patternfile->__toString();
- if($patternReader) $patternReader->close();
- throw new BuildException($msg, $ioe);
- }
-
- $patternReader->close();
- }
-
-
- /** Adds the patterns of the other instance to this set. */
- function append($other, $p) {
- if ($this->isReference()) {
- throw new BuildException("Cannot append to a reference");
- }
-
- $incl = $other->getIncludePatterns($p);
- if ($incl !== null) {
- foreach($incl as $incl_name) {
- $o = $this->createInclude();
- $o->setName($incl_name);
- }
- }
-
- $excl = $other->getExcludePatterns($p);
- if ($excl !== null) {
- foreach($excl as $excl_name) {
- $o = $this->createExclude();
- $o->setName($excl_name);
- }
- }
- }
-
- /** Returns the filtered include patterns. */
- function getIncludePatterns(Project $p) {
- if ($this->isReference()) {
- $o = $this->getRef($p);
- return $o->getIncludePatterns($p);
- } else {
- $this->readFiles($p);
- return $this->makeArray($this->includeList, $p);
- }
- }
-
- /** Returns the filtered exclude patterns. */
- function getExcludePatterns(Project $p) {
- if ($this->isReference()) {
- $o = $this->getRef($p);
- return $o->getExcludePatterns($p);
- } else {
- $this->readFiles($p);
- return $this->makeArray($this->excludeList, $p);
- }
- }
-
- /** helper for FileSet. */
- function hasPatterns() {
- return (boolean) count($this->includesFileList) > 0 || count($this->excludesFileList) > 0
- || count($this->includeList) > 0 || count($this->excludeList) > 0;
- }
-
- /**
- * Performs the check for circular references and returns the
- * referenced PatternSet.
- */
- function getRef(Project $p) {
- if (!$this->checked) {
- $stk = array();
- array_push($stk, $this);
- $this->dieOnCircularReference($stk, $p);
- }
- $o = $this->ref->getReferencedObject($p);
- if (!($o instanceof PatternSet)) {
- $msg = $this->ref->getRefId()." doesn't denote a patternset";
- throw new BuildException($msg);
- } else {
- return $o;
- }
- }
-
- /** Convert a array of PatternSetNameEntry elements into an array of Strings. */
- private function makeArray(&$list, Project $p) {
-
- if (count($list) === 0) {
- return null;
- }
-
- $tmpNames = array();
- foreach($list as $ne) {
- $pattern = (string) $ne->evalName($p);
- if ($pattern !== null && strlen($pattern) > 0) {
- array_push($tmpNames, $pattern);
- }
- }
- return $tmpNames;
- }
-
- /** Read includesfile or excludesfile if not already done so. */
- private function readFiles(Project $p) {
- if (!empty($this->includesFileList)) {
- foreach($this->includesFileList as $ne) {
- $fileName = (string) $ne->evalName($p);
- if ($fileName !== null) {
- $inclFile = $p->resolveFile($fileName);
- if (!$inclFile->exists()) {
- throw new BuildException("Includesfile ".$inclFile->getAbsolutePath()." not found.");
- }
- $this->readPatterns($inclFile, $this->includeList, $p);
- }
- }
- $this->includesFileList = array();
- }
-
- if (!empty($this->excludesFileList)) {
- foreach($this->excludesFileList as $ne) {
- $fileName = (string) $ne->evalName($p);
- if ($fileName !== null) {
- $exclFile = $p->resolveFile($fileName);
- if (!$exclFile->exists()) {
- throw new BuildException("Excludesfile ".$exclFile->getAbsolutePath()." not found.");
- return;
- }
- $this->readPatterns($exclFile, $this->excludeList, $p);
- }
- }
- $this->excludesFileList = array();
- }
- }
-
-
- function toString() {
-
- // We can't compile includeList into array because, toString() does
- // not know about project:
- //
- // $includes = $this->makeArray($this->includeList, $this->project);
- // $excludes = $this->makeArray($this->excludeList, $this->project);
-
- if (empty($this->includeList)) {
- $includes = "empty";
- } else {
- $includes = "";
- foreach($this->includeList as $ne) {
- $includes .= $ne->toString() . ",";
- }
- $includes = rtrim($includes, ",");
- }
-
- if (empty($this->excludeList)) {
- $excludes = "empty";
- } else {
- $excludes = "";
- foreach($this->excludeList as $ne) {
- $excludes .= $ne->toString() . ",";
- }
- $excludes = rtrim($excludes, ",");
- }
-
- return "patternSet{ includes: $includes excludes: $excludes }";
- }
-}
-
-
-/**
- * "Internal" class for holding an include/exclude pattern.
- *
- * @package phing.types
- */
-class PatternSetNameEntry {
-
- /**
- * The pattern.
- * @var string
- */
- private $name;
-
- /**
- * The if-condition property for this pattern to be applied.
- * @var string
- */
- private $ifCond;
-
- /**
- * The unless-condition property for this pattern to be applied.
- * @var string
- */
- private $unlessCond;
-
- /**
- * An alias for the setName() method.
- * @see setName()
- * @param string $pattern
- */
- public function setPattern($pattern) {
- $this->setName($pattern);
- }
-
- /**
- * Set the pattern text.
- * @param string $name The pattern
- */
- public function setName($name) {
- $this->name = (string) $name;
- }
-
- /**
- * Sets an if-condition property for this pattern to match.
- * @param string $cond
- */
- public function setIf($cond) {
- $this->ifCond = (string) $cond;
- }
-
-
- /**
- * Sets an unless-condition property for this pattern to match.
- * @param string $cond
- */
- public function setUnless($cond) {
- $this->unlessCond = (string) $cond;
- }
-
- /**
- * Get the pattern text.
- * @return string The pattern.
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * Evaluates the pattern.
- * @return string The pattern or null if it is ruled out by a condition.
- */
- public function evalName(Project $project) {
- return $this->valid($project) ? $this->name : null;
- }
-
-
- /**
- * Checks whether pattern should be applied based on whether the if and unless
- * properties are set in project.
- * @param Project $project
- * @return boolean
- */
- public function valid(Project $project) {
- if ($this->ifCond !== null && $project->getProperty($this->ifCond) === null) {
- return false;
- } else if ($this->unlessCond !== null && $project->getProperty($this->unlessCond) !== null) {
- return false;
- }
- return true;
- }
-
- /**
- * Gets a string representation of this pattern.
- * @return string
- */
- public function toString() {
- $buf = $this->name;
- if (($this->ifCond !== null) || ($this->unlessCond !== null)) {
- $buf .= ":";
- $connector = "";
-
- if ($this->ifCond !== null) {
- $buf .= "if->{$this->ifCond}";
- $connector = ";";
- }
- if ($this->unlessCond !== null) {
- $buf .= "$connector unless->{$this->unlessCond}";
- }
- }
- return $buf;
- }
-}
diff --git a/buildscripts/phing/classes/phing/types/PearPackageFileSet.php b/buildscripts/phing/classes/phing/types/PearPackageFileSet.php
deleted file mode 100644
index 8cf99b28..00000000
--- a/buildscripts/phing/classes/phing/types/PearPackageFileSet.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-/**
- * Part of phing, the PHP build tool
- *
- * PHP version 5
- *
- * @category Types
- * @package phing.types
- * @author Christian Weiske <cweiske@cweiske.de>
- * @license LGPL v3 or later http://www.gnu.org/licenses/lgpl.html
- * @version SVN: $Id: 5ba010b83645d0ea709761a3d8260fc013239458 $
- * @link http://www.phing.info/
- */
-require_once 'phing/types/FileSet.php';
-require_once 'PEAR/Config.php';
-require_once 'phing/util/PearPackageScanner.php';
-
-/**
- * Fileset that contains files of an installed PEAR package.
- * It can be used to package up PEAR package dependencies in own
- * release files (zip, tgz, phar).
- *
- * @internal
- * A normal fileset is used that way in CopyTask, rSTTask:
- * <code>
- * $ds = $fs->getDirectoryScanner($project);
- * $fromDir = $fs->getDir($project);
- * $srcFiles = $ds->getIncludedFiles();
- * $srcDirs = $ds->getIncludedDirectories();
- * </code>
- * The scanner is used as follows:
- * <code>
- * $ds->getBaseDir()
- * $ds->scan()
- * </code>
- *
- * @category Types
- * @package phing.types
- * @author Christian Weiske <cweiske@cweiske.de>
- * @license LGPL v3 or later http://www.gnu.org/licenses/lgpl.html
- * @link http://www.phing.info/
- */
-class PearPackageFileSet extends FileSet
-{
- /**
- * Name of channel the package is from, e.g. "pear.php.net".
- *
- * @var string
- */
- protected $channel;
-
- /**
- * Package name to get files from, e.g. "Console_CommandLine"
- *
- * @var string
- */
- protected $package;
-
- /**
- * Use files of that role only.
- * Multiple roles are not supported, and you always have to specify one.
- *
- * @var string
- */
- protected $role = 'php';
-
- /**
- * Prefix to prepend to the file paths in the zip
- */
- protected $prefix;
-
- /**
- * Full path to a PEAR config file.
- * If none provided, default one is used.
- */
- protected $config;
-
- /**
- * @var PearPackageScanner instance
- */
- protected $pps;
-
-
- /**
- * Creates and returns the pear package scanner.
- * Scanner already has scan() called.
- *
- * @param Project $project Current phing project
- *
- * @return PearPackageScanner
- */
- public function getDirectoryScanner(Project $project)
- {
- if ($this->isReference()) {
- $obj = $this->getRef($project);
- return $obj->getDirectoryScanner($project);
- }
-
- $this->loadPearPackageScanner();
- return $this->pps;
- }
-
- /**
- * Returns the base directory all package files are relative to
- *
- * @return PhingFile Base directory
- */
- public function getDir()
- {
- if ($this->pps === null) {
- $this->loadPearPackageScanner();
- }
- return new PhingFile((string) $this->pps->getBaseDir());
- }
-
- /**
- * Loads the package scanner instance into $this->pps
- *
- * @return void
- */
- protected function loadPearPackageScanner()
- {
- $this->pps = new PearPackageScanner();
- $this->pps->setPackage($this->package);
- $this->pps->setChannel($this->channel);
- $this->pps->setRole($this->role);
- $this->pps->setConfig($this->config);
- $this->pps->scan();
- }
-
- /**
- * Sets the package name.
- * If no channel is given, "pear.php.net" is used.
- *
- * @param string $package Single package name, or "channel/name" combination
- *
- * @return void
- */
- public function setPackage($package)
- {
- $parts = explode('/', $package);
- if (count($parts) > 2) {
- throw new BuildException('Invalid package name: ' . $package);
- }
-
- if (count($parts) == 1) {
- $this->channel = 'pear.php.net';
- $this->package = $parts[0];
- } else {
- $this->channel = $parts[0];
- $this->package = $parts[1];
- }
- }
-
- /**
- * Sets the role of files that should be included.
- * Examples are php,doc,script
- *
- * @param string $role PEAR file role
- *
- * @return void
- */
- public function setRole($role)
- {
- $this->role = $role;
- }
-
- /**
- * Sets the full path to the PEAR configuration file
- *
- * @param string $config Configuration file
- *
- * @return void
- */
- public function setConfig($config)
- {
- $this->config = $config;
- }
-}
diff --git a/buildscripts/phing/classes/phing/types/PhingFilterReader.php b/buildscripts/phing/classes/phing/types/PhingFilterReader.php
deleted file mode 100755
index 2337977a..00000000
--- a/buildscripts/phing/classes/phing/types/PhingFilterReader.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-/*
- * $Id: fee06c9abce6700d773004bd83a5312d94c5aa29 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/types/DataType.php';
-include_once 'phing/types/Parameter.php';
-
-/**
- * A PhingFilterReader is a wrapper class that encloses the className
- * and configuration of a Configurable FilterReader.
- *
- * @author Yannick Lecaillez <yl@seasonfive.com>
- * @version $Id$
- * @see FilterReader
- * @package phing.types
- */
-class PhingFilterReader extends DataType {
-
- private $className;
- private $parameters = array();
- private $classPath;
-
- function setClassName($className) {
- $this->className = $className;
- }
-
- function getClassName() {
- return $this->className;
- }
-
- /**
- * Set the classpath to load the FilterReader through (attribute).
- * @param Path $classpath
- */
- function setClasspath(Path $classpath) {
- if ( $this->isReference() ) {
- throw $this->tooManyAttributes();
- }
- if ( $this->classPath === null ) {
- $this->classPath = $classpath;
- } else {
- $this->classPath->append($classpath);
- }
- }
-
- /*
- * Set the classpath to load the FilterReader through (nested element).
- */
- function createClasspath() {
- if ( $this->isReference() ) {
- throw $this->noChildrenAllowed();
- }
- if ( $this->classPath === null ) {
- $this->classPath = new Path($this->project);
- }
- return $this->classPath->createPath();
- }
-
- function getClasspath() {
- return $this->classPath;
- }
-
- function setClasspathRef(Reference $r) {
- if ( $this->isReference() ) {
- throw $this->tooManyAttributes();
- }
- $o = $this->createClasspath();
- $o->setRefid($r);
- }
-
- function addParam(Parameter $param) {
- $this->parameters[] = $param;
- }
-
- function createParam() {
- $num = array_push($this->parameters, new Parameter());
- return $this->parameters[$num-1];
- }
-
- function getParams() {
- // We return a COPY
- $ret = array();
- for($i=0,$size=count($this->parameters); $i < $size; $i++) {
- $ret[] = clone $this->parameters[$i];
- }
- return $ret;
- }
-
- /*
- * Makes this instance in effect a reference to another PhingFilterReader
- * instance.
- *
- * <p>You must not set another attribute or nest elements inside
- * this element if you make it a reference.</p>
- *
- * @param Reference $r the reference to which this instance is associated
- * @exception BuildException if this instance already has been configured.
- */
- function setRefid(Reference $r) {
- if ( (count($this->parameters) !== 0) || ($this->className !== null) ) {
- throw $this->tooManyAttributes();
- }
- $o = $r->getReferencedObject($this->getProject());
- if ( $o instanceof PhingFilterReader ) {
- $this->setClassName($o->getClassName());
- $this->setClasspath($o->getClassPath());
- foreach($o->getParams() as $p) {
- $this->addParam($p);
- }
- } else {
- $msg = $r->getRefId()." doesn\'t refer to a PhingFilterReader";
- throw new BuildException($msg);
- }
-
- parent::setRefid($r);
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/Reference.php b/buildscripts/phing/classes/phing/types/Reference.php
deleted file mode 100644
index 5f490b3f..00000000
--- a/buildscripts/phing/classes/phing/types/Reference.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/*
- * $Id: 48c142f41717a31654d5cbfdb37f339e84adf391 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/** Class to hold a reference to another object in the project.
- * @package phing.types
- */
-class Reference {
-
- protected $refid;
-
- function __construct($id = null) {
- if ($id !== null) {
- $this->setRefId($id);
- }
- }
-
- function setRefId($id) {
- $this->refid = (string) $id;
- }
-
- function getRefId() {
- return $this->refid;
- }
-
- /** returns reference to object in references container of project */
- function getReferencedObject($project) {
- if ($this->refid === null) {
- throw new BuildException("No reference specified");
- }
- $refs = $project->getReferences();
- $o = @$refs[$this->refid];
- if (!is_object($o)) {
- throw new BuildException("Reference {$this->refid} not found.");
- }
- return $o;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/types/RegularExpression.php b/buildscripts/phing/classes/phing/types/RegularExpression.php
deleted file mode 100755
index 84a25591..00000000
--- a/buildscripts/phing/classes/phing/types/RegularExpression.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/*
- * $Id: 257bd788b6185a3561f10a8de40502473076b6dd $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-include_once 'phing/types/DataType.php';
-include_once 'phing/Project.php';
-include_once 'phing/util/regexp/Regexp.php';
-
-/**
- * A regular expression datatype. Keeps an instance of the
- * compiled expression for speed purposes. This compiled
- * expression is lazily evaluated (it is compiled the first
- * time it is needed). The syntax is the dependent on which
- * regular expression type you are using.
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @version $Id$
- * @access public
- * @see phing.util.regex.RegexMatcher
- * @package phing.types
-*/
-class RegularExpression extends DataType {
-
- private $regexp = null;
- /**
- * @todo Probably both $ignoreCase and $multiline should be removed
- * from attribute list of RegularExpression class:
- * actual values are preserved on regexp *engine* level, not expression
- * object itself.
- */
- private $ignoreCase = false;
- private $multiline = false;
-
- function __construct() {
- $this->regexp = new Regexp();
- }
-
- function setPattern($pattern) {
- $this->regexp->setPattern($pattern);
- }
-
- function setReplace($replace) {
- $this->regexp->setReplace($replace);
- }
-
- function getPattern($p) {
- if ( $this->isReference() ) {
- $ref = $this->getRef($p);
- return $ref->getPattern($p);
- }
- return $this->regexp->getPattern();
- }
-
- function getReplace($p) {
- if ( $this->isReference() ) {
- $ref = $this->getRef($p);
- return $ref->getReplace($p);
- }
-
- return $this->regexp->getReplace();
- }
-
- function setModifiers($modifiers) {
- $this->regexp->setModifiers($modifiers);
- }
-
- function getModifiers() {
- return $this->regexp->getModifiers();
- }
-
- function setIgnoreCase($bit) {
- $this->regexp->setIgnoreCase($bit);
- }
-
- function getIgnoreCase() {
- return $this->regexp->getIgnoreCase();
- }
-
- function setMultiline($multiline) {
- $this->regexp->setMultiline($multiline);
- }
-
- function getMultiline() {
- return $this->regexp->getMultiline();
- }
-
- function getRegexp(Project $p) {
- if ( $this->isReference() ) {
- $ref = $this->getRef($p);
- return $ref->getRegexp($p);
- }
- return $this->regexp;
- }
-
- function getRef(Project $p) {
- if ( !$this->checked ) {
- $stk = array();
- array_push($stk, $this);
- $this->dieOnCircularReference($stk, $p);
- }
-
- $o = $this->ref->getReferencedObject($p);
- if ( !($o instanceof RegularExpression) ) {
- throw new BuildException($this->ref->getRefId()." doesn't denote a RegularExpression");
- } else {
- return $o;
- }
- }
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/TokenReader.php b/buildscripts/phing/classes/phing/types/TokenReader.php
deleted file mode 100755
index 98ed3083..00000000
--- a/buildscripts/phing/classes/phing/types/TokenReader.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-/*
- * $Id: c267e1935c57a372e5b8fc07eef73bd084195e82 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-// include_once 'phing/system/io/Reader.php'; // really this is unrelated to Reader
-include_once 'phing/system/io/IOException.php';
-include_once 'phing/filters/ReplaceTokens.php'; // For class Token
-
-/**
- * Abstract class for TokenReaders.
- *
- * @author Manuel Holtgewe
- * @version $Id$
- * @package phing.filters.util
- */
-abstract class TokenReader {
-
- /**
- * Reference to the Project the TokenReader is used in.
- * @var Project
- */
- protected $project;
-
- /**
- * Constructor
- * @param object Reference to the project the TokenReader is used in.
- */
- function __construct(Project $project) {
- $this->project = $project;
- }
-
- /**
- * Utility function for logging
- */
- function log($level, $msg) {
- $this->project->log($level, $msg);
- }
-
- /**
- * Reads the next token from the Reader
- *
- * @throws IOException - On error
- * @return string
- */
- abstract public function readToken();
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/TokenSource.php b/buildscripts/phing/classes/phing/types/TokenSource.php
deleted file mode 100644
index 0ca0367a..00000000
--- a/buildscripts/phing/classes/phing/types/TokenSource.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-/*
- * $Id: 1bc91e925ce194c2e7a615e8f8c950d2057a9cb5 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
-*/
-
-require_once 'phing/types/DataType.php';
-include_once 'phing/util/StringHelper.php';
-
-/**
- * A parameter is composed of a name, type and value.
- *
- * Example of usage:
- *
- * <replacetokens>
- * <tokensource classname="phing.filters.util.IniFileTokenReader">
- * <!-- all params for the TokenReader here -->
- * <param name="file" value="tokens.ini" />
- * </tokensource>
- * </replacetokens>
- *
- * or:
- *
- * <filterreader classname="phing.filters.ReplaceTokens">
- * <param type="tokensource>
- * <param name="classname" value="phing.filters.util.IniFileTokenReader" />
- * <param name="file" value="tokens.ini" />
- * </param>
- * </filterreader>
- *
- * @author <a href="mailto:yl@seasonfive.com">Yannick Lecaillez</a>
- * @package phing.types
- */
-class TokenSource extends DataType {
-
- /**
- * String to hold the path to the TokenReader
- * @var string
- */
- protected $classname = null;
-
- /**
- * Array holding parameters for the wrapped TokenReader.
- * @var array
- */
- protected $parameters = array();
-
- /**
- * Reference to the TokenReader used by this TokenSource
- * @var TokenReader
- */
- protected $reader;
-
- /**
- * Array with key/value pairs of tokens
- */
- protected $tokens = array();
-
- /**
- * This method is called to load the sources from the reader
- * into the buffer of the source.
- */
- function load() {
- // Create new Reader
- if ($this->classname === null) {
- throw new BuildException("No Classname given to TokenSource.");
- }
-
- $classname = Phing::import($this->classname);
- $this->reader = new $classname($this->project);
-
- // Configure Reader
- $this->configureTokenReader($this->reader);
-
- // Load Tokens
- try {
- while ($token = $this->reader->readToken()) {
- $this->tokens[] = $token;
- }
- } catch (BuildException $e) {
- $this->log("Error reading TokenSource: " . $e->getMessage(), Project::MSG_WARN);
- } catch (IOException $e) {
- $this->log("Error reading TokenSource: " . $e->getMessage(), Project::MSG_WARN);
- }
- }
-
- /**
- * This function uses the wrapper to read the tokens and then
- * returns them.
- *
- * @access public
- */
- function getTokens() {
- if ($this->tokens === null)
- $this->Load();
-
- return $this->tokens;
- }
-
- /**
- * Configures a TokenReader with the parameters passed to the
- * TokenSource.
- * @param TokenReader $reader
- */
- private function configureTokenReader(TokenReader $reader) {
- $count = count($this->parameters);
- for ($i = 0; $i < $count; $i++) {
- $method_name = "Set" . $this->parameters[$i]->getName();
- $value = $this->parameters[$i]->getValue();
- $reader->$method_name($value);
- }
- }
-
- /**
- * Set the classname (dot-path) to use for handling token replacement.
- * @param string $c
- */
- function setClassname($c) {
- $this->classname = $c;
- }
-
- /**
- * Returns the qualified classname (dot-path) to use for handling token replacement.
- * @return string
- */
- function getClassname() {
- return $this->classname;
- }
-
- /**
- * Create nested <param> tag.
- * Uses standard name/value Parameter class.
- * @return Parameter
- */
- function createParam() {
- $num = array_push($this->parameters, new Parameter());
- return $this->parameters[$num-1];
- }
-}
-
-
-
diff --git a/buildscripts/phing/classes/phing/types/defaults.properties b/buildscripts/phing/classes/phing/types/defaults.properties
deleted file mode 100644
index a2d86350..00000000
--- a/buildscripts/phing/classes/phing/types/defaults.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-# phing default types
-commandline=phing.types.Commandline
-fileset=phing.types.FileSet
-dirset=phing.types.DirSet
-filelist=phing.types.FileList
-patternset=phing.types.PatternSet
-mapper=phing.types.Mapper
-filterchain=phing.types.FilterChain
-filterreader=phing.types.PhingFilterReader
-regexp=phing.types.RegularExpression
-param=phing.types.Parameter
-path=phing.types.Path
-selector=phing.types.selectors.SelectSelector \ No newline at end of file
diff --git a/buildscripts/phing/classes/phing/types/selectors/AndSelector.php b/buildscripts/phing/classes/phing/types/selectors/AndSelector.php
deleted file mode 100644
index 1a27829d..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/AndSelector.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/*
- * $Id: f36556afb9487cce2e56d5c174e3ce4c43ef968f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseSelectorContainer.php';
-
-/**
- * This selector has a collection of other selectors, all of which have to
- * select a file in order for this selector to select it.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a> (Ant)
- * @package phing.types.selectors
- */
-class AndSelector extends BaseSelectorContainer {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{andselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Returns true (the file is selected) only if all other selectors
- * agree that the file should be selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename the name of the file to check
- * @param file a PhingFile object for the filename that the selector
- * can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
- $this->validate();
- $selectors = $this->selectorElements();
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir, $filename, $file);
- if (!$result) {
- return false;
- }
- }
- return true;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php b/buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php
deleted file mode 100644
index d8ae0444..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/BaseExtendSelector.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * $Id: 0c36c2b00f8ab8d20025b9ad38043c762b6fc7f9 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/ExtendFileSelector.php';
-require_once 'phing/types/selectors/BaseSelector.php';
-include_once 'phing/types/Parameter.php';
-
-/**
- * Convenience base class for all selectors accessed through ExtendSelector.
- * It provides support for gathering the parameters together as well as for
- * assigning an error message and throwing a build exception if an error is
- * detected.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-abstract class BaseExtendSelector extends BaseSelector implements ExtendFileSelector {
-
- /** The passed in parameter array. */
- protected $parameters = null;
-
- /**
- * Set all the Parameters for this custom selector, collected by
- * the ExtendSelector class.
- *
- * @param parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- $this->parameters = $parameters;
- }
-
- /**
- * Allows access to the parameters gathered and set within the
- * &lt;custom&gt; tag.
- *
- * @return the set of parameters defined for this selector
- */
- protected function getParameters() {
- return $this->parameters;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/BaseSelector.php b/buildscripts/phing/classes/phing/types/selectors/BaseSelector.php
deleted file mode 100644
index c463fa33..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/BaseSelector.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
- * $Id: e1f8e20eb87ea465d29ba3add6fada790642bcf8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/FileSelector.php';
-
-/**
- * A convenience base class that you can subclass Selectors from. It
- * provides some helpful common behaviour. Note that there is no need
- * for Selectors to inherit from this class, it is only necessary that
- * they implement FileSelector.
- *
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a>
- * @package phing.types.selectors
- */
-abstract class BaseSelector extends DataType implements FileSelector {
-
- private $errmsg = null;
-
- /**
- * Allows all selectors to indicate a setup error. Note that only
- * the first error message is recorded.
- *
- * @param msg The error message any BuildException should throw.
- */
- public function setError($msg) {
- if ($this->errmsg === null) {
- $this->errmsg = $msg;
- }
- }
-
- /**
- * Returns any error messages that have been set.
- *
- * @return the error condition
- */
- public function getError() {
- return $this->errmsg;
- }
-
-
- /**
- * <p>Subclasses can override this method to provide checking of their
- * state. So long as they call validate() from isSelected(), this will
- * be called automatically (unless they override validate()).</p>
- * <p>Implementations should check for incorrect settings and call
- * setError() as necessary.</p>
- */
- public function verifySettings() {
- }
-
- /**
- * Subclasses can use this to throw the requisite exception
- * in isSelected() in the case of an error condition.
- */
- public function validate() {
- if ($this->getError() === null) {
- $this->verifySettings();
- }
- if ($this->getError() !== null) {
- throw new BuildException($this->errmsg);
- }
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php b/buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php
deleted file mode 100644
index 3b2a10b1..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/BaseSelectorContainer.php
+++ /dev/null
@@ -1,270 +0,0 @@
-<?php
-
-/*
- * $Id: 9dd90d3e78d751562859bbe5179db148ee5b025c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/SelectorContainer.php';
-require_once 'phing/types/selectors/BaseSelector.php';
-
-/**
- * This is the base class for selectors that can contain other selectors.
- *
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a> (Ant)
- * @package phing.types.selectors
- */
-abstract class BaseSelectorContainer extends BaseSelector implements SelectorContainer {
-
- private $selectorsList = array();
-
- /**
- * Indicates whether there are any selectors here.
- */
- public function hasSelectors() {
- return !(empty($this->selectorsList));
- }
-
- /**
- * Gives the count of the number of selectors in this container
- */
- public function selectorCount() {
- return count($this->selectorsList);
- }
-
- /**
- * Returns a copy of the selectors as an array.
- */
- public function getSelectors(Project $p) {
- $result = array();
- for($i=0,$size=count($this->selectorsList); $i < $size; $i++) {
- $result[] = clone $this->selectorsList[$i];
- }
- return $result;
- }
-
- /**
- * Returns an array for accessing the set of selectors (not a copy).
- */
- public function selectorElements() {
- return $this->selectorsList;
- }
-
- /**
- * Convert the Selectors within this container to a string. This will
- * just be a helper class for the subclasses that put their own name
- * around the contents listed here.
- *
- * @return comma separated list of Selectors contained in this one
- */
- public function toString() {
- $buf = "";
- $arr = $this->selectorElements();
- for($i=0,$size=count($arr); $i < $size; $i++) {
- $buf .= $arr[$i]->toString() . (isset($arr[$i+1]) ? ', ' : '');
- }
- return $buf;
- }
-
- /**
- * Add a new selector into this container.
- *
- * @param selector the new selector to add
- * @return the selector that was added
- */
- public function appendSelector(FileSelector $selector) {
- $this->selectorsList[] = $selector;
- }
-
- /**
- * <p>This implementation validates the container by calling
- * verifySettings() and then validates each contained selector
- * provided that the selector implements the validate interface.
- * </p>
- * <p>Ordinarily, this will validate all the elements of a selector
- * container even if the isSelected() method of some elements is
- * never called. This has two effects:</p>
- * <ul>
- * <li>Validation will often occur twice.
- * <li>Since it is not required that selectors derive from
- * BaseSelector, there could be selectors in the container whose
- * error conditions are not detected if their isSelected() call
- * is never made.
- * </ul>
- */
- public function validate() {
- $this->verifySettings();
- $errmsg = $this->getError();
- if ($errmsg !== null) {
- throw new BuildException($errmsg);
- }
- foreach($this->selectorsList as $o) {
- if ($o instanceof BaseSelector) {
- $o->validate();
- }
- }
- }
-
- /* Methods below all add specific selectors */
-
- /**
- * add a "Select" selector entry on the selector list
- */
- public function createSelector() {
- $o = new SelectSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an "And" selector entry on the selector list
- */
- public function createAnd() {
- $o = new AndSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an "Or" selector entry on the selector list
- */
- public function createOr() {
- $o = new OrSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a "Not" selector entry on the selector list
- */
- public function createNot() {
- $o = new NotSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a "None" selector entry on the selector list
- */
- public function createNone() {
- $o = new NoneSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a majority selector entry on the selector list
- */
- public function createMajority() {
- $o = new MajoritySelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector date entry on the selector list
- */
- public function createDate() {
- $o = new DateSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector size entry on the selector list
- */
- public function createSize() {
- $o = new SizeSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a selector filename entry on the selector list
- */
- public function createFilename() {
- $o = new FilenameSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add an extended selector entry on the selector list
- */
- public function createCustom() {
- $o = new ExtendSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContains() {
- $o = new ContainsSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContainsRegexp() {
- $o = new ContainsRegexpSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a present selector entry on the selector list
- */
- public function createPresent() {
- $o = new PresentSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a depth selector entry on the selector list
- */
- public function createDepth() {
- $o = new DepthSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a depends selector entry on the selector list
- */
- public function createDepend() {
- $o = new DependSelector();
- $this->appendSelector($o);
- return $o;
- }
-
- /**
- * add a type selector entry on the selector list
- */
- public function createType() {
- $o = new TypeSelector();
- $this->appendSelector($o);
- return $o;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php b/buildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php
deleted file mode 100755
index 5b45bac8..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ContainsRegexpSelector.php
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-
-/*
- * $Id: 2a891d7cc3fb1b710b72d51e6a8cf2d0b553f91a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-include_once 'phing/types/RegularExpression.php';
-
-/**
- * Selector that filters files based on whether they contain a
- * particular string using regexp.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Id$
- * @package phing.types.selectors
- */
-class ContainsRegexpSelector extends BaseExtendSelector {
-
- /** @var string The expression set from XML. */
- private $userProvidedExpression;
-
- /** @var Regexp */
- private $myExpression;
-
- private $casesensitive = true;
-
- /** @var RegularExpression */
- private $myRegExp;
-
- const EXPRESSION_KEY = "expression";
-
- const CASE_KEY = "casesensitive";
-
- public function toString() {
- $buf = "{containsregexpselector expression: ";
- $buf .= $this->userProvidedExpression;
- $buf .= " casesensitive: ";
- if ($this->casesensitive) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The expression to match on within a file.
- *
- * @param string $exp the string that a file must contain to be selected.
- */
- public function setExpression($exp) {
- $this->userProvidedExpression = $exp;
- }
-
- /**
- * Whether to ignore case in the regex match.
- *
- * @param boolean $casesensitive whether to pay attention to case sensitivity
- */
- public function setCasesensitive($casesensitive) {
- $this->casesensitive = $casesensitive;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0,$size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::EXPRESSION_KEY:
- $this->setExpression($parameters[$i]->getValue());
- break;
- case self::CASE_KEY:
- $this->setCasesensitive($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- } // for each param
- } // if params
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the pattern attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->userProvidedExpression === null) {
- $this->setError("The expression attribute is required");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- if ($file->isDirectory()) {
- return true;
- }
-
- if ($this->myRegExp === null) {
- $this->myRegExp = new RegularExpression();
- $this->myRegExp->setPattern($this->userProvidedExpression);
- if (!$this->casesensitive) {
- $this->myRegExp->setIgnoreCase(true);
- }
- $this->myExpression = $this->myRegExp->getRegexp($this->getProject());
- }
-
- $in = null;
- try {
- $in = new BufferedReader(new FileReader($file));
- $teststr = $in->readLine();
- while ($teststr !== null) {
- if ($this->myExpression->matches($teststr)) {
- return true;
- }
- $teststr = $in->readLine();
- }
- return false;
- } catch (IOException $ioe) {
- if ($in) $in->close();
- throw new BuildException("Could not read file " . $filename);
- }
- $in->close();
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php b/buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php
deleted file mode 100644
index 5e270583..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ContainsSelector.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * $Id: ab2c641c048573b0a9976b7cb92138b8ceda511f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that filters files based on whether they contain a
- * particular string.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class ContainsSelector extends BaseExtendSelector {
-
- private $contains = null;
- private $casesensitive = true;
- const CONTAINS_KEY = "text";
- const CASE_KEY = "casesensitive";
-
- public function toString() {
- $buf = "{containsselector text: ";
- $buf .= $this->contains;
- $buf .= " casesensitive: ";
- if ($this->casesensitive) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The string to search for within a file.
- *
- * @param string $contains the string that a file must contain to be selected.
- */
- public function setText($contains) {
- $this->contains = $contains;
- }
-
- /**
- * Whether to ignore case in the string being searched.
- *
- * @param boolean $casesensitive whether to pay attention to case sensitivity
- */
- public function setCasesensitive($casesensitive) {
- $this->casesensitive = $casesensitive;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0,$size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::CONTAINS_KEY:
- $this->setText($parameters[$i]->getValue());
- break;
- case self::CASE_KEY:
- $this->setCasesensitive($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- } // for each param
- } // if params
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the pattern attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->contains === null) {
- $this->setError("The text attribute is required");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- if ($file->isDirectory()) {
- return true;
- }
-
- $userstr = $this->contains;
- if (!$this->casesensitive) {
- $userstr = strtolower($this->contains);
- }
-
- $in = null;
- try {
- $in = new BufferedReader(new FileReader($file));
- $teststr = $in->readLine();
- while ($teststr !== null) {
- if (!$this->casesensitive) {
- $teststr = strtolower($teststr);
- }
- if (strpos($teststr, $userstr) !== false) {
- return true;
- }
- $teststr = $in->readLine();
- }
- return false;
- } catch (IOException $ioe) {
- if ($in) $in->close();
- throw new BuildException("Could not read file " . $filename);
- }
- $in->close();
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/DateSelector.php b/buildscripts/phing/classes/phing/types/selectors/DateSelector.php
deleted file mode 100755
index 0f8c28a8..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/DateSelector.php
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-
-/*
- * $Id: f05cee91082616c66b2e109157b1d2f2298a66f8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that chooses files based on their last modified date. Ant uses
- * millisecond precision (thanks to Java); PHP is forced to use only seconds
- * precision.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Id: f05cee91082616c66b2e109157b1d2f2298a66f8 $
- * @package phing.types.selectors
- */
-class DateSelector extends BaseExtendSelector {
-
- private $seconds = -1; // millis in Ant, but PHP doesn't support that level of precision
- private $dateTime = null;
- private $includeDirs = false;
- private $granularity = 0;
- private $cmp = 2;
- const MILLIS_KEY = "millis";
- const DATETIME_KEY = "datetime";
- const CHECKDIRS_KEY = "checkdirs";
- const GRANULARITY_KEY = "granularity";
- const WHEN_KEY = "when";
- private static $timeComparisons = array("before", "after", "equal");
-
- public function __construct() {
- //if (Os.isFamily("dos")) {
- // granularity = 2000;
- //}
- }
-
- public function toString() {
- $buf = "{dateselector date: ";
- $buf .= $this->dateTime;
- $buf .= " compare: ";
- if ($this->cmp === 0) {
- $buf .= "before";
- } elseif ($this->cmp === 1) {
- $buf .= "after";
- } else {
- $buf .= "equal";
- }
- $buf .= " granularity: ";
- $buf .= $this->granularity;
- $buf .= "}";
- return $buf;
- }
-
- /**
- * For users that prefer to express time in seconds since 1970
- *
- * @param int $seconds the time to compare file's last modified date to,
- * expressed in milliseconds
- */
- public function setSeconds($seconds) {
- $this->seconds = (int) $seconds;
- }
-
- /**
- * Returns the seconds value the selector is set for.
- */
- public function getSeconds() {
- return $this->seconds;
- }
-
- /**
- * Sets the date. The user must supply it in MM/DD/YYYY HH:MM AM_PM
- * format
- *
- * @param string $dateTime a string in MM/DD/YYYY HH:MM AM_PM format
- */
- public function setDatetime($dateTime) {
- $dt = strtotime($dateTime);
- if ($dt == -1) {
- $this->setError("Date of " . $dateTime
- . " Cannot be parsed correctly. It should be in"
- . " a format parsable by PHP's strtotime() function.");
- } else {
- $this->dateTime = $dateTime;
- $this->setSeconds($dt);
- }
- }
-
- /**
- * Should we be checking dates on directories?
- *
- * @param boolean $includeDirs whether to check the timestamp on directories
- */
- public function setCheckdirs($includeDirs) {
- $this->includeDirs = (boolean) $includeDirs;
- }
-
- /**
- * Sets the number of milliseconds leeway we will give before we consider
- * a file not to have matched a date.
- * @param int $granularity
- */
- public function setGranularity($granularity) {
- $this->granularity = (int) $granularity;
- }
-
- /**
- * Sets the type of comparison to be done on the file's last modified
- * date.
- *
- * @param string $cmp The comparison to perform
- */
- public function setWhen($cmp) {
- $idx = array_search($cmp, self::$timeComparisons, true);
- if ($idx === null) {
- $this->setError("Invalid value for ".WHEN_KEY.": ".$cmp);
- } else {
- $this->cmp = $idx;
- }
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0,$size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::MILLIS_KEY:
- $this->setMillis($parameters[$i]->getValue());
- break;
- case self::DATETIME_KEY:
- $this->setDatetime($parameters[$i]->getValue());
- break;
- case self::CHECKDIRS_KEY:
- $this->setCheckdirs($parameters[$i]->getValue());
- break;
- case self::GRANULARITY_KEY:
- $this->setGranularity($parameters[$i]->getValue());
- break;
- case self::WHEN_KEY:
- $this->setWhen($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- } // switch
- }
- }
- }
-
- /**
- * This is a consistency check to ensure the selector's required
- * values have been set.
- */
- public function verifySettings() {
- if ($this->dateTime === null && $this->seconds < 0) {
- $this->setError("You must provide a datetime or the number of "
- . "seconds.");
- } elseif ($this->seconds < 0) {
- $this->setError("Date of " . $this->dateTime
- . " results in negative seconds"
- . " value relative to epoch (January 1, 1970, 00:00:00 GMT).");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param PhingFile $basedir the base directory the scan is being done from
- * @param string $filename is the name of the file to check
- * @param PhingFile $file is a PhingFile object the selector can use
- * @return boolean Whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
- $this->validate();
- if ($file->isDirectory() && ($this->includeDirs === false)) {
- return true;
- }
- if ($this->cmp === 0) {
- return (($file->lastModified() - $this->granularity) < $this->seconds);
- } elseif ($this->cmp === 1) {
- return (($file->lastModified() - $this->granularity) > $this->seconds);
- } else {
- return (abs($file->lastModified() - $this->seconds) <= $this->granularity);
- }
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/DependSelector.php b/buildscripts/phing/classes/phing/types/selectors/DependSelector.php
deleted file mode 100755
index 3b869199..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/DependSelector.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * $Id: eac9e808c89c2a8f414f86afc589eda4f218dd6e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseSelector.php';
-
-/**
- * Selector that filters files based on whether they are newer than
- * a matching file in another directory tree. It can contain a mapper
- * element, so isn't available as an ExtendSelector (since those
- * parameters can't hold other elements).
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Id$
- * @package phing.types.selectors
- */
-class DependSelector extends BaseSelector {
-
- private $targetdir = null;
- private $mapperElement = null;
- private $map = null;
- private $granularity = 0;
-
- public function __construct() {
- // not yet supported:
- //if (Os.isFamily("dos")) {
- // $this->granularity = 2000;
- //}
- }
-
- public function toString() {
- $buf = "{dependselector targetdir: ";
- if ($this->targetdir === null) {
- $buf .= "NOT YET SET";
- } else {
- $buf .= $this->targetdir->getName();
- }
- $buf .= " granularity: ";
- $buf .= $this->granularity;
- if ($this->map !== null) {
- $buf .= " mapper: ";
- $buf .= $this->map->toString();
- } elseif ($this->mapperElement !== null) {
- $buf .= " mapper: ";
- $buf .= $this->mapperElement->toString();
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The name of the file or directory which is checked for out-of-date
- * files.
- *
- * @param targetdir the directory to scan looking for files.
- */
- public function setTargetdir(PhingFile $targetdir) {
- $this->targetdir = $targetdir;
- }
-
- /**
- * Sets the number of milliseconds leeway we will give before we consider
- * a file out of date.
- */
- public function setGranularity($granularity) {
- $this->granularity = (int) granularity;
- }
-
- /**
- * Defines the FileNameMapper to use (nested mapper element).
- * @throws BuildException
- */
- public function createMapper() {
- if ($this->mapperElement !== null) {
- throw new BuildException("Cannot define more than one mapper");
- }
- $this->mapperElement = new Mapper($this->project);
- return $this->mapperElement;
- }
-
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the dest attribute has been set and we have a mapper.
- */
- public function verifySettings() {
- if ($this->targetdir === null) {
- $this->setError("The targetdir attribute is required.");
- }
- if ($this->mapperElement === null) {
- $this->map = new IdentityMapper();
- } else {
- $this->map = $this->mapperElement->getImplementation();
- }
- if ($this->map === null) {
- $this->setError("Could not set <mapper> element.");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- // Determine file whose out-of-dateness is to be checked
- $destfiles = $this->map->main($filename);
-
- // If filename does not match the To attribute of the mapper
- // then filter it out of the files we are considering
- if ($destfiles === null) {
- return false;
- }
- // Sanity check
- if (count($destfiles) !== 1 || $destfiles[0] === null) {
- throw new BuildException("Invalid destination file results for " . $this->targetdir . " with filename " . $filename);
- }
- $destname = $destfiles[0];
- $destfile = new PhingFile($this->targetdir, $destname);
-
- return SelectorUtils::isOutOfDate($file, $destfile, $this->granularity);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/DepthSelector.php b/buildscripts/phing/classes/phing/types/selectors/DepthSelector.php
deleted file mode 100755
index 0ad6c8eb..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/DepthSelector.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-/*
- * $Id: 9c244177a7f95995cd30c67c9fee47c1e977e4e2 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that filters files based on the how deep in the directory
- * tree they are.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Id$
- * @package phing.types.selectors
- */
-class DepthSelector extends BaseExtendSelector {
-
- public $min = -1;
- public $max = -1;
- const MIN_KEY = "min";
- const MAX_KEY = "max";
-
- public function toString() {
- $buf = "{depthselector min: ";
- $buf .= $this->min;
- $buf .= " max: ";
- $buf .= $this->max;
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The minimum depth below the basedir before a file is selected.
- *
- * @param min minimum directory levels below basedir to go
- */
- public function setMin($min) {
- $this->min = (int) $min;
- }
-
- /**
- * The minimum depth below the basedir before a file is selected.
- *
- * @param min maximum directory levels below basedir to go
- */
- public function setMax($max) {
- $this->max = (int) $max;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i = 0, $size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::MIN_KEY:
- $this->setMin($parameters[$i]->getValue());
- break;
- case self::MAX_KEY:
- $this->setMax($parameters[$i]->getValue());
- break;
-
- default:
- $this->setError("Invalud parameter " . $paramname);
- } // switch
- }
- }
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the max depth is not lower than the min depth.
- */
- public function verifySettings() {
- if ($this->min < 0 && $this->max < 0) {
- $this->setError("You must set at least one of the min or the " .
- "max levels.");
- }
- if ($this->max < $this->min && $this->max > -1) {
- $this->setError("The maximum depth is lower than the minimum.");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset. Most of the work
- * for this selector is offloaded into SelectorUtils, a static class
- * that provides the same services for both FilenameSelector and
- * DirectoryScanner.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $depth = -1;
- // If you felt daring, you could cache the basedir absolute path
- $abs_base = $basedir->getAbsolutePath();
- $abs_file = $file->getAbsolutePath();
-
- $tok_base = explode(DIRECTORY_SEPARATOR, $abs_base);
- $tok_file = explode(DIRECTORY_SEPARATOR, $abs_file);
-
- for($i=0,$size=count($tok_file); $i < $size; $i++) {
- $filetoken = $tok_file[$i];
- if (isset($tok_base[$i])) {
- $basetoken = $tok_base[$i];
- // Sanity check. Ditch it if you want faster performance
- if ($basetoken !== $filetoken) {
- throw new BuildException("File " . $filename .
- " does not appear within " . $abs_base . "directory");
- }
- } else { // no more basepath tokens
- $depth++;
- if ($this->max > -1 && $depth > $this->max) {
- return false;
- }
- }
- }
- if (isset($tok_base[$i + 1])) {
- throw new BuildException("File " . $filename .
- " is outside of " . $abs_base . "directory tree");
- }
- if ($this->min > -1 && $depth < $this->min) {
- return false;
- }
- return true;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php b/buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php
deleted file mode 100644
index 8394387c..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ExtendFileSelector.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/*
- * $Id: dc3c5cb2a3043b7a3f7600591ce825b6563ec0ce $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/Parameterizable.php';
-require_once 'phing/types/selectors/FileSelector.php';
-
-/**
- * This is the interface to be used by all custom selectors, those that are
- * called through the &lt;custom&gt; tag. It is the amalgamation of two
- * interfaces, the FileSelector and the Paramterizable interface. Note that
- * you will almost certainly want the default behaviour for handling
- * Parameters, so you probably want to use the BaseExtendSelector class
- * as the base class for your custom selector rather than implementing
- * this interface from scratch.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-interface ExtendFileSelector extends Parameterizable, FileSelector {
- // No further methods necessary. This is just an amalgamation of two other
- // interfaces.
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php b/buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php
deleted file mode 100644
index 1204ef12..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/ExtendSelector.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-/*
- * $Id: 1683a0a93b4bb5486f3cffbe40e8260f886c6258 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/util/StringHelper.php';
-
-/**
- * Selector that selects files by forwarding the request on to other classes.
- *
- * TODO - Consider adding Path (phing.types.Path) support to this class
- * and to the Mappers class. See Ant versions for implimentation details.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class ExtendSelector extends BaseSelector {
-
- private $classname;
- private $dynselector;
- private $parameters = array();
-
- /**
- * Sets the classname of the custom selector.
- *
- * @param classname is the class which implements this selector
- */
- public function setClassname($classname) {
- $this->classname = $classname;
- }
-
- /**
- * Instantiates the identified custom selector class.
- */
- public function selectorCreate() {
- if ($this->classname !== null && $this->classname !== "") {
- try {
- // assume it's fully qualified, import it
- $cls = Phing::import($this->classname);
-
- // make sure class exists
- if (class_exists($cls)) {
- $this->dynselector = new $cls();
- } else {
- $this->setError("Selector " . $this->classname . " not initialized, no such class");
- }
- } catch (Exception $e) {
- $this->setError("Selector " . $this->classname . " not initialized, could not create class: " . $e->getMessage());
- }
- } else {
- $this->setError("There is no classname specified");
- }
- }
-
- /**
- * Create new parameters to pass to custom selector.
- *
- * @param p The new Parameter object
- */
- public function addParam(Parameter $p) {
- $this->parameters[] = $p;
- }
-
- /**
- * These are errors specific to ExtendSelector only. If there are
- * errors in the custom selector, it should throw a BuildException
- * when isSelected() is called.
- */
- public function verifySettings() {
- // Creation is done here rather than in isSelected() because some
- // containers may do a validation pass before running isSelected(),
- // but we need to check for the existence of the created class.
- if ($this->dynselector === null) {
- $this->selectorCreate();
- }
-
- if (empty($this->classname)) {
- $this->setError("The classname attribute is required");
- } elseif ($this->dynselector === null) {
- $this->setError("Internal Error: The custom selector was not created");
- } elseif ( !($this->dynselector instanceof ExtendFileSelector) && (count($this->parameters) > 0)) {
- $this->setError("Cannot set parameters on custom selector that does not "
- . "implement ExtendFileSelector.");
- }
- }
-
-
- /**
- * Allows the custom selector to choose whether to select a file. This
- * is also where the Parameters are passed to the custom selector.
- *
- * @throws BuildException
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- if (count($this->parameters) > 0 && $this->dynselector instanceof ExtendFileSelector) {
- // We know that dynselector must be non-null if no error message
- $this->dynselector->setParameters($this->parameters);
- }
- return $this->dynselector->isSelected($basedir, $filename, $file);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/FileSelector.php b/buildscripts/phing/classes/phing/types/selectors/FileSelector.php
deleted file mode 100644
index 3c014d61..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/FileSelector.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-/*
- * $Id: 26b8712469a798faf79d1c877aad89d64880f061 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * This is the interface to be used by all selectors.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-interface FileSelector {
-
- /**
- * Method that each selector will implement to create their
- * selection behaviour. If there is a problem with the setup
- * of a selector, it can throw a BuildException to indicate
- * the problem.
- *
- * @param basedir A PhingFile object for the base directory
- * @param filename The name of the file to check
- * @param file A PhingFile object for this filename
- * @return whether the file should be selected or not
- * @throws BuildException if the selector was not configured correctly
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file);
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php b/buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php
deleted file mode 100644
index 04abbe2e..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/FilenameSelector.php
+++ /dev/null
@@ -1,157 +0,0 @@
-<?php
-
-/*
- * $Id: d0a6af11eeda50b911bad3717528a9ea72291185 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-include_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that filters files based on the filename.
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-class FilenameSelector extends BaseExtendSelector {
-
- private $pattern = null;
- private $casesensitive = true;
- private $negated = false;
- const NAME_KEY = "name";
- const CASE_KEY = "casesensitive";
- const NEGATE_KEY = "negate";
-
- public function toString() {
- $buf = "{filenameselector name: ";
- $buf .= $this->pattern;
- $buf .= " negate: ";
- if ($this->negated) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= " casesensitive: ";
- if ($this->casesensitive) {
- $buf .= "true";
- } else {
- $buf .= "false";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The name of the file, or the pattern for the name, that
- * should be used for selection.
- *
- * @param pattern the file pattern that any filename must match
- * against in order to be selected.
- */
- public function setName($pattern) {
- $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $pattern);
- $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern);
-
- if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) {
- $pattern .= "**";
- }
- $this->pattern = $pattern;
- }
-
- /**
- * Whether to ignore case when checking filenames.
- *
- * @param casesensitive whether to pay attention to case sensitivity
- */
- public function setCasesensitive($casesensitive) {
- $this->casesensitive = $casesensitive;
- }
-
- /**
- * You can optionally reverse the selection of this selector,
- * thereby emulating an &lt;exclude&gt; tag, by setting the attribute
- * negate to true. This is identical to surrounding the selector
- * with &lt;not&gt;&lt;/not&gt;.
- *
- * @param negated whether to negate this selection
- */
- public function setNegate($negated) {
- $this->negated = $negated;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i=0, $len=count($parameters); $i < $len; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::NAME_KEY:
- $this->setName($parameters[$i]->getValue());
- break;
- case self::CASE_KEY:
- $this->setCasesensitive($parameters[$i]->getValue());
- break;
- case self::NEGATE_KEY:
- $this->setNegate($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- } // for each param
- } // if params
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the name attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->pattern === null) {
- $this->setError("The name attribute is required");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset. Most of the work
- * for this selector is offloaded into SelectorUtils, a static class
- * that provides the same services for both FilenameSelector and
- * DirectoryScanner.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
- $this->validate();
- return (SelectorUtils::matchPath($this->pattern, $filename, $this->casesensitive)
- === !($this->negated));
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php b/buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php
deleted file mode 100644
index 5ad2629e..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/MajoritySelector.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * $Id: 9071d88eb880abe5a299f7c5db707d4439ccaa6c $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-/**
- * This selector is here just to shake up your thinking a bit. Don't get
- * too caught up in boolean, there are other ways you can evaluate a
- * collection of selectors. This one takes a vote of the selectors it
- * contains, and majority wins. You could also have an "all-but-one"
- * selector, a "weighted-average" selector, and so on. These are left
- * as exercises for the reader (as are the usecases where this would
- * be necessary).
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class MajoritySelector extends BaseSelectorContainer {
-
- private $allowtie = true;
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{majorityselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- public function setAllowtie($tiebreaker) {
- $this->allowtie = $tiebreaker;
- }
-
- /**
- * Returns true (the file is selected) if most of the other selectors
- * agree. In case of a tie, go by the allowtie setting. That defaults
- * to true, meaning in case of a tie, the file is selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object for the filename that the selector
- * can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $yesvotes = 0;
- $novotes = 0;
-
- $selectors = $this->selectorElements();
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir,$filename,$file);
- if ($result) {
- $yesvotes = $yesvotes + 1;
- } else {
- $novotes = $novotes + 1;
- }
- }
- if ($yesvotes > $novotes) {
- return true;
- }
- else if ($novotes > $yesvotes) {
- return false;
- }
- // At this point, we know we have a tie.
- return $this->allowtie;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/NoneSelector.php b/buildscripts/phing/classes/phing/types/selectors/NoneSelector.php
deleted file mode 100644
index f8941208..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/NoneSelector.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/*
- * $Id: a085187a008c4d8e8ba25fd6f1315b3dee92ec27 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseSelectorContainer.php';
-
-/**
- * This selector has a collection of other selectors. All of those selectors
- * must refuse to select a file before the file is considered selected by
- * this selector.
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class NoneSelector extends BaseSelectorContainer {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{noneselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Returns true (the file is selected) only if all other selectors
- * agree that the file should not be selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a java.io.File object for the filename that the selector
- * can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $selectors = $this->selectorElements();
-
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir, $filename, $file);
- if ($result) {
- return false;
- }
- }
- return true;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/NotSelector.php b/buildscripts/phing/classes/phing/types/selectors/NotSelector.php
deleted file mode 100644
index 08e70a5a..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/NotSelector.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/*
- * $Id: 8dcce9d2d304b7a8d4be0ef5b5111b582846840d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/NoneSelector.php';
-
-/**
- * This selector has one other selectors whose meaning it inverts. It
- * actually relies on NoneSelector for its implementation of the
- * isSelected() method, but it adds a check to ensure there is only one
- * other selector contained within.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class NotSelector extends NoneSelector {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{notselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Makes sure that there is only one entry, sets an error message if
- * not.
- */
- public function verifySettings() {
- if ($this->selectorCount() != 1) {
- $this->setError("One and only one selector is allowed within the " .
- "<not> tag");
- }
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/OrSelector.php b/buildscripts/phing/classes/phing/types/selectors/OrSelector.php
deleted file mode 100644
index 56e6df1e..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/OrSelector.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/*
- * $Id: bfed3cc534a3e1ab8789f0ed4a6e64419979e21a $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseSelectorContainer.php';
-
-/**
- * This selector has a collection of other selectors, any of which have to
- * select a file in order for this selector to select it.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class OrSelector extends BaseSelectorContainer {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{orselect: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Returns true (the file is selected) if any of the other selectors
- * agree that the file should be selected.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename the name of the file to check
- * @param file a PhingFile object for the filename that the selector
- * can use
- * @return boolean Whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- $selectors = $this->selectorElements();
-
- // First, check that all elements are correctly configured
-
- for($i=0,$size=count($selectors); $i < $size; $i++) {
- $result = $selectors[$i]->isSelected($basedir, $filename, $file);
- if ($result) {
- return true;
- }
- }
- return false;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/PresentSelector.php b/buildscripts/phing/classes/phing/types/selectors/PresentSelector.php
deleted file mode 100644
index 462d3927..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/PresentSelector.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-/*
- * $Id: db4c8bc8217483d4150b2d9e62d2ef5129038b4e $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Selector that filters files based on whether they appear in another
- * directory tree. It can contain a mapper element, so isn't available
- * as an ExtendSelector (since those parameters can't hold other
- * elements).
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class PresentSelector extends BaseSelector {
-
- private $targetdir = null;
- private $mapperElement = null;
- private $map = null;
- private $destmustexist = true;
- private static $filePresence = array("srconly", "both");
-
- public function toString() {
- $buf = "{presentselector targetdir: ";
- if ($this->targetdir === null) {
- $buf .= "NOT YET SET";
- } else {
- $buf .= $this->targetdir->getName();
- }
- $buf .= " present: ";
- if ($this->destmustexist) {
- $buf .= "both";
- } else {
- $buf .= "srconly";
- }
- if ($this->map !== null) {
- $buf .= $this->map->toString();
- } elseif ($this->mapperElement !== null) {
- $buf .= $this->mapperElement->toString();
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * The name of the file or directory which is checked for matching
- * files.
- *
- * @param targetdir the directory to scan looking for matching files.
- */
- public function setTargetdir(PhingFile $targetdir) {
- $this->targetdir = $targetdir;
- }
-
- /**
- * Defines the FileNameMapper to use (nested mapper element).
- * @throws BuildException
- */
- public function createMapper() {
- if ($this->mapperElement !== null) {
- throw new BuildException("Cannot define more than one mapper");
- }
- $this->mapperElement = new Mapper($this->getProject());
- return $this->mapperElement;
- }
-
-
- /**
- * This sets whether to select a file if its dest file is present.
- * It could be a <code>negate</code> boolean, but by doing things
- * this way, we get some documentation on how the system works.
- * A user looking at the documentation should clearly understand
- * that the ONLY files whose presence is being tested are those
- * that already exist in the source directory, hence the lack of
- * a <code>destonly</code> option.
- *
- * @param string $fp An attribute set to either <code>srconly</code> or
- * <code>both</code>.
- */
- public function setPresent($fp) {
- $idx = array_search($fp, self::$filePresence, true);
- if ( $idx === 0 ) {
- $this->destmustexist = false;
- }
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the targetdir attribute has been set and we have a mapper.
- */
- public function verifySettings() {
- if ($this->targetdir === null) {
- $this->setError("The targetdir attribute is required.");
- }
- if ($this->mapperElement === null) {
- $this->map = new IdentityMapper();
- } else {
- $this->map = $this->mapperElement->getImplementation();
- }
- if ($this->map === null) {
- $this->setError("Could not set <mapper> element.");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir the base directory the scan is being done from
- * @param filename is the name of the file to check
- * @param file is a PhingFile object the selector can use
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- // Determine file whose existence is to be checked
- $destfiles = $this->map->main($filename);
- // If filename does not match the To attribute of the mapper
- // then filter it out of the files we are considering
- if ($destfiles === null) {
- return false;
- }
- // Sanity check
- if (count($destfiles) !== 1 || $destfiles[0] === null) {
- throw new BuildException("Invalid destination file results for "
- . $this->targetdir . " with filename " . $filename);
- }
- $destname = $destfiles[0];
- $destfile = new PhingFile($this->targetdir, $destname);
- return $destfile->exists() === $this->destmustexist;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectSelector.php b/buildscripts/phing/classes/phing/types/selectors/SelectSelector.php
deleted file mode 100755
index 0db73e5d..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectSelector.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-/*
- * $Id: aa3a5cceea362713959333bda113e0ca5428a530 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/AndSelector.php';
-
-/**
- * This selector just holds one other selector and forwards all
- * requests to it. It exists so that there is a single selector
- * type that can exist outside of any targets, as an element of
- * project. It overrides all of the reference stuff so that it
- * works as expected. Note that this is the only selector you
- * can reference.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @version $Id$
- * @package phing.types.selectors
- */
-class SelectSelector extends AndSelector {
-
- public function toString() {
- $buf = "";
- if ($this->hasSelectors()) {
- $buf .= "{select: ";
- $buf .= parent::toString();
- $buf .= "}";
- }
- return $buf;
- }
-
- /**
- * Performs the check for circular references and returns the
- * referenced Selector.
- */
- private function getRef() {
- $o = $this->getCheckedRef(get_class($this), "SelectSelector");
- return $o;
- }
-
- /**
- * Indicates whether there are any selectors here.
- */
- public function hasSelectors() {
- if ($this->isReference()) {
- return $this->getRef()->hasSelectors();
- }
- return parent::hasSelectors();
- }
-
- /**
- * Gives the count of the number of selectors in this container
- */
- public function selectorCount() {
- if ($this->isReference()) {
- return $this->getRef()->selectorCount();
- }
- return parent::selectorCount();
- }
-
- /**
- * Returns the set of selectors as an array.
- */
- public function getSelectors(Project $p) {
- if ($this->isReference()) {
- return $this->getRef()->getSelectors($p);
- }
- return parent::getSelectors($p);
- }
-
- /**
- * Returns an enumerator for accessing the set of selectors.
- */
- public function selectorElements() {
- if ($this->isReference()) {
- return $this->getRef()->selectorElements();
- }
- return parent::selectorElements();
- }
-
- /**
- * Add a new selector into this container.
- *
- * @param selector the new selector to add
- * @return the selector that was added
- */
- public function appendSelector(FileSelector $selector) {
- if ($this->isReference()) {
- throw $this->noChildrenAllowed();
- }
- parent::appendSelector($selector);
- }
-
- /**
- * Makes sure that there is only one entry, sets an error message if
- * not.
- */
- public function verifySettings() {
- if ($this->selectorCount() != 1) {
- $this->setError("One and only one selector is allowed within the "
- . "<selector> tag");
- }
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php b/buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php
deleted file mode 100644
index 0ee42237..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectorContainer.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-/*
- * $Id: 6fedde4695e4838f435f336b7936190b16429706 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-/**
- * This is the interface for selectors that can contain other selectors.
- *
- * @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a>
- * @package phing.types.selectors
- */
-interface SelectorContainer {
-
- /**
- * Indicates whether there are any selectors here.
- *
- * @return whether any selectors are in this container
- */
- public function hasSelectors();
-
- /**
- * Gives the count of the number of selectors in this container
- *
- * @return the number of selectors in this container
- */
- public function selectorCount();
-
- /**
- * Returns a *copy* of the set of selectors as an array.
- *
- * @return an array of selectors in this container
- */
- public function getSelectors(Project $p);
-
- /**
- * Returns an array for accessing the set of selectors.
- *
- * @return an enumerator that goes through each of the selectors
- */
- public function selectorElements();
-
- /**
- * Add a new selector into this container.
- *
- * @param selector the new selector to add
- * @return the selector that was added
- */
- public function appendSelector(FileSelector $selector);
-
- /* Methods below all add specific selectors */
-
- /**
- * add a "Select" selector entry on the selector list
- */
- public function createSelector();
-
- /**
- * add an "And" selector entry on the selector list
- */
- public function createAnd();
-
- /**
- * add an "Or" selector entry on the selector list
- */
- public function createOr();
-
- /**
- * add a "Not" selector entry on the selector list
- */
- public function createNot();
-
- /**
- * add a "None" selector entry on the selector list
- */
- public function createNone();
-
- /**
- * add a majority selector entry on the selector list
- */
- public function createMajority();
-
- /**
- * add a selector date entry on the selector list
- */
- public function createDate();
-
- /**
- * add a selector size entry on the selector list
- */
- public function createSize();
-
- /**
- * add a selector filename entry on the selector list
- */
- public function createFilename();
-
- /**
- * add an extended selector entry on the selector list
- */
- public function createCustom();
-
- /**
- * add a contains selector entry on the selector list
- */
- public function createContains();
-
- /**
- * add a present selector entry on the selector list
- */
- public function createPresent();
-
- /**
- * add a depth selector entry on the selector list
- */
- public function createDepth();
-
- /**
- * add a depends selector entry on the selector list
- */
- public function createDepend();
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php b/buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php
deleted file mode 100644
index 91fc3f4c..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectorScanner.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * $Id: 3c28c4c2e4c41cf4507870e472ed9f278e2d9c9f $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-/**
- * An interface used to describe the actions required by any type of
- * directory scanner that supports Selecters.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-interface SelectorScanner {
-
- /**
- * Sets the selectors the scanner should use.
- *
- * @param selectors the list of selectors
- */
- public function setSelectors($selectors);
-
- /**
- * Directories which were selected out of a scan.
- *
- * @param selectors list selector objects
- */
- public function getDeselectedDirectories();
-
- /**
- * Files which were selected out of a scan.
- *
- * @param selectors list selector objects
- */
- public function getDeselectedFiles();
-
-}
diff --git a/buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php b/buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php
deleted file mode 100644
index 2d7e5068..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SelectorUtils.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-
-/*
- * $Id: 4a682bbe8751f6e09a725af7cfdf2bd17ab00645 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/util/StringHelper.php';
-
-/**
- * <p>This is a utility class used by selectors and DirectoryScanner. The
- * functionality more properly belongs just to selectors, but unfortunately
- * DirectoryScanner exposed these as protected methods. Thus we have to
- * support any subclasses of DirectoryScanner that may access these methods.
- * </p>
- * <p>This is a Singleton.</p>
- *
- * @author Hans Lellelid, hans@xmpl.org (Phing)
- * @author Arnout J. Kuiper, ajkuiper@wxs.nl (Ant)
- * @author Magesh Umasankar
- * @author Bruce Atherton, bruce@callenish.com (Ant)
- * @package phing.types.selectors
- */
-class SelectorUtils {
-
- private static $instance;
-
- /**
- * Retrieves the instance of the Singleton.
- */
- public static function getInstance() {
- if (!isset(self::$instance)) {
- self::$instance = new SelectorUtils();
- }
- return self::$instance;
- }
-
- /**
- * Tests whether or not a given path matches the start of a given
- * pattern up to the first "**".
- * <p>
- * This is not a general purpose test and should only be used if you
- * can live with false positives. For example, <code>pattern=**\a</code>
- * and <code>str=b</code> will yield <code>true</code>.
- *
- * @param pattern The pattern to match against. Must not be
- * <code>null</code>.
- * @param str The path to match, as a String. Must not be
- * <code>null</code>.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- * @return whether or not a given path matches the start of a given
- * pattern up to the first "**".
- */
- public static function matchPatternStart($pattern, $str, $isCaseSensitive = true) {
-
- // When str starts with a DIRECTORY_SEPARATOR, pattern has to start with a
- // DIRECTORY_SEPARATOR.
- // When pattern starts with a DIRECTORY_SEPARATOR, str has to start with a
- // DIRECTORY_SEPARATOR.
- if (StringHelper::startsWith(DIRECTORY_SEPARATOR, $str) !==
- StringHelper::startsWith(DIRECTORY_SEPARATOR, $pattern)) {
- return false;
- }
-
- $patDirs = explode(DIRECTORY_SEPARATOR, $pattern);
- $strDirs = explode(DIRECTORY_SEPARATOR, $str);
-
- $patIdxStart = 0;
- $patIdxEnd = count($patDirs)-1;
- $strIdxStart = 0;
- $strIdxEnd = count($strDirs)-1;
-
- // up to first '**'
- while ($patIdxStart <= $patIdxEnd && $strIdxStart <= $strIdxEnd) {
- $patDir = $patDirs[$patIdxStart];
- if ($patDir == "**") {
- break;
- }
- if (!self::match($patDir, $strDirs[$strIdxStart], $isCaseSensitive)) {
- return false;
- }
- $patIdxStart++;
- $strIdxStart++;
- }
-
- if ($strIdxStart > $strIdxEnd) {
- // String is exhausted
- return true;
- } elseif ($patIdxStart > $patIdxEnd) {
- // String not exhausted, but pattern is. Failure.
- return false;
- } else {
- // pattern now holds ** while string is not exhausted
- // this will generate false positives but we can live with that.
- return true;
- }
- }
-
- /**
- * Tests whether or not a given path matches a given pattern.
- *
- * @param pattern The pattern to match against. Must not be
- * <code>null</code>.
- * @param str The path to match, as a String. Must not be
- * <code>null</code>.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- * @return <code>true</code> if the pattern matches against the string,
- * or <code>false</code> otherwise.
- */
- public static function matchPath($pattern, $str, $isCaseSensitive = true) {
-
- $rePattern = preg_quote($pattern, '/');
- $dirSep = preg_quote(DIRECTORY_SEPARATOR, '/');
- $trailingDirSep = '(('.$dirSep.')?|('.$dirSep.').+)';
- $patternReplacements = array(
- $dirSep.'\*\*'.$dirSep => $dirSep.'.*'.$trailingDirSep,
- $dirSep.'\*\*' => $trailingDirSep,
- '\*\*'.$dirSep => '.*'.$trailingDirSep,
- '\*\*' => '.*',
- '\*' => '[^'.$dirSep.']*',
- '\?' => '[^'.$dirSep.']'
- );
- $rePattern = str_replace(array_keys($patternReplacements), array_values($patternReplacements), $rePattern);
- $rePattern = '/^'.$rePattern.'$/'.($isCaseSensitive ? '' : 'i');
- return (bool) preg_match($rePattern, $str);
- }
-
- /**
- * Tests whether or not a string matches against a pattern.
- * The pattern may contain two special characters:<br>
- * '*' means zero or more characters<br>
- * '?' means one and only one character
- *
- * @param pattern The pattern to match against.
- * Must not be <code>null</code>.
- * @param str The string which must be matched against the pattern.
- * Must not be <code>null</code>.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- *
- * @return <code>true</code> if the string matches against the pattern,
- * or <code>false</code> otherwise.
- */
- public static function match($pattern, $str, $isCaseSensitive = true) {
-
- $rePattern = preg_quote($pattern, '/');
- $rePattern = str_replace(array("\*", "\?"), array('.*', '.'), $rePattern);
- $rePattern = '/^'.$rePattern.'$/'.($isCaseSensitive ? '' : 'i');
- return (bool) preg_match($rePattern, $str);
- }
-
- /**
- * Returns dependency information on these two files. If src has been
- * modified later than target, it returns true. If target doesn't exist,
- * it likewise returns true. Otherwise, target is newer than src and
- * is not out of date, thus the method returns false. It also returns
- * false if the src file doesn't even exist, since how could the
- * target then be out of date.
- *
- * @param PhingFile $src the original file
- * @param PhingFile $target the file being compared against
- * @param int $granularity the amount in seconds of slack we will give in
- * determining out of dateness
- * @return whether the target is out of date
- */
- public static function isOutOfDate(PhingFile $src, PhingFile $target, $granularity) {
- if (!$src->exists()) {
- return false;
- }
- if (!$target->exists()) {
- return true;
- }
- if (($src->lastModified() - $granularity) > $target->lastModified()) {
- return true;
- }
- return false;
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/SizeSelector.php b/buildscripts/phing/classes/phing/types/selectors/SizeSelector.php
deleted file mode 100644
index 3aaf8a92..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/SizeSelector.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-
-/*
- * $Id: 4969c98a4e03305a23770e2afd5da641999f6174 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-/**
- * Selector that filters files based on their size.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Bruce Atherton <bruce@callenish.com> (Ant)
- * @package phing.types.selectors
- */
-class SizeSelector extends BaseExtendSelector {
-
- private $size = -1;
- private $multiplier = 1;
- private $sizelimit = -1;
- private $cmp = 2;
- const SIZE_KEY = "value";
- const UNITS_KEY = "units";
- const WHEN_KEY = "when";
-
- private static $sizeComparisons = array("less", "more", "equal");
- private static $byteUnits = array("K", "k", "kilo", "KILO",
- "Ki", "KI", "ki", "kibi", "KIBI",
- "M", "m", "mega", "MEGA",
- "Mi", "MI", "mi", "mebi", "MEBI",
- "G", "g", "giga", "GIGA",
- "Gi", "GI", "gi", "gibi", "GIBI",
- "T", "t", "tera", "TERA",
- /* You wish! */ "Ti", "TI", "ti", "tebi", "TEBI"
- );
-
- public function toString() {
- $buf = "{sizeselector value: ";
- $buf .= $this->sizelimit;
- $buf .= "compare: ";
- if ($this->cmp === 0) {
- $buf .= "less";
- } elseif ($this->cmp === 1) {
- $buf .= "more";
- } else {
- $buf .= "equal";
- }
- $buf .= "}";
- return $buf;
- }
-
- /**
- * A size selector needs to know what size to base its selecting on.
- * This will be further modified by the multiplier to get an
- * actual size limit.
- *
- * @param size the size to select against expressed in units
- */
- public function setValue($size) {
- $this->size = $size;
- if (($this->multiplier !== 0) && ($this->size > -1)) {
- $this->sizelimit = $size * $this->multiplier;
- }
- }
-
- /**
- * Sets the units to use for the comparison. This is a little
- * complicated because common usage has created standards that
- * play havoc with capitalization rules. Thus, some people will
- * use "K" for indicating 1000's, when the SI standard calls for
- * "k". Others have tried to introduce "K" as a multiple of 1024,
- * but that falls down when you reach "M", since "m" is already
- * defined as 0.001.
- * <p>
- * To get around this complexity, a number of standards bodies
- * have proposed the 2^10 standard, and at least one has adopted
- * it. But we are still left with a populace that isn't clear on
- * how capitalization should work.
- * <p>
- * We therefore ignore capitalization as much as possible.
- * Completely mixed case is not possible, but all upper and lower
- * forms are accepted for all long and short forms. Since we have
- * no need to work with the 0.001 case, this practice works here.
- * <p>
- * This function translates all the long and short forms that a
- * unit prefix can occur in and translates them into a single
- * multiplier.
- *
- * @param $units The units to compare the size to.
- * @return void
- */
- public function setUnits($units) {
- $i = array_search($units, self::$byteUnits, true);
- if ($i === false) $i = -1; // make it java-like
-
- $this->multiplier = 0;
- if (($i > -1) && ($i < 4)) {
- $this->multiplier = 1000;
- } elseif (($i > 3) && ($i < 9)) {
- $this->multiplier = 1024;
- } elseif (($i > 8) && ($i < 13)) {
- $this->multiplier = 1000000;
- } elseif (($i > 12) && ($i < 18)) {
- $this->multiplier = 1048576;
- } elseif (($i > 17) && ($i < 22)) {
- $this->multiplier = 1000000000;
- } elseif (($i > 21) && ($i < 27)) {
- $this->multiplier = 1073741824;
- } elseif (($i > 26) && ($i < 31)) {
- $this->multiplier = 1000000000000;
- } elseif (($i > 30) && ($i < 36)) {
- $this->multiplier = 1099511627776;
- }
- if (($this->multiplier > 0) && ($this->size > -1)) {
- $this->sizelimit = $this->size * $this->multiplier;
- }
- }
-
- /**
- * This specifies when the file should be selected, whether it be
- * when the file matches a particular size, when it is smaller,
- * or whether it is larger.
- *
- * @param cmp The comparison to perform, an EnumeratedAttribute
- */
- public function setWhen($cmp) {
- $c = array_search($cmp, self::$sizeComparisons, true);
- if ($c !== false) {
- $this->cmp = $c;
- }
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i = 0, $size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- switch(strtolower($paramname)) {
- case self::SIZE_KEY:
- try {
- $this->setValue($parameters[$i]->getValue());
- } catch (Exception $nfe) {
- $this->setError("Invalid size setting "
- . $parameters[$i]->getValue());
- }
- break;
- case self::UNITS_KEY:
- $this->setUnits($parameters[$i]->getValue());
- break;
- case self::WHEN_KEY:
- $this->setWhen($parameters[$i]->getValue());
- break;
- default:
- $this->setError("Invalid parameter " . $paramname);
- }
- }
- }
- }
-
- /**
- * <p>Checks to make sure all settings are kosher. In this case, it
- * means that the size attribute has been set (to a positive value),
- * that the multiplier has a valid setting, and that the size limit
- * is valid. Since the latter is a calculated value, this can only
- * fail due to a programming error.
- * </p>
- * <p>If a problem is detected, the setError() method is called.
- * </p>
- */
- public function verifySettings() {
- if ($this->size < 0) {
- $this->setError("The value attribute is required, and must be positive");
- } elseif ($this->multiplier < 1) {
- $this->setError("Invalid Units supplied, must be K,Ki,M,Mi,G,Gi,T,or Ti");
- } elseif ($this->sizelimit < 0) {
- $this->setError("Internal error: Code is not setting sizelimit correctly");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param basedir A PhingFile object for the base directory
- * @param filename The name of the file to check
- * @param file A PhingFile object for this filename
- * @return whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
-
- $this->validate();
-
- // Directory size never selected for
- if ($file->isDirectory()) {
- return true;
- }
- if ($this->cmp === 0) {
- return ($file->length() < $this->sizelimit);
- } elseif ($this->cmp === 1) {
- return ($file->length() > $this->sizelimit);
- } else {
- return ($file->length() === $this->sizelimit);
- }
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/types/selectors/TypeSelector.php b/buildscripts/phing/classes/phing/types/selectors/TypeSelector.php
deleted file mode 100755
index 6ff024e8..00000000
--- a/buildscripts/phing/classes/phing/types/selectors/TypeSelector.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-/*
- * $Id: 95c34bb6a364dc0131e9e9c5c124d5074b4a2a21 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/BaseExtendSelector.php';
-
-/**
- * Selector that selects a certain kind of file: directory or regular file.
- *
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
- * @author Jeff Turner <jefft@apache.org> (Ant)
- * @version $Id: 95c34bb6a364dc0131e9e9c5c124d5074b4a2a21 $
- * @package phing.types.selectors
- */
-class TypeSelector extends BaseExtendSelector {
-
- private $type;
-
- /** Key to used for parameterized custom selector */
- const TYPE_KEY = "type";
-
- /** Valid types */
- private static $types = array('file', 'dir', 'link');
-
- /**
- * @return string A string describing this object
- */
- public function toString() {
- $buf = "{typeselector type: " . $this->type . "}";
- return $buf;
- }
-
- /**
- * Set the type of file to require.
- * @param string $type The type of file - 'file' or 'dir'
- */
- public function setType($type) {
- $this->type = $type;
- }
-
- /**
- * When using this as a custom selector, this method will be called.
- * It translates each parameter into the appropriate setXXX() call.
- *
- * @param array $parameters the complete set of parameters for this selector
- */
- public function setParameters($parameters) {
- parent::setParameters($parameters);
- if ($parameters !== null) {
- for ($i = 0, $size=count($parameters); $i < $size; $i++) {
- $paramname = $parameters[$i]->getName();
- if (self::TYPE_KEY == strtolower($paramname)) {
- $this->setType($parameters[$i]->getValue());
- } else {
- $this->setError("Invalid parameter " . $paramname);
- }
- }
- }
- }
-
- /**
- * Checks to make sure all settings are kosher. In this case, it
- * means that the pattern attribute has been set.
- *
- */
- public function verifySettings() {
- if ($this->type === null) {
- $this->setError("The type attribute is required");
- } elseif (!in_array($this->type, self::$types, true)) {
- $this->setError("Invalid type specified; must be one of (" . implode(self::$types) . ")");
- }
- }
-
- /**
- * The heart of the matter. This is where the selector gets to decide
- * on the inclusion of a file in a particular fileset.
- *
- * @param PhingFile $basedir the base directory the scan is being done from
- * @param string $filename is the name of the file to check
- * @param PhingFile $file is a PhingFile object the selector can use
- * @return boolean Whether the file should be selected or not
- */
- public function isSelected(PhingFile $basedir, $filename, PhingFile $file) {
- // throw BuildException on error
- $this->validate();
-
- if ($file->isLink()) {
- if ($this->type == 'link')
- return true;
-
- $this->log($file->getAbsolutePath() . " is a link, proceeding with " . $file->getCanonicalPath() . " instead.", Project::MSG_DEBUG);
- $file = new PhingFile($file->getCanonicalPath());
- }
-
- if ($file->isDirectory()) {
- return $this->type === 'dir';
- } else {
- return $this->type === 'file';
- }
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/util/DataStore.php b/buildscripts/phing/classes/phing/util/DataStore.php
deleted file mode 100755
index af696697..00000000
--- a/buildscripts/phing/classes/phing/util/DataStore.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-
-/*
- * $Id: 77f24d8b9d8082b4c23cb4cd5d23a06a3be88e2d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/system/io/PhingFile.php';
-require_once 'phing/system/io/FileWriter.php';
-
-/**
- * An abstract representation of file and directory pathnames.
- *
- * @package phing.util
- * @author Michiel Rook <mrook@php.net>
- * @version $Id$
- */
-class DataStore
-{
- private $data = array();
- private $file = null;
-
- /**
- * Constructs a new data store
- *
- * @param PhingFile $file object pointing to the data store on disk
- */
- function __construct(PhingFile $file)
- {
- $this->file = $file;
-
- if ($this->file->exists())
- {
- $this->read();
- }
- }
-
- /**
- * Destructor
- */
- function __destruct()
- {
- $this->commit();
- }
-
- /**
- * Retrieves a value from the data store
- *
- * @param string $key the key
- *
- * @return mixed the value
- */
- public function get($key)
- {
- if (!isset($this->data[$key]))
- {
- return null;
- }
- else
- {
- return $this->data[$key];
- }
- }
-
- /**
- * Adds a value to the data store
- *
- * @param string $key the key
- * @param mixed $value the value
- * @param boolean $autocommit whether to auto-commit (write)
- * the data store to disk
- *
- * @return none
- */
- public function put($key, $value, $autocommit = false)
- {
- $this->data[$key] = $value;
-
- if ($autocommit)
- {
- $this->commit();
- }
- }
-
- /**
- * Commits data store to disk
- *
- * @return none
- */
- public function commit()
- {
- $this->write();
- }
-
- /**
- * Internal function to read data store from file
- *
- * @return none
- */
- private function read()
- {
- if (!$this->file->canRead())
- {
- throw new BuildException("Can't read data store from '" .
- $file->getPath() . "'");
- }
- else
- {
- $serializedData = $this->file->contents();
-
- $this->data = unserialize($serializedData);
- }
- }
-
- /**
- * Internal function to write data store to file
- *
- * @return none
- */
- private function write()
- {
- if (!$this->file->canWrite())
- {
- throw new BuildException("Can't write data store to '" .
- $file->getPath() . "'");
- }
- else
- {
- $serializedData = serialize($this->data);
-
- $writer = new FileWriter($this->file);
- $writer->write($serializedData);
- $writer->close();
- }
- }
-};
diff --git a/buildscripts/phing/classes/phing/util/DirectoryScanner.php b/buildscripts/phing/classes/phing/util/DirectoryScanner.php
deleted file mode 100755
index 02d5be88..00000000
--- a/buildscripts/phing/classes/phing/util/DirectoryScanner.php
+++ /dev/null
@@ -1,755 +0,0 @@
-<?php
-/*
- * $Id: 7aef4b4e372e89055248ab063660dbee92a98cc3 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/types/selectors/SelectorScanner.php';
-include_once 'phing/util/StringHelper.php';
-include_once 'phing/types/selectors/SelectorUtils.php';
-
-/**
- * Class for scanning a directory for files/directories that match a certain
- * criteria.
- *
- * These criteria consist of a set of include and exclude patterns. With these
- * patterns, you can select which files you want to have included, and which
- * files you want to have excluded.
- *
- * The idea is simple. A given directory is recursively scanned for all files
- * and directories. Each file/directory is matched against a set of include
- * and exclude patterns. Only files/directories that match at least one
- * pattern of the include pattern list, and don't match a pattern of the
- * exclude pattern list will be placed in the list of files/directories found.
- *
- * When no list of include patterns is supplied, "**" will be used, which
- * means that everything will be matched. When no list of exclude patterns is
- * supplied, an empty list is used, such that nothing will be excluded.
- *
- * The pattern matching is done as follows:
- * The name to be matched is split up in path segments. A path segment is the
- * name of a directory or file, which is bounded by DIRECTORY_SEPARATOR
- * ('/' under UNIX, '\' under Windows).
- * E.g. "abc/def/ghi/xyz.php" is split up in the segments "abc", "def", "ghi"
- * and "xyz.php".
- * The same is done for the pattern against which should be matched.
- *
- * Then the segments of the name and the pattern will be matched against each
- * other. When '**' is used for a path segment in the pattern, then it matches
- * zero or more path segments of the name.
- *
- * There are special case regarding the use of DIRECTORY_SEPARATOR at
- * the beginning of the pattern and the string to match:
- * When a pattern starts with a DIRECTORY_SEPARATOR, the string
- * to match must also start with a DIRECTORY_SEPARATOR.
- * When a pattern does not start with a DIRECTORY_SEPARATOR, the
- * string to match may not start with a DIRECTORY_SEPARATOR.
- * When one of these rules is not obeyed, the string will not
- * match.
- *
- * When a name path segment is matched against a pattern path segment, the
- * following special characters can be used:
- * '*' matches zero or more characters,
- * '?' matches one character.
- *
- * Examples:
- *
- * "**\*.php" matches all .php files/dirs in a directory tree.
- *
- * "test\a??.php" matches all files/dirs which start with an 'a', then two
- * more characters and then ".php", in a directory called test.
- *
- * "**" matches everything in a directory tree.
- *
- * "**\test\**\XYZ*" matches all files/dirs that start with "XYZ" and where
- * there is a parent directory called test (e.g. "abc\test\def\ghi\XYZ123").
- *
- * Case sensitivity may be turned off if necessary. By default, it is
- * turned on.
- *
- * Example of usage:
- * $ds = new DirectroyScanner();
- * $includes = array("**\*.php");
- * $excludes = array("modules\*\**");
- * $ds->SetIncludes($includes);
- * $ds->SetExcludes($excludes);
- * $ds->SetBasedir("test");
- * $ds->SetCaseSensitive(true);
- * $ds->Scan();
- *
- * print("FILES:");
- * $files = ds->GetIncludedFiles();
- * for ($i = 0; $i < count($files);$i++) {
- * println("$files[$i]\n");
- * }
- *
- * This will scan a directory called test for .php files, but excludes all
- * .php files in all directories under a directory called "modules"
- *
- * This class is complete preg/ereg free port of the Java class
- * org.apache.tools.ant.DirectoryScanner. Even functions that use preg/ereg
- * internally (like split()) are not used. Only the _fast_ string functions
- * and comparison operators (=== !=== etc) are used for matching and tokenizing.
- *
- * @author Arnout J. Kuiper, ajkuiper@wxs.nl
- * @author Magesh Umasankar, umagesh@rediffmail.com
- * @author Andreas Aderhold, andi@binarycloud.com
- *
- * @version $Id: 7aef4b4e372e89055248ab063660dbee92a98cc3 $
- * @package phing.util
- */
-class DirectoryScanner implements SelectorScanner {
-
- /** default set of excludes */
- protected $DEFAULTEXCLUDES = array(
- "**/*~",
- "**/#*#",
- "**/.#*",
- "**/%*%",
- "**/CVS",
- "**/CVS/**",
- "**/.cvsignore",
- "**/SCCS",
- "**/SCCS/**",
- "**/vssver.scc",
- "**/.svn",
- "**/.svn/**",
- "**/._*",
- "**/.DS_Store",
- "**/.darcs",
- "**/.darcs/**",
- "**/.git",
- "**/.git/**",
- "**/.gitattributes",
- "**/.gitignore",
- "**/.gitmodules",
- );
-
- /** The base directory which should be scanned. */
- protected $basedir;
-
- /** The patterns for the files that should be included. */
- protected $includes = null;
-
- /** The patterns for the files that should be excluded. */
- protected $excludes = null;
-
- /** Whether to expand/dereference symbolic links, default is false */
- protected $expandSymbolicLinks = false;
-
- /**
- * The files that where found and matched at least one includes, and matched
- * no excludes.
- */
- protected $filesIncluded;
-
- /** The files that where found and did not match any includes. Trie */
- protected $filesNotIncluded;
-
- /**
- * The files that where found and matched at least one includes, and also
- * matched at least one excludes. Trie object.
- */
- protected $filesExcluded;
-
- /**
- * The directories that where found and matched at least one includes, and
- * matched no excludes.
- */
- protected $dirsIncluded;
-
- /** The directories that where found and did not match any includes. */
- protected $dirsNotIncluded;
-
- /**
- * The files that where found and matched at least one includes, and also
- * matched at least one excludes.
- */
- protected $dirsExcluded;
-
- /** Have the vars holding our results been built by a slow scan? */
- protected $haveSlowResults = false;
-
- /** Should the file system be treated as a case sensitive one? */
- protected $isCaseSensitive = true;
-
- /** Selectors */
- protected $selectors = null;
-
- protected $filesDeselected;
- protected $dirsDeselected;
-
- /** if there are no deselected files */
- protected $everythingIncluded = true;
-
- /**
- * Does the path match the start of this pattern up to the first "**".
- * This is a static mehtod and should always be called static
- *
- * This is not a general purpose test and should only be used if you
- * can live with false positives.
- *
- * pattern=**\a and str=b will yield true.
- *
- * @param pattern the (non-null) pattern to match against
- * @param str the (non-null) string (path) to match
- * @param isCaseSensitive must matches be case sensitive?
- * @return boolean true if matches, otherwise false
- */
- function matchPatternStart($pattern, $str, $isCaseSensitive = true) {
- return SelectorUtils::matchPatternStart($pattern, $str, $isCaseSensitive);
- }
-
- /**
- * Matches a path against a pattern. Static
- *
- * @param pattern the (non-null) pattern to match against
- * @param str the (non-null) string (path) to match
- * @param isCaseSensitive must a case sensitive match be done?
- *
- * @return true when the pattern matches against the string.
- * false otherwise.
- */
- function matchPath($pattern, $str, $isCaseSensitive = true) {
- return SelectorUtils::matchPath($pattern, $str, $isCaseSensitive);
- }
-
- /**
- * Matches a string against a pattern. The pattern contains two special
- * characters:
- * '*' which means zero or more characters,
- * '?' which means one and only one character.
- *
- * @param pattern the (non-null) pattern to match against
- * @param str the (non-null) string that must be matched against the
- * pattern
- *
- * @return boolean true when the string matches against the pattern,
- * false otherwise.
- * @access public
- */
- function match($pattern, $str, $isCaseSensitive = true) {
- return SelectorUtils::match($pattern, $str, $isCaseSensitive);
- }
-
- /**
- * Sets the basedir for scanning. This is the directory that is scanned
- * recursively. All '/' and '\' characters are replaced by
- * DIRECTORY_SEPARATOR
- *
- * @param basedir the (non-null) basedir for scanning
- */
- function setBasedir($_basedir) {
- $_basedir = str_replace('\\', DIRECTORY_SEPARATOR, $_basedir);
- $_basedir = str_replace('/', DIRECTORY_SEPARATOR, $_basedir);
- $this->basedir = $_basedir;
- }
-
- /**
- * Gets the basedir that is used for scanning. This is the directory that
- * is scanned recursively.
- *
- * @return the basedir that is used for scanning
- */
- function getBasedir() {
- return $this->basedir;
- }
-
- /**
- * Sets the case sensitivity of the file system
- *
- * @param specifies if the filesystem is case sensitive
- */
- function setCaseSensitive($_isCaseSensitive) {
- $this->isCaseSensitive = ($_isCaseSensitive) ? true : false;
- }
-
- /**
- * Sets the set of include patterns to use. All '/' and '\' characters are
- * replaced by DIRECTORY_SEPARATOR. So the separator used need
- * not match DIRECTORY_SEPARATOR.
- *
- * When a pattern ends with a '/' or '\', "**" is appended.
- *
- * @param includes list of include patterns
- */
- function setIncludes($_includes = array()) {
- if (empty($_includes) || is_null($_includes)) {
- $this->includes = null;
- } else {
- for ($i = 0; $i < count($_includes); $i++) {
- $pattern = null;
- $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $_includes[$i]);
- $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern);
- if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) {
- $pattern .= "**";
- }
- $this->includes[] = $pattern;
- }
- }
- }
-
- /**
- * Sets the set of exclude patterns to use. All '/' and '\' characters are
- * replaced by <code>File.separatorChar</code>. So the separator used need
- * not match <code>File.separatorChar</code>.
- *
- * When a pattern ends with a '/' or '\', "**" is appended.
- *
- * @param excludes list of exclude patterns
- */
-
- function setExcludes($_excludes = array()) {
- if (empty($_excludes) || is_null($_excludes)) {
- $this->excludes = null;
- } else {
- for ($i = 0; $i < count($_excludes); $i++) {
- $pattern = null;
- $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $_excludes[$i]);
- $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern);
- if (StringHelper::endsWith(DIRECTORY_SEPARATOR, $pattern)) {
- $pattern .= "**";
- }
- $this->excludes[] = $pattern;
- }
- }
- }
-
- /**
- * Sets whether to expand/dereference symbolic links
- *
- * @param expandSymbolicLinks boolean value
- */
- function setExpandSymbolicLinks($expandSymbolicLinks)
- {
- $this->expandSymbolicLinks = $expandSymbolicLinks;
- }
-
- /**
- * Scans the base directory for files that match at least one include
- * pattern, and don't match any exclude patterns.
- *
- */
- function scan() {
-
- if ((empty($this->basedir)) || (!@is_dir($this->basedir))) {
- return false;
- }
-
- if ($this->includes === null) {
- // No includes supplied, so set it to 'matches all'
- $this->includes = array("**");
- }
- if (is_null($this->excludes)) {
- $this->excludes = array();
- }
-
- $this->filesIncluded = array();
- $this->filesNotIncluded = array();
- $this->filesExcluded = array();
- $this->dirsIncluded = array();
- $this->dirsNotIncluded = array();
- $this->dirsExcluded = array();
- $this->dirsDeselected = array();
- $this->filesDeselected = array();
-
- if ($this->isIncluded("")) {
- if (!$this->isExcluded("")) {
- if ($this->isSelected("", $this->basedir)) {
- $this->dirsIncluded[] = "";
- } else {
- $this->dirsDeselected[] = "";
- }
- } else {
- $this->dirsExcluded[] = "";
- }
- } else {
- $this->dirsNotIncluded[] = "";
- }
-
- $this->scandir($this->basedir, "", true);
- return true;
- }
-
- /**
- * Toplevel invocation for the scan.
- *
- * Returns immediately if a slow scan has already been requested.
- */
- protected function slowScan() {
-
- if ($this->haveSlowResults) {
- return;
- }
-
- // copy trie object add CopyInto() method
- $excl = $this->dirsExcluded;
- $notIncl = $this->dirsNotIncluded;
-
- for ($i=0, $_i=count($excl); $i < $_i; $i++) {
- if (!$this->couldHoldIncluded($excl[$i])) {
- $this->scandir($this->basedir.$excl[$i], $excl[$i].DIRECTORY_SEPARATOR, false);
- }
- }
-
- for ($i=0, $_i=count($notIncl); $i < $_i; $i++) {
- if (!$this->couldHoldIncluded($notIncl[$i])) {
- $this->scandir($this->basedir.$notIncl[$i], $notIncl[$i].DIRECTORY_SEPARATOR, false);
- }
- }
-
- $this->haveSlowResults = true;
- }
-
- /**
- * Lists contens of a given directory and returns array with entries
- *
- * @param src String. Source path and name file to copy.
- *
- * @access public
- * @return array directory entries
- * @author Albert Lash, alash@plateauinnovation.com
- */
-
- function listDir($_dir) {
- $d = dir($_dir);
- $list = array();
- while(($entry = $d->read()) !== false) {
- if ($entry != "." && $entry != "..") {
- $list[] = $entry;
- }
- }
- $d->close();
- return $list;
- }
-
- /**
- * Scans the passed dir for files and directories. Found files and
- * directories are placed in their respective collections, based on the
- * matching of includes and excludes. When a directory is found, it is
- * scanned recursively.
- *
- * @param dir the directory to scan
- * @param vpath the path relative to the basedir (needed to prevent
- * problems with an absolute path when using dir)
- *
- * @access private
- * @see #filesIncluded
- * @see #filesNotIncluded
- * @see #filesExcluded
- * @see #dirsIncluded
- * @see #dirsNotIncluded
- * @see #dirsExcluded
- */
- private function scandir($_rootdir, $_vpath, $_fast) {
-
- if (!is_readable($_rootdir)) {
- return;
- }
-
- $newfiles = self::listDir($_rootdir);
-
- for ($i=0,$_i=count($newfiles); $i < $_i; $i++) {
-
- $file = $_rootdir . DIRECTORY_SEPARATOR . $newfiles[$i];
- $name = $_vpath . $newfiles[$i];
-
- if (@is_link($file) && !$this->expandSymbolicLinks)
- {
- if ($this->isIncluded($name)) {
- if (!$this->isExcluded($name)) {
- if ($this->isSelected($name, $file)) {
- $this->filesIncluded[] = $name;
- } else {
- $this->everythingIncluded = false;
- $this->filesDeselected[] = $name;
- }
- } else {
- $this->everythingIncluded = false;
- $this->filesExcluded[] = $name;
- }
- } else {
- $this->everythingIncluded = false;
- $this->filesNotIncluded[] = $name;
- }
- }
- else
- if (@is_dir($file)) {
- if ($this->isIncluded($name)) {
- if (!$this->isExcluded($name)) {
- if ($this->isSelected($name, $file)) {
- $this->dirsIncluded[] = $name;
- if ($_fast) {
- $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast);
- }
- } else {
- $this->everythingIncluded = false;
- $this->dirsDeselected[] = $name;
- if ($_fast && $this->couldHoldIncluded($name)) {
- $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast);
- }
- }
- } else {
- $this->everythingIncluded = false;
- $this->dirsExcluded[] = $name;
- if ($_fast && $this->couldHoldIncluded($name)) {
- $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast);
- }
- }
- } else {
- $this->everythingIncluded = false;
- $this->dirsNotIncluded[] = $name;
- if ($_fast && $this->couldHoldIncluded($name)) {
- $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast);
- }
- }
-
- if (!$_fast) {
- $this->scandir($file, $name.DIRECTORY_SEPARATOR, $_fast);
- }
-
- } elseif (@is_file($file)) {
- if ($this->isIncluded($name)) {
- if (!$this->isExcluded($name)) {
- if ($this->isSelected($name, $file)) {
- $this->filesIncluded[] = $name;
- } else {
- $this->everythingIncluded = false;
- $this->filesDeselected[] = $name;
- }
- } else {
- $this->everythingIncluded = false;
- $this->filesExcluded[] = $name;
- }
- } else {
- $this->everythingIncluded = false;
- $this->filesNotIncluded[] = $name;
- }
- }
- }
- }
-
- /**
- * Tests whether a name matches against at least one include pattern.
- *
- * @param name the name to match
- * @return <code>true</code> when the name matches against at least one
- * include pattern, <code>false</code> otherwise.
- */
- protected function isIncluded($_name) {
- for ($i=0, $_i=count($this->includes); $i < $_i; $i++) {
- if (DirectoryScanner::matchPath($this->includes[$i], $_name, $this->isCaseSensitive)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Tests whether a name matches the start of at least one include pattern.
- *
- * @param name the name to match
- * @return <code>true</code> when the name matches against at least one
- * include pattern, <code>false</code> otherwise.
- */
- protected function couldHoldIncluded($_name) {
- for ($i = 0; $i < count($this->includes); $i++) {
- if (DirectoryScanner::matchPatternStart($this->includes[$i], $_name, $this->isCaseSensitive)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Tests whether a name matches against at least one exclude pattern.
- *
- * @param name the name to match
- * @return <code>true</code> when the name matches against at least one
- * exclude pattern, <code>false</code> otherwise.
- */
- protected function isExcluded($_name) {
- for ($i = 0; $i < count($this->excludes); $i++) {
- if (DirectoryScanner::matchPath($this->excludes[$i], $_name, $this->isCaseSensitive)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Get the names of the files that matched at least one of the include
- * patterns, and matched none of the exclude patterns.
- * The names are relative to the basedir.
- *
- * @return the names of the files
- */
- function getIncludedFiles() {
- return $this->filesIncluded;
- }
-
- /**
- * Get the names of the files that matched at none of the include patterns.
- * The names are relative to the basedir.
- *
- * @return the names of the files
- */
- function getNotIncludedFiles() {
- $this->slowScan();
- return $this->filesNotIncluded;
- }
-
- /**
- * Get the names of the files that matched at least one of the include
- * patterns, an matched also at least one of the exclude patterns.
- * The names are relative to the basedir.
- *
- * @return the names of the files
- */
-
- function getExcludedFiles() {
- $this->slowScan();
- return $this->filesExcluded;
- }
-
- /**
- * <p>Returns the names of the files which were selected out and
- * therefore not ultimately included.</p>
- *
- * <p>The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.</p>
- *
- * @return the names of the files which were deselected.
- *
- * @see #slowScan
- */
- public function getDeselectedFiles() {
- $this->slowScan();
- return $this->filesDeselected;
- }
-
- /**
- * Get the names of the directories that matched at least one of the include
- * patterns, an matched none of the exclude patterns.
- * The names are relative to the basedir.
- *
- * @return the names of the directories
- */
-
- function getIncludedDirectories() {
- return $this->dirsIncluded;
- }
-
- /**
- * Get the names of the directories that matched at none of the include
- * patterns.
- * The names are relative to the basedir.
- *
- * @return the names of the directories
- */
- function getNotIncludedDirectories() {
- $this->slowScan();
- return $this->dirsNotIncluded;
- }
-
- /**
- * <p>Returns the names of the directories which were selected out and
- * therefore not ultimately included.</p>
- *
- * <p>The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.</p>
- *
- * @return the names of the directories which were deselected.
- *
- * @see #slowScan
- */
- public function getDeselectedDirectories() {
- $this->slowScan();
- return $this->dirsDeselected;
- }
-
- /**
- * Get the names of the directories that matched at least one of the include
- * patterns, an matched also at least one of the exclude patterns.
- * The names are relative to the basedir.
- *
- * @return the names of the directories
- */
- function getExcludedDirectories() {
- $this->slowScan();
- return $this->dirsExcluded;
- }
-
- /**
- * Adds the array with default exclusions to the current exclusions set.
- *
- */
- function addDefaultExcludes() {
- //$excludesLength = ($this->excludes == null) ? 0 : count($this->excludes);
- foreach($this->DEFAULTEXCLUDES as $pattern) {
- $pattern = str_replace('\\', DIRECTORY_SEPARATOR, $pattern);
- $pattern = str_replace('/', DIRECTORY_SEPARATOR, $pattern);
- $this->excludes[] = $pattern;
- }
- }
-
- /**
- * Sets the selectors that will select the filelist.
- *
- * @param selectors specifies the selectors to be invoked on a scan
- */
- public function setSelectors($selectors) {
- $this->selectors = $selectors;
- }
-
- /**
- * Returns whether or not the scanner has included all the files or
- * directories it has come across so far.
- *
- * @return <code>true</code> if all files and directories which have
- * been found so far have been included.
- */
- public function isEverythingIncluded() {
- return $this->everythingIncluded;
- }
-
- /**
- * Tests whether a name should be selected.
- *
- * @param string $name The filename to check for selecting.
- * @param string $file The full file path.
- * @return boolean False when the selectors says that the file
- * should not be selected, True otherwise.
- */
- protected function isSelected($name, $file) {
- if ($this->selectors !== null) {
- $basedir = new PhingFile($this->basedir);
- $file = new PhingFile($file);
- if (!$file->canRead())
- return false;
-
- foreach($this->selectors as $selector) {
- if (!$selector->isSelected($basedir, $name, $file)) {
- return false;
- }
- }
- }
- return true;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/util/ExtendedFileStream.php b/buildscripts/phing/classes/phing/util/ExtendedFileStream.php
deleted file mode 100755
index 9c09b56f..00000000
--- a/buildscripts/phing/classes/phing/util/ExtendedFileStream.php
+++ /dev/null
@@ -1,129 +0,0 @@
-<?php
-
- include_once 'phing/system/io/PhingFile.php';
-
- /**
- * $Id: f7e4641c758d5e781ad209d3eaf653a20404bf56 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
- /**
- * Extended file stream wrapper class which auto-creates directories
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: f7e4641c758d5e781ad209d3eaf653a20404bf56 $
- * @package phing.util
- */
- class ExtendedFileStream
- {
- private $fp = NULL;
-
- static function registerStream()
- {
- if (!in_array("efile", stream_get_wrappers()))
- {
- stream_wrapper_register("efile", "ExtendedFileStream");
- }
- }
-
- static function unregisterStream()
- {
- stream_wrapper_unregister("efile");
- }
-
- private function createDirectories($path)
- {
- $f = new PhingFile($path);
- if (!$f->exists()) {
- $f->mkdirs();
- }
- }
-
- function stream_open($path, $mode, $options, &$opened_path)
- {
- $filepath = substr($path, 8);
-
- $this->createDirectories(dirname($filepath));
-
- $this->fp = fopen($filepath, $mode);
-
- return true;
- }
-
- function stream_close()
- {
- fclose($this->fp);
- $this->fp = NULL;
- }
-
- function stream_read($count)
- {
- return fread($this->fp, $count);
- }
-
- function stream_write($data)
- {
- return fwrite($this->fp, $data);
- }
-
- function stream_eof()
- {
- return feof($this->fp);
- }
-
- function stream_tell()
- {
- return ftell($this->fp);
- }
-
- function stream_seek($offset, $whence)
- {
- return fseek($this->fp, $offset, $whence);
- }
-
- function stream_flush()
- {
- return fflush($this->fp);
- }
-
- function stream_stat()
- {
- return fstat($this->fp);
- }
-
- function unlink($path)
- {
- return FALSE;
- }
-
- function rename($path_from, $path_to)
- {
- return FALSE;
- }
-
- function mkdir($path, $mode, $options)
- {
- return FALSE;
- }
-
- function rmdir($path, $options)
- {
- return FALSE;
- }
- };
-
diff --git a/buildscripts/phing/classes/phing/util/FileUtils.php b/buildscripts/phing/classes/phing/util/FileUtils.php
deleted file mode 100755
index c98bbdd3..00000000
--- a/buildscripts/phing/classes/phing/util/FileUtils.php
+++ /dev/null
@@ -1,298 +0,0 @@
-<?php
-/*
- * $Id: fe077b4174763861e773f5e5e55bbfc5030cac4d $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-include_once 'phing/system/lang/Character.php';
-include_once 'phing/util/StringHelper.php';
-include_once 'phing/system/io/BufferedReader.php';
-include_once 'phing/system/io/BufferedWriter.php';
-include_once 'phing/filters/util/ChainReaderHelper.php';
-include_once 'phing/system/io/PhingFile.php';
-
-/**
- * File utility class.
- * - handles os independent stuff etc
- * - mapper stuff
- * - filter stuff
- *
- * @package phing.util
- * @version $Id$
- */
-class FileUtils {
-
- /**
- * Returns a new Reader with filterchains applied. If filterchains are empty,
- * simply returns passed reader.
- *
- * @param Reader $in Reader to modify (if appropriate).
- * @param array &$filterChains filter chains to apply.
- * @param Project $project
- * @return Reader Assembled Reader (w/ filter chains).
- */
- public static function getChainedReader(Reader $in, &$filterChains, Project $project) {
- if (!empty($filterChains)) {
- $crh = new ChainReaderHelper();
- $crh->setBufferSize(65536); // 64k buffer, but isn't being used (yet?)
- $crh->setPrimaryReader($in);
- $crh->setFilterChains($filterChains);
- $crh->setProject($project);
- $rdr = $crh->getAssembledReader();
- return $rdr;
- } else {
- return $in;
- }
- }
-
- /**
- * Copies a file using filter chains.
- *
- * @param PhingFile $sourceFile
- * @param PhingFile $destFile
- * @param boolean $overwrite
- * @param boolean $preserveLastModified
- * @param array $filterChains
- * @param Project $project
- * @param integer $mode
- * @return void
- */
- function copyFile(PhingFile $sourceFile, PhingFile $destFile, $overwrite = false, $preserveLastModified = true, &$filterChains = null, Project $project, $mode = 0755) {
-
- if ($overwrite || !$destFile->exists() || $destFile->lastModified() < $sourceFile->lastModified()) {
- if ($destFile->exists() && $destFile->isFile()) {
- $destFile->delete();
- }
-
- // ensure that parent dir of dest file exists!
- $parent = $destFile->getParentFile();
- if ($parent !== null && !$parent->exists()) {
- $parent->mkdirs($mode);
- }
-
- if ((is_array($filterChains)) && (!empty($filterChains))) {
-
- $in = self::getChainedReader(new BufferedReader(new FileReader($sourceFile)), $filterChains, $project);
- $out = new BufferedWriter(new FileWriter($destFile));
-
- // New read() methods returns a big buffer.
- while(-1 !== ($buffer = $in->read())) { // -1 indicates EOF
- $out->write($buffer);
- }
-
- if ( $in !== null )
- $in->close();
- if ( $out !== null )
- $out->close();
-
- $destFile->setMode($sourceFile->getMode());
-
- } else {
- // simple copy (no filtering)
- $sourceFile->copyTo($destFile);
- }
-
- if ($preserveLastModified) {
- $destFile->setLastModified($sourceFile->lastModified());
- }
-
- }
- }
-
- /**
- * Interpret the filename as a file relative to the given file -
- * unless the filename already represents an absolute filename.
- *
- * @param $file the "reference" file for relative paths. This
- * instance must be an absolute file and must not contain
- * ./ or ../ sequences (same for \ instead of /).
- * @param $filename a file name
- *
- * @return PhingFile A PhingFile object pointing to an absolute file that doesn't contain ./ or ../ sequences
- * and uses the correct separator for the current platform.
- */
- function resolveFile($file, $filename) {
- // remove this and use the static class constant File::seperator
- // as soon as ZE2 is ready
- $fs = FileSystem::getFileSystem();
-
- $filename = str_replace('/', $fs->getSeparator(), str_replace('\\', $fs->getSeparator(), $filename));
-
- // deal with absolute files
- if (StringHelper::startsWith($fs->getSeparator(), $filename) ||
- (strlen($filename) >= 2 && Character::isLetter($filename{0}) && $filename{1} === ':')) {
- return new PhingFile($this->normalize($filename));
- }
-
- if (strlen($filename) >= 2 && Character::isLetter($filename{0}) && $filename{1} === ':') {
- return new PhingFile($this->normalize($filename));
- }
-
- $helpFile = new PhingFile($file->getAbsolutePath());
-
- $tok = strtok($filename, $fs->getSeparator());
- while ($tok !== false) {
- $part = $tok;
- if ($part === '..') {
- $parentFile = $helpFile->getParent();
- if ($parentFile === null) {
- $msg = "The file or path you specified ($filename) is invalid relative to ".$file->getPath();
- throw new IOException($msg);
- }
- $helpFile = new PhingFile($parentFile);
- } else if ($part === '.') {
- // Do nothing here
- } else {
- $helpFile = new PhingFile($helpFile, $part);
- }
- $tok = strtok($fs->getSeparator());
- }
- return new PhingFile($helpFile->getAbsolutePath());
- }
-
- /**
- * Normalize the given absolute path.
- *
- * This includes:
- * - Uppercase the drive letter if there is one.
- * - Remove redundant slashes after the drive spec.
- * - resolve all ./, .\, ../ and ..\ sequences.
- * - DOS style paths that start with a drive letter will have
- * \ as the separator.
- * @param string $path Path to normalize.
- * @return string
- */
- function normalize($path) {
-
- $path = (string) $path;
- $orig = $path;
-
- $path = str_replace('/', DIRECTORY_SEPARATOR, str_replace('\\', DIRECTORY_SEPARATOR, $path));
-
- // make sure we are dealing with an absolute path
- if (!StringHelper::startsWith(DIRECTORY_SEPARATOR, $path)
- && !(strlen($path) >= 2 && Character::isLetter($path{0}) && $path{1} === ':')) {
- throw new IOException("$path is not an absolute path");
- }
-
- $dosWithDrive = false;
- $root = null;
-
- // Eliminate consecutive slashes after the drive spec
-
- if (strlen($path) >= 2 && Character::isLetter($path{0}) && $path{1} === ':') {
- $dosWithDrive = true;
-
- $ca = str_replace('/', '\\', $path);
- $ca = StringHelper::toCharArray($ca);
-
- $path = strtoupper($ca[0]).':';
-
- for ($i=2, $_i=count($ca); $i < $_i; $i++) {
- if (($ca[$i] !== '\\') ||
- ($ca[$i] === '\\' && $ca[$i - 1] !== '\\')
- ) {
- $path .= $ca[$i];
- }
- }
-
- $path = str_replace('\\', DIRECTORY_SEPARATOR, $path);
-
- if (strlen($path) == 2) {
- $root = $path;
- $path = "";
- } else {
- $root = substr($path, 0, 3);
- $path = substr($path, 3);
- }
-
- } else {
- if (strlen($path) == 1) {
- $root = DIRECTORY_SEPARATOR;
- $path = "";
- } else if ($path{1} == DIRECTORY_SEPARATOR) {
- // UNC drive
- $root = DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR;
- $path = substr($path, 2);
- }
- else {
- $root = DIRECTORY_SEPARATOR;
- $path = substr($path, 1);
- }
- }
-
- $s = array();
- array_push($s, $root);
- $tok = strtok($path, DIRECTORY_SEPARATOR);
- while ($tok !== false) {
- $thisToken = $tok;
- if ("." === $thisToken) {
- $tok = strtok(DIRECTORY_SEPARATOR);
- continue;
- } elseif (".." === $thisToken) {
- if (count($s) < 2) {
- // using '..' in path that is too short
- throw new IOException("Cannot resolve path: $orig");
- } else {
- array_pop($s);
- }
- } else { // plain component
- array_push($s, $thisToken);
- }
- $tok = strtok(DIRECTORY_SEPARATOR);
- }
-
- $sb = "";
- for ($i=0,$_i=count($s); $i < $_i; $i++) {
- if ($i > 1) {
- // not before the filesystem root and not after it, since root
- // already contains one
- $sb .= DIRECTORY_SEPARATOR;
- }
- $sb .= (string) $s[$i];
- }
-
-
- $path = (string) $sb;
- if ($dosWithDrive === true) {
- $path = str_replace('/', '\\', $path);
- }
- return $path;
- }
-
- /**
- * @return boolean Whether contents of two files is the same.
- */
- public function contentEquals(PhingFile $file1, PhingFile $file2) {
-
- if (!($file1->exists() || $file2->exists())) {
- return false;
- }
-
- if (!($file1->canRead() || $file2->canRead())) {
- return false;
- }
-
- $c1 = file_get_contents($file1->getAbsolutePath());
- $c2 = file_get_contents($file2->getAbsolutePath());
-
- return trim($c1) == trim($c2);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/util/LogWriter.php b/buildscripts/phing/classes/phing/util/LogWriter.php
deleted file mode 100755
index ae97705e..00000000
--- a/buildscripts/phing/classes/phing/util/LogWriter.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
- /**
- * $Id: ccb6c8b930bb3f293074969323467edeaf40bd02 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
- require_once 'phing/system/io/Writer.php';
- require_once 'phing/Task.php';
-
- /**
- * Extends the Writer class to output messages to Phing's log
- *
- * @author Michiel Rook <mrook@php.net>
- * @version $Id: ccb6c8b930bb3f293074969323467edeaf40bd02 $
- * @package phing.util
- */
- class LogWriter extends Writer
- {
- private $task = NULL;
-
- private $level = NULL;
-
- /**
- * Constructs a new LogWriter object
- */
- function __construct(Task $task, $level = Project::MSG_INFO)
- {
- $this->task = $task;
- $this->level = $level;
- }
-
- /**
- * @see Writer::write()
- */
- function write($buf, $off = null, $len = null)
- {
- $lines = explode("\n", $buf);
-
- foreach ($lines as $line)
- {
- if ($line == "")
- {
- continue;
- }
-
- $this->task->log($line, $this->level);
- }
- }
-
- /**
- * @see Writer::reset()
- */
- function reset()
- {
- }
-
- /**
- * @see Writer::close()
- */
- function close()
- {
- }
-
- /**
- * @see Writer::open()
- */
- function open()
- {
- }
-
- /**
- * @see Writer::getResource()
- */
- function getResource()
- {
- return $this->task;
- }
- }
-
diff --git a/buildscripts/phing/classes/phing/util/PathTokenizer.php b/buildscripts/phing/classes/phing/util/PathTokenizer.php
deleted file mode 100644
index 0a469acf..00000000
--- a/buildscripts/phing/classes/phing/util/PathTokenizer.php
+++ /dev/null
@@ -1,245 +0,0 @@
-<?php
-/*
- * $Id: 0ca7f2a419b5cc4285a8f84695c4b680b0aa190b $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-
-
-include_once 'phing/util/StringHelper.php';
-
-
-
-/**
-
- * A Path tokenizer takes a path and returns the components that make up
-
- * that path.
-
- *
-
- * The path can use path separators of either ':' or ';' and file separators
-
- * of either '/' or '\'.
-
- *
-
- * @author Hans Lellelid <hans@xmpl.org> (Phing)
-
- * @author Conor MacNeill (Ant)
-
- * @author Jeff Tulley <jtulley@novell.com> (Ant)
-
- * @package phing.util
-
- */
-
-class PathTokenizer {
-
-
-
- /**
-
- * A array of tokens, created by preg_split().
-
- */
-
- private $tokens = array();
-
-
-
- /**
-
- * A string which stores any path components which have been read ahead
-
- * due to DOS filesystem compensation.
-
- * @var string
-
- */
-
- private $lookahead;
-
-
-
- /**
-
- * Flag to indicate whether or not we are running on a platform with a
-
- * DOS style filesystem
-
- * @var boolean
-
- */
-
- private $dosStyleFilesystem;
-
-
-
- /**
-
- * Constructs a path tokenizer for the specified path.
-
- *
-
- * @param path The path to tokenize. Must not be <code>null</code>.
-
- */
-
- public function __construct($path) {
-
- // on Windows and Unix, we can ignore delimiters and still have
-
- // enough information to tokenize correctly.
-
- $this->tokens = preg_split("/[;:]/", $path, -1, PREG_SPLIT_NO_EMPTY);
-
- $this->dosStyleFilesystem = ( PATH_SEPARATOR == ';');
-
- }
-
-
-
- /**
-
- * Tests if there are more path elements available from this tokenizer's
-
- * path. If this method returns <code>true</code>, then a subsequent call
-
- * to nextToken will successfully return a token.
-
- *
-
- * @return <code>true</code> if and only if there is at least one token
-
- * in the string after the current position; <code>false</code> otherwise.
-
- */
-
- public function hasMoreTokens() {
-
- if ($this->lookahead !== null) {
-
- return true;
-
- }
-
- return !empty($this->tokens);
-
- }
-
-
-
- /**
-
- * Returns the next path element from this tokenizer.
-
- *
-
- * @return the next path element from this tokenizer.
-
- *
-
- * @throws Exception if there are no more elements in this tokenizer's path.
-
- */
-
- public function nextToken() {
-
-
-
- if ($this->lookahead !== null) {
-
- $token = $this->lookahead;
-
- $this->lookahead = null;
-
- } else {
-
- $token = trim(array_shift($this->tokens));
-
- }
-
-
-
-
-
- if (strlen($token) === 1 && Character::isLetter($token{0})
-
- && $this->dosStyleFilesystem
-
- && !empty($this->tokens)) {
-
- // we are on a dos style system so this path could be a drive
-
- // spec. We look at the next token
-
- $nextToken = trim(array_shift($this->tokens));
-
- if (StringHelper::startsWith('\\', $nextToken) || StringHelper::startsWith('/', $nextToken)) {
-
- // we know we are on a DOS style platform and the next path
-
- // starts with a slash or backslash, so we know this is a
-
- // drive spec
-
- $token .= ':' . $nextToken;
-
- } else {
-
- // store the token just read for next time
-
- $this->lookahead = $nextToken;
-
- }
-
- }
-
-
-
- return $token;
-
- }
-
-
-
- /**
-
- * Non StringTokenizer function, that indicates whether the specified path is contained in loaded tokens.
-
- * We can do this easily because in PHP implimentation we're using arrays.
-
- * @param string $path path to search for.
-
- * @return boolean
-
- */
-
- public function contains($path) {
-
- return in_array($path, $this->tokens, true);
-
- }
-
-
-
-}
-
-
-
diff --git a/buildscripts/phing/classes/phing/util/PearPackageScanner.php b/buildscripts/phing/classes/phing/util/PearPackageScanner.php
deleted file mode 100644
index 9071ed37..00000000
--- a/buildscripts/phing/classes/phing/util/PearPackageScanner.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-/**
- * Part of phing, the PHP build tool
- *
- * PHP version 5
- *
- * @category Util
- * @package phing.util
- * @author Christian Weiske <cweiske@cweiske.de>
- * @license LGPL v3 or later http://www.gnu.org/licenses/lgpl.html
- * @version SVN: $Id: e549026313edf53c67f495489f671cf0b71df80d $
- * @link http://www.phing.info/
- */
-require_once 'phing/util/DirectoryScanner.php';
-require_once 'PEAR/Config.php';
-
-/**
- * Scans for files in a PEAR package.
- *
- * @category Util
- * @package phing.util
- * @author Christian Weiske <cweiske@cweiske.de>
- * @license LGPL v3 or later http://www.gnu.org/licenses/lgpl.html
- * @link http://www.phing.info/
- */
-class PearPackageScanner extends DirectoryScanner
-{
- protected $packageInfo;
- protected $role = 'php';
- protected $config;
- protected $package;
- protected $channel = 'pear.php.net';
-
- /**
- * Sets the name of the PEAR package to get the files from
- *
- * @param string $package Package name without channel
- *
- * @return void
- */
- public function setPackage($package)
- {
- $this->package = $package;
- }
-
- /**
- * Sets the name of the package channel name
- *
- * @param string $channel package channel name or alias
- *
- * @return void
- */
- public function setChannel($channel)
- {
- $this->channel = $channel;
- }
-
- /**
- * Sets the full path to the PEAR configuration file
- *
- * @param string $config Configuration file
- *
- * @return void
- */
- public function setConfig($config)
- {
- if ($config != '' && !file_exists($config)) {
- throw new BuildException(
- 'PEAR configuration file "' . $config . '" does not exist'
- );
- }
-
- $this->config = $config;
- }
-
- /**
- * Sets the role of files that should be included.
- * Examples are php,doc,script
- *
- * @param string $role PEAR file role
- *
- * @return void
- *
- * @internal
- * We do not verify the role against a hardcoded list since that
- * would break packages with additional roles.
- */
- public function setRole($role)
- {
- if ($role == '') {
- throw new BuildException('A non-empty role is required');
- }
-
- $this->role = $role;
- }
-
- /**
- * Loads the package information.
- *
- * @return void
- *
- * @uses $packageInfo
- */
- protected function init()
- {
- if (!$this->packageInfo) {
- $this->packageInfo = $this->loadPackageInfo();
- }
- }
-
- /**
- * Loads and returns the PEAR package information.
- *
- * @return PEAR_PackageFile_v2 Package information object
- *
- * @throws BuildException When the package does not exist
- */
- protected function loadPackageInfo()
- {
- $cfg = PEAR_Config::singleton($this->config);
- $reg = $cfg->getRegistry();
- if (!$reg->packageExists($this->package, $this->channel)) {
- throw new BuildException(
- sprintf(
- 'PEAR package %s/%s does not exist',
- $this->channel, $this->package
- )
- );
- }
-
- $packageInfo = $reg->getPackage($this->package, $this->channel);
- return $packageInfo;
- }
-
- /**
- * Generates the list of included files and directories
- *
- * @return boolean True if all went well, false if something was wrong
- *
- * @uses $filesIncluded
- * @uses $filesDeselected
- * @uses $filesNotIncluded
- * @uses $filesExcluded
- * @uses $everythingIncluded
- * @uses $dirsIncluded
- * @uses $dirsDeselected
- * @uses $dirsNotIncluded
- * @uses $dirsExcluded
- */
- public function scan()
- {
- $this->init();
- $list = $this->packageInfo->getFilelist();
- $found = null;
- foreach ($list as $file => $att) {
- if ($att['role'] != $this->role) {
- continue;
- }
- $this->filesIncluded[] = $file;
- $found = array($file, $att);
- }
- if ($found !== null) {
- list($file, $att) = $found;
- $this->setBaseDir(substr($att['installed_as'], 0, -strlen($file)));
- }
-
- return true;
- }
-
-}
diff --git a/buildscripts/phing/classes/phing/util/SourceFileScanner.php b/buildscripts/phing/classes/phing/util/SourceFileScanner.php
deleted file mode 100644
index d958a15f..00000000
--- a/buildscripts/phing/classes/phing/util/SourceFileScanner.php
+++ /dev/null
@@ -1,159 +0,0 @@
-<?php
-/*
- * $Id: 0555ae8b4e7418c211bd69a066877ab8cf95fbb8 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Utility class that collects the functionality of the various
- * scanDir methods that have been scattered in several tasks before.
- *
- * The only method returns an array of source files. The array is a
- * subset of the files given as a parameter and holds only those that
- * are newer than their corresponding target files.
- * @package phing.util
- */
-class SourceFileScanner {
-
- /** Instance of FileUtils */
- private $fileUtils;
-
- /** Task this class is working for -- for logging purposes. */
- private $task;
-
- /**
- * @param task The task we should log messages through
- */
- function __construct($task) {
- $this->task = $task;
- $this->fileUtils = new FileUtils();
- }
-
- /**
- * Restrict the given set of files to those that are newer than
- * their corresponding target files.
- *
- * @param files the original set of files
- * @param srcDir all files are relative to this directory
- * @param destDir target files live here. if null file names
- * returned by the mapper are assumed to be absolute.
- * @param FilenameMapper knows how to construct a target file names from
- * source file names.
- * @param force Boolean that determines if the files should be
- * forced to be copied.
- */
- function restrict(&$files, $srcDir, $destDir, $mapper, $force = false) {
- $now = time();
- $targetList = "";
-
- /*
- If we're on Windows, we have to munge the time up to 2 secs to
- be able to check file modification times.
- (Windows has a max resolution of two secs for modification times)
- */
- $osname = strtolower(Phing::getProperty('os.name'));
-
- // indexOf()
- $index = ((($res = strpos($osname, 'win')) === false) ? -1 : $res);
- if ($index >= 0 ) {
- $now += 2000;
- }
-
- $v = array();
-
- for ($i=0, $size=count($files); $i < $size; $i++) {
-
- $targets = $mapper->main($files[$i]);
- if (empty($targets)) {
- $this->task->log($files[$i]." skipped - don't know how to handle it", Project::MSG_VERBOSE);
- continue;
- }
-
- $src = null;
- try {
- if ($srcDir === null) {
- $src = new PhingFile($files[$i]);
- } else {
- $src = $this->fileUtils->resolveFile($srcDir, $files[$i]);
- }
-
- if ($src->lastModified() > $now) {
- $this->task->log("Warning: ".$files[$i]." modified in the future (".$src->lastModified()." > ".$now.")", Project::MSG_WARN);
- }
- } catch (IOException $ioe) {
- $this->task->log("Unable to read file ".$files[$i]." (skipping): " . $ioe->getMessage());
- continue;
- }
-
- $added = false;
- $targetList = "";
-
- for ($j=0,$_j=count($targets); (!$added && $j < $_j); $j++) {
-
- $dest = null;
- if ($destDir === null) {
- $dest = new PhingFile($targets[$j]);
- } else {
- $dest = $this->fileUtils->resolveFile($destDir, $targets[$j]);
- }
-
- if (!$dest->exists()) {
- $this->task->log($files[$i]." added as " . $dest->__toString() . " doesn't exist.", Project::MSG_VERBOSE);
- $v[] =$files[$i];
- $added = true;
- } elseif ($src->lastModified() > $dest->lastModified()) {
- $this->task->log($files[$i]." added as " . $dest->__toString() . " is outdated.", Project::MSG_VERBOSE );
- $v[]=$files[$i];
- $added = true;
- } elseif ($force === true) {
- $this->task->log($files[$i]." added as " . $dest->__toString() . " is forced to be overwritten.", Project::MSG_VERBOSE );
- $v[]=$files[$i];
- $added = true;
- } else {
- if (strlen($targetList) > 0) {
- $targetList .= ", ";
- }
- $targetList .= $dest->getAbsolutePath();
- }
- }
-
- if (!$added) {
- $this->task->log($files[$i]." omitted as ".$targetList." ".(count($targets) === 1 ? " is " : " are ")."up to date.", Project::MSG_VERBOSE);
- }
-
- }
- $result = array();
- $result = $v;
- return $result;
- }
-
- /**
- * Convenience layer on top of restrict that returns the source
- * files as PhingFile objects (containing absolute paths if srcDir is
- * absolute).
- */
- function restrictAsFiles(&$files, &$srcDir, &$destDir, &$mapper) {
- $res = $this->restrict($files, $srcDir, $destDir, $mapper);
- $result = array();
- for ($i=0; $i<count($res); $i++) {
- $result[$i] = new PhingFile($srcDir, $res[$i]);
- }
- return $result;
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/util/StringHelper.php b/buildscripts/phing/classes/phing/util/StringHelper.php
deleted file mode 100644
index 31d0b0e9..00000000
--- a/buildscripts/phing/classes/phing/util/StringHelper.php
+++ /dev/null
@@ -1,208 +0,0 @@
-<?php
-
-/**
- * String helper utility class.
- *
- * This class includes some Java-like functions for parsing strings,
- * as well as some functions for getting qualifiers / unqualifying phing-style
- * classpaths. (e.g. "phing.util.StringHelper").
- *
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.system.util
- */
-class StringHelper {
-
- private static $TRUE_VALUES = array("on", "true", "t", "yes");
- private static $FALSE_VALUES = array("off", "false", "f", "no");
-
- /**
- * Replaces identifier tokens with corresponding text values in passed string.
- *
- * @param array $strings Array of strings to multiply. (If string is passed, will convert to array)
- * @param array $tokens The tokens to search for.
- * @param array $replacements The values with which to replace found tokens.
- * @return string
- */
- public static function multiply($strings, $tokens, $replacements) {
- $strings = (array) $strings;
- $results = array();
- foreach ($strings as $string) {
- $results[] = str_replace($tokens, $replacements, $string);
- }
- return $results;
- }
-
- /**
- * Remove qualification to name.
- * E.g. eg.Cat -> Cat
- * @param string $qualifiedName
- * @param string $separator Character used to separate.
- */
- public static function unqualify($qualifiedName, $separator = '.') {
- // if false, then will be 0
- $pos = strrpos($qualifiedName, $separator);
- if ($pos === false) {
- return $qualifiedName; // there is no '.' in the qualifed name
- } else {
- return substr($qualifiedName, $pos + 1); // start just after '.'
- }
- }
-
- /**
- * Converts a string to an indexed array of chars
- * There's really no reason for this to be used in PHP, since strings
- * are all accessible using the $string{0} notation.
- * @param string $string
- * @return array
- * @deprecated
- */
- public static function toCharArray($str) {
- $ret=array();
- $len=strlen($str);
- for ($i=0; $i < $len; $i++) {
- $ret[] = $str{$i};
- }
- return $ret;
- }
-
- /**
- * Get the qualifier part of a qualified name.
- * E.g. eg.Cat -> eg
- * @return string
- */
- public static function qualifier($qualifiedName, $seperator = '.') {
- $pos = strrchr($qualifiedName, $seperator);
- if ($pos === false) {
- return '';
- } else {
- return substr($qualifiedName, 0, $pos);
- }
- }
-
- /**
- * @param array $columns String[]
- * @param string $prefix
- * @return array String[]
- */
- public static function prefix( $columns, $prefix) {
- if ($prefix == null) return $columns;
- $qualified = array();
- foreach($columns as $key => $column) {
- $qualified[$key] = $prefix . $column;
- }
- return $qualified;
- }
-
- /**
- *
- * @return string
- */
- public static function root($qualifiedName, $separator = '.') {
- $loc = strpos($qualifiedName, $separator);
- return ($loc === false) ? $qualifiedName : substr($qualifiedName, 0, $loc);
- }
-
- /**
- * @return int
- */
- public static function hashCode($string) {
- return crc32($string);
- }
-
- /**
- * @return boolean
- */
- public static function booleanValue($s) {
- if (is_bool($s)) {
- return $s; // it's already boolean (not a string)
- }
- // otherwise assume it's something like "true" or "t"
- $trimmed = strtolower(trim($s));
- return (boolean) in_array($trimmed, self::$TRUE_VALUES);
- }
-
- /** tests if a string is a representative of a boolean */
- public static function isBoolean($s) {
-
- if (is_bool($s)) {
- return true; // it already is boolean
- }
-
- if ($s === "" || $s === null || !is_string($s)) {
- return false; // not a valid string for testing
- }
-
- $test = trim(strtolower($s));
- return (boolean) in_array($test, array_merge(self::$FALSE_VALUES, self::$TRUE_VALUES));
- }
-
- /**
- * Creates a key based on any number of passed params.
- * @return string
- */
- public static function key() {
- $args = func_get_args();
- return serialize($args);
- }
-
- /** tests if a string starts with a given string */
- public static function startsWith($check, $string) {
- if ($check === "" || $check === $string) {
- return true;
- } else {
- return (strpos($string, $check) === 0) ? true : false;
- }
- }
-
- /** tests if a string ends with a given string */
- public static function endsWith($check, $string) {
- if ($check === "" || $check === $string) {
- return true;
- } else {
- return (strpos(strrev($string), strrev($check)) === 0) ? true : false;
- }
- }
-
- /**
- * a natural way of getting a subtring, php's circular string buffer and strange
- * return values suck if you want to program strict as of C or friends
- */
- public static function substring($string, $startpos, $endpos = -1) {
- $len = strlen($string);
- $endpos = (int) (($endpos === -1) ? $len-1 : $endpos);
- if ($startpos > $len-1 || $startpos < 0) {
- trigger_error("substring(), Startindex out of bounds must be 0<n<$len", E_USER_ERROR);
- }
- if ($endpos > $len-1 || $endpos < $startpos) {
- trigger_error("substring(), Endindex out of bounds must be $startpos<n<".($len-1), E_USER_ERROR);
- }
- if ($startpos === $endpos) {
- return (string) $string{$startpos};
- } else {
- $len = $endpos-$startpos;
- }
- return substr($string, $startpos, $len+1);
- }
-
- /**
- * Does the value correspond to a slot variable?
- * @param string $value
- */
- public static function isSlotVar($value) {
- $value = trim($value);
- if ($value === "") return false;
- return preg_match('/^%\{([\w\.\-]+)\}$/', $value);
- }
-
- /**
- * Extracts the variable name for a slot var in the format %{task.current_file}
- * @param string $var The var from build file.
- * @return string Extracted name part.
- */
- public static function slotVar($var) {
- return trim($var, '%{} ');
- }
-
-}
-
-
diff --git a/buildscripts/phing/classes/phing/util/regexp/PregEngine.php b/buildscripts/phing/classes/phing/util/regexp/PregEngine.php
deleted file mode 100644
index 76cf56b3..00000000
--- a/buildscripts/phing/classes/phing/util/regexp/PregEngine.php
+++ /dev/null
@@ -1,167 +0,0 @@
-<?php
-/*
- * $Id: 94607411e16d4c9091369ff4a65ea8f44bde8781 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-require_once 'phing/util/regexp/RegexpEngine.php';
-
-/**
- * PREG Regexp Engine.
- * Implements a regexp engine using PHP's preg_match(), preg_match_all(), and preg_replace() functions.
- *
- * @author hans lellelid, hans@velum.net
- * @package phing.util.regexp
- */
-class PregEngine implements RegexpEngine {
-
- /**
- * Set to null by default to distinguish between false and not set
- * @var boolean
- */
- private $ignoreCase = null;
-
- /**
- * Set to null by default to distinguish between false and not set
- * @var boolean
- */
- private $multiline = null;
-
- /**
- * Pattern modifiers
- * @link http://php.net/manual/en/reference.pcre.pattern.modifiers.php
- * @var string
- */
- private $modifiers = null;
-
- /**
- * Sets pattern modifiers for regex engine
- *
- * @param string $mods Modifiers to be applied to a given regex
- * @return void
- */
- public function setModifiers($mods) {
- $this->modifiers = (string)$mods;
- }
-
- /**
- * Gets pattern modifiers.
- * @return string
- */
- public function getModifiers() {
- $mods = $this->modifiers;
- if($this->getIgnoreCase()) {
- $mods .= 'i';
- } elseif($this->getIgnoreCase() === false) {
- $mods = str_replace('i', '', $mods);
- }
- if($this->getMultiline()) {
- $mods .= 's';
- } elseif($this->getMultiline() === false) {
- $mods = str_replace('s', '', $mods);
- }
- // filter out duplicates
- $mods = preg_split('//', $mods, -1, PREG_SPLIT_NO_EMPTY);
- $mods = implode('', array_unique($mods));
- return $mods;
- }
-
- /**
- * Sets whether or not regex operation is case sensitive.
- * @param boolean $bit
- * @return void
- */
- function setIgnoreCase($bit) {
- $this->ignoreCase = (boolean) $bit;
- }
-
- /**
- * Gets whether or not regex operation is case sensitive.
- * @return boolean
- */
- function getIgnoreCase() {
- return $this->ignoreCase;
- }
-
- /**
- * Sets whether regexp should be applied in multiline mode.
- * @param boolean $bit
- */
- function setMultiline($bit) {
- $this->multiline = $bit;
- }
-
- /**
- * Gets whether regexp is to be applied in multiline mode.
- * @return boolean
- */
- function getMultiline() {
- return $this->multiline;
- }
-
- /**
- * The pattern needs to be converted into PREG style -- which includes adding expression delims & any flags, etc.
- * @param string $pattern
- * @return string prepared pattern.
- */
- private function preparePattern($pattern)
- {
- // Use backquotes since hardly ever found in a regexp pattern, avoids using preg_quote
- return '`'.$pattern.'`' . $this->getModifiers();
- }
-
- /**
- * Matches pattern against source string and sets the matches array.
- * @param string $pattern The regex pattern to match.
- * @param string $source The source string.
- * @param array $matches The array in which to store matches.
- * @return boolean Success of matching operation.
- */
- function match($pattern, $source, &$matches) {
- return preg_match($this->preparePattern($pattern), $source, $matches);
- }
-
- /**
- * Matches all patterns in source string and sets the matches array.
- * @param string $pattern The regex pattern to match.
- * @param string $source The source string.
- * @param array $matches The array in which to store matches.
- * @return boolean Success of matching operation.
- */
- function matchAll($pattern, $source, &$matches) {
- return preg_match_all($this->preparePattern($pattern), $source, $matches);
- }
-
- /**
- * Replaces $pattern with $replace in $source string.
- * References to \1 group matches will be replaced with more preg-friendly
- * $1.
- * @param string $pattern The regex pattern to match.
- * @param string $replace The string with which to replace matches.
- * @param string $source The source string.
- * @return string The replaced source string.
- */
- function replace($pattern, $replace, $source) {
- // convert \1 -> $1, because we want to use the more generic \1 in the XML
- // but PREG prefers $1 syntax.
- $replace = preg_replace('/\\\(\d+)/', '\$$1', $replace);
- return preg_replace($this->preparePattern($pattern), $replace, $source);
- }
-
-}
-
diff --git a/buildscripts/phing/classes/phing/util/regexp/Regexp.php b/buildscripts/phing/classes/phing/util/regexp/Regexp.php
deleted file mode 100755
index 7188997e..00000000
--- a/buildscripts/phing/classes/phing/util/regexp/Regexp.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/*
- * $Id: b669eb9f2dd8533cba67b2058b7cbc2f558bdeae $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * A factory class for regex functions.
- * @author Hans Lellelid <hans@xmpl.org>
- * @package phing.util.regexp
- * @version $Id$
- */
-class Regexp {
-
- /**
- * Matching groups found.
- * @var array
- */
- private $groups = array();
-
- /**
- * Pattern to match.
- * @var string
- */
- private $pattern;
-
- /**
- * Replacement pattern.
- * @var string
- */
- private $replace;
-
- /**
- * The regex engine -- e.g. 'preg' or 'ereg';
- * @var RegexpEngine
- */
- private $engine;
-
- /**
- * Constructor sets the regex engine to use (preg by default).
- * @param string $_engineType The regex engine to use.
- */
- function __construct($engineType='preg') {
- if ($engineType == 'preg') {
- include_once 'phing/util/regexp/PregEngine.php';
- $this->engine = new PregEngine();
- } elseif ($engineType == 'ereg') {
- include_once 'phing/util/regexp/EregEngine.php';
- $this->engine = new EregEngine();
- } else {
- throw new BuildException("Invalid engine type for Regexp: " . $engineType);
- }
- }
-
- /**
- * Sets pattern to use for matching.
- * @param string $pat The pattern to match on.
- * @return void
- */
- public function setPattern($pat) {
- $this->pattern = (string) $pat;
- }
-
-
- /**
- * Gets pattern to use for matching.
- * @return string The pattern to match on.
- */
- public function getPattern() {
- return $this->pattern;
- }
-
- /**
- * Sets replacement string.
- * @param string $rep The pattern to replace matches with.
- * @return void
- */
- public function setReplace($rep) {
- $this->replace = (string) $rep;
- }
-
- /**
- * Gets replacement string.
- * @return string The pattern to replace matches with.
- */
- public function getReplace() {
- return $this->replace;
- }
-
- /**
- * Performs match of specified pattern against $subject.
- * @param string $subject The subject, on which to perform matches.
- * @return boolean Whether or not pattern matches subject string passed.
- */
- public function matches($subject) {
- if($this->pattern === null) {
- throw new Exception("No pattern specified for regexp match().");
- }
- return $this->engine->match($this->pattern, $subject, $this->groups);
- }
-
- /**
- * Performs replacement of specified pattern and replacement strings.
- * @param string $subject Text on which to perform replacement.
- * @return string subject after replacement has been performed.
- */
- public function replace($subject) {
- if ($this->pattern === null || $this->replace === null) {
- throw new Exception("Missing pattern or replacement string regexp replace().");
- }
- return $this->engine->replace($this->pattern, $this->replace, $subject);
- }
-
- /**
- * Get array of matched groups.
- * @return array Matched groups
- */
- function getGroups() {
- return $this->groups;
- }
-
- /**
- * Get specific matched group.
- * @param integer $idx
- * @return string specified group or NULL if group is not set.
- */
- function getGroup($idx) {
- if (!isset($this->groups[$idx])) {
- return null;
- }
- return $this->groups[$idx];
- }
-
- /**
- * Sets pattern modifiers for regex engine
- *
- * @param string $mods Modifiers to be applied to a given regex
- * @return void
- */
- public function setModifiers($mods) {
- $this->engine->setModifiers($mods);
- }
-
- /**
- * Gets pattern modifiers.
- * Subsequent call to engines getModifiers() filters out duplicates
- * i.e. if i is provided in $mods, and setIgnoreCase(true), "i"
- * modifier would be included only once
- * @return string
- */
- public function getModifiers() {
- return $this->engine->getModifiers();
- }
-
- /**
- * Sets whether the regexp matching is case insensitive.
- * (default is false -- i.e. case sensisitive)
- * @param boolean $bit
- */
- function setIgnoreCase($bit) {
- $this->engine->setIgnoreCase($bit);
- }
-
- /**
- * Gets whether the regexp matching is case insensitive.
- * @return boolean
- */
- function getIgnoreCase() {
- return $this->engine->getIgnoreCase();
- }
-
- /**
- * Sets whether regexp should be applied in multiline mode.
- * @param boolean $bit
- */
- function setMultiline($bit) {
- $this->engine->setMultiline($bit);
- }
-
- /**
- * Gets whether regexp is to be applied in multiline mode.
- * @return boolean
- */
- function getMultiline() {
- return $this->engine->getMultiline();
- }
-}
-
diff --git a/buildscripts/phing/classes/phing/util/regexp/RegexpEngine.php b/buildscripts/phing/classes/phing/util/regexp/RegexpEngine.php
deleted file mode 100755
index 3eb8c408..00000000
--- a/buildscripts/phing/classes/phing/util/regexp/RegexpEngine.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/*
- * $Id: 5e2886f3fae60fff1fd142e79717a3a7a4555772 $
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information please see
- * <http://phing.info>.
- */
-
-/**
- * Contains some shared attributes and methods -- and some abstract methods with
- * engine-specific implementations that sub-classes must override.
- *
- * @author Hans Lellelid <hans@velum.net>
- * @package phing.util.regexp
- * @version $Id$
- */
-interface RegexpEngine {
-
- /**
- * Sets whether or not regex operation should ingore case.
- * @param boolean $bit
- * @return void
- */
- public function setIgnoreCase($bit);
-
- /**
- * Returns status of ignore case flag.
- * @return boolean
- */
- public function getIgnoreCase();
-
- /**
- * Matches pattern against source string and sets the matches array.
- * @param string $pattern The regex pattern to match.
- * @param string $source The source string.
- * @param array $matches The array in which to store matches.
- * @return boolean Success of matching operation.
- */
- function match($pattern, $source, &$matches);
-
- /**
- * Matches all patterns in source string and sets the matches array.
- * @param string $pattern The regex pattern to match.
- * @param string $source The source string.
- * @param array $matches The array in which to store matches.
- * @return boolean Success of matching operation.
- */
- function matchAll($pattern, $source, &$matches);
-
- /**
- * Replaces $pattern with $replace in $source string.
- * @param string $pattern The regex pattern to match.
- * @param string $replace The string with which to replace matches.
- * @param string $source The source string.
- * @return string The replaced source string.
- */
- function replace($pattern, $replace, $source);
-
-}
-
diff --git a/buildscripts/phing/composer.json b/buildscripts/phing/composer.json
deleted file mode 100644
index e9b10fef..00000000
--- a/buildscripts/phing/composer.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "phing/phing",
- "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.",
- "keywords": ["build", "tool", "task"],
- "homepage": "http://www.phing.info/",
- "license": "LGPL3",
- "authors": [
- {
- "name": "Michiel Rook",
- "email": "mrook@php.net"
- },
- {
- "name": "Phing Community",
- "homepage": "http://www.phing.info/trac/wiki/Development/Contributors"
- }
- ],
- "require": {
- "php": ">=5.2.0"
- },
- "autoload": {
- "classmap": ["classes/phing/"]
- }
-}
diff --git a/buildscripts/phing/etc/VERSION.TXT b/buildscripts/phing/etc/VERSION.TXT
deleted file mode 100644
index 321d7fe1..00000000
--- a/buildscripts/phing/etc/VERSION.TXT
+++ /dev/null
@@ -1 +0,0 @@
-Phing 2.4.12 \ No newline at end of file
diff --git a/buildscripts/phing/etc/coverage-frames.xsl b/buildscripts/phing/etc/coverage-frames.xsl
deleted file mode 100755
index 251faff6..00000000
--- a/buildscripts/phing/etc/coverage-frames.xsl
+++ /dev/null
@@ -1,1067 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:exsl="http://exslt.org/common"
- xmlns:date="http://exslt.org/dates-and-times"
- extension-element-prefixes="exsl date">
-<xsl:output method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--
-
- Sample stylesheet to be used with Xdebug/Phing code coverage output.
- Based on JProbe stylesheets from Apache Ant.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
- @author Michiel Rook <a href="mailto:michiel.rook@gmail.com"/>
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
-
--->
-
-<!-- default output directory is current directory -->
-<xsl:param name="output.dir" select="'.'"/>
-<xsl:param name="output.sorttable" select="'.'"/>
-<xsl:param name="document.title" select="''"/>
-
-<!-- ======================================================================
- Root element
- ======================================================================= -->
-<xsl:template match="/snapshot">
- <!-- create the index.html -->
- <exsl:document href="efile://{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </exsl:document>
-
- <!-- create the stylesheet.css -->
- <exsl:document omit-xml-declaration="yes" href="efile://{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </exsl:document>
-
- <!-- create the overview-packages.html at the root -->
- <exsl:document href="efile://{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </exsl:document>
-
- <!-- create the all-packages.html at the root -->
- <exsl:document href="efile://{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="all.packages"/>
- </exsl:document>
-
- <!-- create the all-classes.html at the root -->
- <exsl:document href="efile://{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </exsl:document>
-
- <!-- process all packages -->
- <xsl:apply-templates select="./package" mode="write"/>
-
- <!-- process all subpackages -->
- <xsl:apply-templates select="./package/subpackage" mode="write"/>
-</xsl:template>
-
-<!-- =======================================================================
- Frameset definition. Entry point for the report.
- 3 frames: packageListFrame, classListFrame, classFrame
- ======================================================================= -->
-<xsl:template name="index.html">
-<html>
- <head><title><xsl:value-of select="$document.title"/> Coverage Results</title></head>
- <frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="overview-frame.html" name="packageListFrame"/>
- <frame src="allclasses-frame.html" name="classListFrame"/>
- </frameset>
- <frame src="overview-summary.html" name="classFrame"/>
- </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>
-</html>
-</xsl:template>
-
-<!-- =======================================================================
- Stylesheet CSS used
- ======================================================================= -->
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
- <xsl:if test="$output.sorttable = 1">
- .sortable th {
- cursor: pointer;
- }
- </xsl:if>
- .bannercell {
- border: 0px;
- padding: 0px;
- }
- body {
- margin-left: 10;
- margin-right: 10;
- background-color:#FFFFFF;
- font-family: verdana,arial,sanserif;
- color:#000000;
- }
- a {
- color: #003399;
- }
- a:hover {
- color: #888888;
- }
- .a td {
- background: #efefef;
- }
- .b td {
- background: #fff;
- }
- th, td {
- text-align: left;
- vertical-align: top;
- }
- th {
- font-weight:bold;
- background: #ccc;
- color: black;
- }
- table, th, td {
- font-size: 12px;
- border: none
- }
- table.log tr td, tr th {
- }
- h2 {
- font-weight:bold;
- font-size: 12px;
- margin-bottom: 5;
- }
- h3 {
- font-size:100%;
- font-weight: 12px;
- background: #DFDFDF
- color: white;
- text-decoration: none;
- padding: 5px;
- margin-right: 2px;
- margin-left: 2px;
- margin-bottom: 0;
- }
- .small {
- font-size: 9px;
- }
- td.legendItem {
- font-weight: bold;
- padding-bottom: 2px;
- padding-right: 6px;
- padding-top: 6px;
- text-align: right;
- }
- td.legendValue {
- color: #2E3436;
- font-weight: bold;
- padding-bottom: 2px;
- padding-top: 6px;
- text-align: left;
- }
- span.LegendCovered {
- background-color: #8AE234;
- margin-right: 2px;
- padding-left: 10px;
- padding-right: 10px;
- text-align: center;
- }
- span.LegendUncovered {
- background-color: #F0C8C8;
- margin-right: 2px;
- padding-left: 10px;
- padding-right: 10px;
- text-align: center;
- }
- span.LegendDeadCode {
- background-color: #D3D7CF;
- margin-right: 2px;
- padding-left: 10px;
- padding-right: 10px;
- text-align: center;
- }
-TD.empty {
- FONT-SIZE: 2px; BACKGROUND: #c0c0c0; BORDER:#9c9c9c 1px solid;
- color: #c0c0c0;
-}
-TD.fullcover {
- FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER:#9c9c9c 1px solid;
- color: #00df00;
-}
-TD.covered {
- FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER-LEFT:#9c9c9c 1px solid;BORDER-TOP:#9c9c9c 1px solid;BORDER-BOTTOM:#9c9c9c 1px solid;
- color: #00df00;
-}
-TD.uncovered {
- FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER:#9c9c9c 1px solid;
- color: #df0000;
-}
-PRE.srcLine {
- BACKGROUND: #ffffff; MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px;
-}
- PRE.srcLineUncovered {
- BACKGROUND: #F0C8C8; MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px;
-}
- PRE.srcLineCovered {
- BACKGROUND: #8AE234; MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px;
- }
- PRE.srcLineDeadCode {
- BACKGROUND: #D3D7CF; MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px;
- }
-td.lineCount, td.coverageCount {
- BACKGROUND: #F0F0F0; PADDING-RIGHT: 3px;
- text-align: right;
-}
- td.lineCountCovered, td.coverageCountCovered {
- background: #8AE234; PADDING-RIGHT: 3px;
- text-align: right;
-}
- td.srcLineCovered {
- background: #8AE234;
- }
- td.lineCountUncovered, td.coverageCountUncovered {
- background: #F0C8C8; PADDING-RIGHT: 3px;
- text-align: right;
-}
- td.srcLineUncovered {
- background: #F0C8C8;
-}
- td.lineCountDeadCode, td.coverageCountDeadCode {
- background: #D3D7CF; PADDING-RIGHT: 3px;
- text-align: right;
- }
- td.srcLineDeadCode {
- background: #D3D7CF;
- }
-td.srcLine {
- background: #C8C8F0;
-}
-TD.srcLineClassStart {
- WIDTH: 100%; BORDER-TOP:#dcdcdc 1px solid; FONT-WEIGHT: bold;
-}
-.srcLine , .srcLine ol, .srcLine ol li {margin: 0;}
-.srcLine .de1, .srcLine .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
-.srcLine .imp {font-weight: bold; color: red;}
-.srcLine .kw1 {color: #b1b100;}
-.srcLine .kw2 {color: #000000; font-weight: bold;}
-.srcLine .kw3 {color: #000066;}
-.srcLine .co1 {color: #808080; font-style: italic;}
-.srcLine .co2 {color: #808080; font-style: italic;}
-.srcLine .coMULTI {color: #808080; font-style: italic;}
-.srcLine .es0 {color: #000099; font-weight: bold;}
-.srcLine .br0 {color: #66cc66;}
-.srcLine .st0 {color: #ff0000;}
-.srcLine .nu0 {color: #cc66cc;}
-.srcLine .me1 {color: #006600;}
-.srcLine .me2 {color: #006600;}
-.srcLine .re0 {color: #0000ff;}
-</xsl:template>
-
-<!-- =======================================================================
- List of all classes in all packages
- This will be the first page in the classListFrame
- ======================================================================= -->
-<xsl:template match="snapshot" mode="all.classes">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link"/>
- </head>
- <body>
- <h2>All Classes</h2>
- <table width="100%">
- <xsl:for-each select="package/class">
- <xsl:sort select="@name"/>
- <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
- <xsl:variable name="link">
- <xsl:if test="not($package.name='')">
- <xsl:value-of select="translate($package.name,'._','//')"/><xsl:text>/</xsl:text>
- </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
- </xsl:variable>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame" href="{$link}"><xsl:value-of select="@name"/></a>
- <xsl:choose>
- <xsl:when test="@totalcount=0">
- <i> (-)</i>
- </xsl:when>
- <xsl:otherwise>
- <i> (<xsl:value-of select="format-number(@totalcovered div @totalcount, '0.0%')"/>)</i>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- </xsl:for-each>
- <xsl:for-each select="package/subpackage/class">
- <xsl:sort select="@name"/>
- <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
- <xsl:variable name="subpackage.name" select="(ancestor::subpackage)[last()]/@name"/>
- <xsl:variable name="link">
- <xsl:if test="not($package.name='')">
- <xsl:value-of select="translate($package.name,'._','//')"/><xsl:text>/</xsl:text>
- </xsl:if>
- <xsl:if test="not($subpackage.name='')">
- <xsl:value-of select="translate($subpackage.name,'._','//')"/><xsl:text>/</xsl:text>
- </xsl:if>
- <xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
- </xsl:variable>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame" href="{$link}"><xsl:value-of select="@name"/></a>
- <xsl:choose>
- <xsl:when test="@totalcount=0">
- <i> (-)</i>
- </xsl:when>
- <xsl:otherwise>
- <i> (<xsl:value-of select="format-number(@totalcovered div @totalcount, '0.0%')"/>)</i>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<!-- list of all packages -->
-<xsl:template match="snapshot" mode="all.packages">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link"/>
- </head>
- <body>
- <h2><a href="overview-summary.html" target="classFrame">Overview</a></h2>
- <h2>All Packages</h2>
- <table width="100%">
- <xsl:for-each select="package">
- <xsl:sort select="@name" order="ascending"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{translate(@name,'._','//')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<!-- overview of statistics in packages -->
-<xsl:template match="snapshot" mode="overview.packages">
- <html>
- <head>
- <title>Coverage Results Overview</title>
- <xsl:if test="$output.sorttable = 1">
- <script language="JavaScript" src="http://www.phing.info/support/sorttable.js"/>
- </xsl:if>
- <xsl:call-template name="create.stylesheet.link"/>
- </head>
- <body onload="open('allclasses-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr class="a">
- <td class="small">Packages: <xsl:value-of select="count(package)"/></td>
- <td class="small">Subpackages: <xsl:value-of select="count(package/subpackage)"/></td>
- <td class="small">Classes: <xsl:value-of select="count(package/class) + count(package/subpackage/class)"/></td>
- <td class="small">Methods: <xsl:value-of select="@methodcount"/></td>
- <td class="small">LOC: <xsl:value-of select="count(package/class/sourcefile/sourceline) + count(package/subpackage/class/sourcefile/sourceline)"/></td>
- <td class="small">Statements: <xsl:value-of select="@statementcount"/></td>
- </tr>
- </table>
- <br/>
-
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr>
- <th width="100%" nowrap="nowrap"></th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="350" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <tr class="a">
- <td><b>Project <xsl:value-of select="$document.title"/></b></td>
- <xsl:call-template name="stats.formatted"/>
- </tr>
- <tr><td colspan="4"><br/></td></tr>
- </table>
-
- <table class="log sortable" cellpadding="5" cellspacing="0" width="100%">
- <tr>
- <th width="100%">Packages</th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="350" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <!-- display packages and sort them via their coverage rate -->
- <xsl:for-each select="package">
- <xsl:sort data-type="number" select="@totalcovered div @totalcount"/>
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><a href="{translate(@name,'._','//')}/package-summary.html"><xsl:value-of select="@name"/></a></td>
- <xsl:call-template name="stats.formatted"/>
- </tr>
- </xsl:for-each>
- </table>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-<!--
- detailed info for a package. It will output the list of classes
-, the summary page, and the info for each class
--->
-<xsl:template match="package" mode="write">
- <xsl:variable name="package.dir">
- <xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'._','//')"/></xsl:if>
- <xsl:if test="@name = ''">.</xsl:if>
- </xsl:variable>
-
- <!-- create a classes-list.html in the package directory -->
- <exsl:document href="efile://{$output.dir}/{$package.dir}/package-frame.html">
- <xsl:apply-templates select="." mode="classes.list"/>
- </exsl:document>
-
- <!-- create a package-summary.html in the package directory -->
- <exsl:document href="efile://{$output.dir}/{$package.dir}/package-summary.html">
- <xsl:apply-templates select="." mode="package.summary"/>
- </exsl:document>
-
- <!-- for each class in package, creates a @name.html -->
- <xsl:for-each select="./class">
- <exsl:document href="efile://{$output.dir}/{$package.dir}/{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </exsl:document>
- </xsl:for-each>
-
- <!-- for each class in subpackage, creates a @name.html -->
- <xsl:for-each select="subpackage">
- <xsl:variable name="subpackage.dir">
- <xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'._','//')"/></xsl:if>
- <xsl:if test="@name = ''">.</xsl:if>
- </xsl:variable>
- <xsl:for-each select="./class">
- <exsl:document href="efile://{$output.dir}/{$package.dir}/{$subpackage.dir}/{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </exsl:document>
- </xsl:for-each>
- </xsl:for-each>
-</xsl:template>
-
-<!--
- detailed info for a subpackage. It will output the list of classes and the summary page
--->
-<xsl:template match="subpackage" mode="write">
- <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
-
- <xsl:variable name="package.dir">
- <xsl:if test="not($package.name = '')"><xsl:value-of select="translate($package.name,'._','//')"/></xsl:if>
- <xsl:if test="$package.name = ''">.</xsl:if>
- </xsl:variable>
-
- <xsl:variable name="subpackage.dir">
- <xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'._','//')"/></xsl:if>
- <xsl:if test="@name = ''">.</xsl:if>
- </xsl:variable>
-
- <!-- create a classes-list.html in the subpackage directory -->
- <exsl:document href="efile://{$output.dir}/{$package.dir}/{$subpackage.dir}/subpackage-frame.html">
- <xsl:apply-templates select="." mode="classes.list"/>
- </exsl:document>
-
- <!-- create a subpackage-summary.html in the subpackage directory -->
- <exsl:document href="efile://{$output.dir}/{$package.dir}/{$subpackage.dir}/subpackage-summary.html">
- <xsl:apply-templates select="." mode="subpackage.summary"/>
- </exsl:document>
-</xsl:template>
-
-<!-- list of classes in a package -->
-<xsl:template match="package" mode="classes.list">
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="@name"/>
- </xsl:call-template>
- </head>
- <body>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
- </td>
- </tr>
- </table>
-
- <h2>Subpackages</h2>
- <table width="100%">
- <xsl:for-each select="subpackage">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{translate(@name,'._','//')}/subpackage-summary.html" target="classFrame"><xsl:value-of select="@name"/></a>
- <xsl:choose>
- <xsl:when test="@totalcount=0">
- <i> (-)</i>
- </xsl:when>
- <xsl:otherwise>
- <i> (<xsl:value-of select="format-number(@totalcovered div @totalcount, '0.0%')"/>)</i>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- </xsl:for-each>
- </table>
-
- <h2>Classes</h2>
- <table width="100%">
- <xsl:for-each select="class">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- <xsl:choose>
- <xsl:when test="@totalcount=0">
- <i> (-)</i>
- </xsl:when>
- <xsl:otherwise>
- <i>(<xsl:value-of select="format-number(@totalcovered div @totalcount, '0.0%')"/>)</i>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<!-- list of classes in a subpackage -->
-<xsl:template match="subpackage" mode="classes.list">
- <xsl:variable name="fullpackage.name">
- <xsl:value-of select="(ancestor::package)[last()]/@name"/>
- <!-- append subpackage name if exists -->
- <xsl:if test="not(@name='')">
- <xsl:choose>
- <!-- determine path separator -->
- <xsl:when test="contains((ancestor::package)[last()]/@name, '_') or contains(@name, '_')">
- <xsl:text>_</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>.</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="@name"/>
- </xsl:if>
- </xsl:variable>
-
- <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
-
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$fullpackage.name"/>
- </xsl:call-template>
- </head>
- <body>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <H2>
- <xsl:call-template name="create.package-summary.link">
- <xsl:with-param name="package.name" select="$package.name"/>
- <xsl:with-param name="fullpackage.name" select="$fullpackage.name"/>
- </xsl:call-template>::<a href="subpackage-summary.html" target="classFrame"><xsl:value-of select="@name"/></a>
- </H2>
- </td>
- </tr>
- </table>
-
- <h2>Classes</h2>
- <table width="100%">
- <xsl:for-each select="class">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- <xsl:choose>
- <xsl:when test="@totalcount=0">
- <i> (-)</i>
- </xsl:when>
- <xsl:otherwise>
- <i> (<xsl:value-of select="format-number(@totalcovered div @totalcount, '0.0%')"/>)</i>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<!-- summary of a package -->
-<xsl:template match="package" mode="package.summary">
- <html>
- <head>
- <title>Coverage Results for <xsl:value-of select="@name"/></title>
- <xsl:if test="$output.sorttable = 1">
- <script language="JavaScript" src="http://www.phing.info/support/sorttable.js"/>
- </xsl:if>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="@name"/>
- </xsl:call-template>
- </head>
- <!-- when loading this package, it will open the classes into the frame -->
- <body onload="open('package-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr class="a">
- <td class="small">Subpackages: <xsl:value-of select="count(subpackage)"/></td>
- <td class="small">Classes: <xsl:value-of select="count(class) + count(subpackage/class)"/></td>
- <td class="small">Methods: <xsl:value-of select="@methodcount"/></td>
- <td class="small">LOC: <xsl:value-of select="count(class/sourcefile/sourceline) + count(subpackage/class/sourcefile/sourceline)"/></td>
- <td class="small">Statements: <xsl:value-of select="@statementcount"/></td>
- </tr>
- </table>
- <br/>
-
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr>
- <th width="100%">Package</th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="350" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <xsl:apply-templates select="." mode="stats"/>
- <tr>
- <td colspan="5"><br/></td>
- </tr>
- </table>
-
- <xsl:if test="count(subpackage) &gt; 0">
- <table class="log sortable" cellpadding="5" cellspacing="0" width="100%">
- <tr>
- <th width="100%">Subpackages</th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="350" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <xsl:apply-templates select="subpackage" mode="stats">
- <xsl:sort data-type="number" select="@totalcovered div @totalcount"/>
- </xsl:apply-templates>
- <tr>
- <td colspan="5"><br/></td>
- </tr>
- </table>
- </xsl:if>
-
- <xsl:if test="count(class) &gt; 0">
- <table class="log sortable" cellpadding="5" cellspacing="0" width="100%">
- <tr>
- <th width="100%">Classes</th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="350" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <xsl:apply-templates select="class" mode="stats">
- <xsl:sort data-type="number" select="@totalcovered div @totalcount"/>
- </xsl:apply-templates>
- </table>
- </xsl:if>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-<!-- summary of a subpackage -->
-<xsl:template match="subpackage" mode="subpackage.summary">
- <xsl:variable name="fullpackage.name">
- <xsl:value-of select="(ancestor::package)[last()]/@name"/>
- <!-- append subpackage name if exists -->
- <xsl:if test="not(@name='')">
- <xsl:choose>
- <!-- determine path separator -->
- <xsl:when test="contains((ancestor::package)[last()]/@name, '_') or contains(@name, '_')">
- <xsl:text>_</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>.</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="@name"/>
- </xsl:if>
- </xsl:variable>
-
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$fullpackage.name"/>
- </xsl:call-template>
- </head>
- <!-- when loading this subpackage, it will open the classes into the frame -->
- <body onload="open('subpackage-frame.html','classListFrame')">
- <xsl:call-template name="pageHeader"/>
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr class="a">
- <td class="small">Classes: <xsl:value-of select="count(class)"/></td>
- <td class="small">Methods: <xsl:value-of select="@methodcount"/></td>
- <td class="small">LOC: <xsl:value-of select="count(class/sourcefile/sourceline)"/></td>
- <td class="small">Statements: <xsl:value-of select="@statementcount"/></td>
- </tr>
- </table>
- <br/>
-
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr>
- <th width="100%">Subpackage</th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="350" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <xsl:apply-templates select="." mode="stats.summary"/>
-
- <xsl:if test="count(class) &gt; 0">
- <tr>
- <td colspan="3"><br/></td>
- </tr>
- <tr>
- <th width="100%">Classes</th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="350" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <xsl:apply-templates select="class" mode="stats">
- <xsl:sort data-type="number" select="@totalcovered div @totalcount"/>
- </xsl:apply-templates>
- </xsl:if>
- </table>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-<!-- details of a class -->
-<xsl:template match="class" mode="class.details">
- <xsl:variable name="subpackage.name" select="(ancestor::subpackage)[last()]/@name"/>
-
- <xsl:variable name="fullpackage.name">
- <xsl:value-of select="(ancestor::package)[last()]/@name"/>
- <!-- append subpackage name if exists -->
- <xsl:if test="not($subpackage.name='')">
- <xsl:choose>
- <!-- determine path/package separator -->
- <xsl:when test="contains((ancestor::package)[last()]/@name, '_') or contains($subpackage.name, '_')">
- <xsl:text>_</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>.</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="$subpackage.name"/>
- </xsl:if>
- </xsl:variable>
-
- <html>
- <head>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$fullpackage.name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr class="a">
- <td class="small">Methods: <xsl:value-of select="@methodcount"/></td>
- <td class="small">LOC: <xsl:value-of select="count(sourcefile/sourceline)"/></td>
- <td class="small">Statements: <xsl:value-of select="@statementcount"/></td>
- </tr>
- </table>
-
- <!-- legend -->
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tbody>
- <tr>
- <td class="legendItem" width="0%">Legend:</td>
- <td class="legendValue" width="100%">
- <span class="legendCovered">executed</span>
- <span class="legendUncovered">not executed</span>
- <span class="legendDeadCode">dead code</span>
- </td>
- </tr>
- </tbody>
- </table>
-
- <!-- class summary -->
- <table class="log" cellpadding="5" cellspacing="0" width="100%">
- <tr>
- <th width="100%">Source file</th>
- <th>Statements</th>
- <th>Methods</th>
- <th width="250" colspan="2" nowrap="nowrap">Total coverage</th>
- </tr>
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><xsl:value-of select="sourcefile/@name"/></td>
- <xsl:call-template name="stats.formatted"/>
- </tr>
- </table>
- <table cellspacing="0" cellpadding="0" width="100%">
- <xsl:apply-templates select="sourcefile/sourceline"/>
- </table>
- <br/>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-<!-- Page Header -->
-<xsl:template name="pageHeader">
- <!-- jakarta logo -->
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td class="bannercell" rowspan="2">
- <a href="http://www.phing.info/">
- <img src="http://www.phing.info/images/phing.gif" alt="http://www.phing.info/" align="left" border="0"/>
- </a>
- </td>
- <td style="text-align:right"><h2>Source Code Coverage</h2></td>
- </tr>
- <tr>
- <td style="text-align:right">Designed for use with <a href='http://www.phpunit.de'>PHPUnit</a>, <a href='http://www.xdebug.org/'>Xdebug</a> and <a href='http://www.phing.info/'>Phing</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- Page Footer -->
-<xsl:template name="pageFooter">
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td class="small">Report generated at <xsl:value-of select="date:date-time()"/></td></tr>
- </table>
-</xsl:template>
-
-<xsl:template match="package" mode="stats">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><xsl:value-of select="@name"/></td>
- <xsl:call-template name="stats.formatted"/>
- </tr>
-</xsl:template>
-
-<xsl:template match="subpackage" mode="stats">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><a href="{translate(@name,'._','//')}/subpackage-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></td>
- <xsl:call-template name="stats.formatted"/>
- </tr>
-</xsl:template>
-
-<xsl:template match="subpackage" mode="stats.summary">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><xsl:value-of select="@name"/></td>
- <xsl:call-template name="stats.formatted"/>
- </tr>
-</xsl:template>
-
-<xsl:template match="class" mode="stats">
- <tr>
- <xsl:call-template name="alternate-row"/>
- <td><a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a></td>
- <xsl:call-template name="stats.formatted"/>
- </tr>
-</xsl:template>
-
-<xsl:template name="stats.formatted">
- <xsl:choose>
- <xsl:when test="@statementcount=0">
- <td>-</td>
- </xsl:when>
- <xsl:otherwise>
- <td>
- <xsl:value-of select="format-number(@statementscovered div @statementcount,'0.0%')"/>
- </td>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="@methodcount=0">
- <td>-</td>
- </xsl:when>
- <xsl:otherwise>
- <td>
- <xsl:value-of select="format-number(@methodscovered div @methodcount,'0.0%')"/>
- </td>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="@totalcount=0">
- <td>-</td>
- <td>
- <table cellspacing="0" cellpadding="0" border="0" width="100%" style="display: inline">
- <tr>
- <td class="empty" width="200" height="12">&#160;</td>
- </tr>
- </table>
- </td>
- </xsl:when>
- <xsl:otherwise>
- <td>
- <xsl:value-of select="format-number(@totalcovered div @totalcount,'0.0%')"/>
- </td>
- <td>
- <xsl:variable name="leftwidth"><xsl:value-of select="format-number((@totalcovered * 200) div @totalcount,'0')"/></xsl:variable>
- <xsl:variable name="rightwidth"><xsl:value-of select="format-number(200 - (@totalcovered * 200) div @totalcount,'0')"/></xsl:variable>
- <table cellspacing="0" cellpadding="0" border="0" width="100%" style="display: inline">
- <tr>
- <xsl:choose>
- <xsl:when test="$leftwidth=200">
- <td class="fullcover" width="200" height="12">&#160;</td>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="not($leftwidth=0)">
- <td class="covered" width="{$leftwidth}" height="12">&#160;</td>
- </xsl:if>
- <xsl:if test="not($rightwidth=0)">
- <td class="uncovered" width="{$rightwidth}" height="12">&#160;</td>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </tr>
- </table>
- </td>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="sourceline">
- <tr>
- <xsl:if test="@coveredcount>0">
- <td class="lineCountCovered"><xsl:value-of select="position()"/></td>
- <td class="lineCountCovered"><xsl:value-of select="@coveredcount"/></td>
- </xsl:if>
- <xsl:if test="@coveredcount=-1">
- <td class="lineCountUncovered"><xsl:value-of select="position()"/></td>
- <td class="coverageCountUncovered"></td>
- </xsl:if>
- <xsl:if test="@coveredcount=-2">
- <td class="lineCountDeadCode"><xsl:value-of select="position()"/></td>
- <td class="coverageCountDeadCode"></td>
- </xsl:if>
- <xsl:if test="@coveredcount=0">
- <td class="lineCount"><xsl:value-of select="position()"/></td>
- <td class="coverageCount"></td>
- </xsl:if>
-
- <xsl:if test="@coveredcount>0">
- <td class="srcLineCovered">
- <xsl:if test="@startclass=1">
- <xsl:attribute name="class">srcLineClassStart</xsl:attribute>
- </xsl:if>
- <pre class="srcLineCovered"><xsl:value-of select="."/></pre>
- </td>
- </xsl:if>
- <xsl:if test="@coveredcount=-1">
- <td class="srcLineUncovered">
- <xsl:if test="@startclass=1">
- <xsl:attribute name="class">srcLineClassStart</xsl:attribute>
- </xsl:if>
- <pre class="srcLineUncovered"><xsl:value-of select="."/></pre>
- </td>
- </xsl:if>
- <xsl:if test="@coveredcount=-2">
- <td class="srcLineDeadCode">
- <xsl:if test="@startclass=1">
- <xsl:attribute name="class">srcLineClassStart</xsl:attribute>
- </xsl:if>
- <pre class="srcLineDeadCode"><xsl:value-of select="."/></pre>
- </td>
- </xsl:if>
- <xsl:if test="@coveredcount=0">
- <td>
- <xsl:if test="@startclass=1">
- <xsl:attribute name="class">srcLineClassStart</xsl:attribute>
- </xsl:if>
- <pre class="srcLine"><xsl:value-of select="."/></pre>
- </td>
- </xsl:if>
- </tr>
-</xsl:template>
-
-<!--
- transform string like a.b.c to ../../../
- transform string like a_b_c to ../../../
- @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'.')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="contains($path,'_')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'_')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'.')) and not(contains($path,'_')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
-</xsl:template>
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
- <xsl:param name="package.name"/>
- <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-<!-- create the link to the package summary -->
-<xsl:template name="create.package-summary.link">
- <xsl:param name="package.name"/>
- <xsl:param name="fullpackage.name"/>
- <a target="classFrame">
- <xsl:attribute name="href">
- <xsl:if test="not($fullpackage.name = 'unnamed package')">
- <xsl:call-template name="path">
- <xsl:with-param name="path" select="$fullpackage.name"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:value-of select="translate($package.name,'._','//')"/>/package-summary.html</xsl:attribute>
- <xsl:value-of select="$package.name"/>
- </a>
-</xsl:template>
-
-<!-- alternated row style -->
-<xsl:template name="alternate-row">
-<xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">a</xsl:if>
- <xsl:if test="position() mod 2 = 0">b</xsl:if>
-</xsl:attribute>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/buildscripts/phing/etc/log.xsl b/buildscripts/phing/etc/log.xsl
deleted file mode 100755
index f0ef4695..00000000
--- a/buildscripts/phing/etc/log.xsl
+++ /dev/null
@@ -1,216 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<!--
- Copyright 2000-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
-<!--
-
- The purpose have this XSL is to provide a nice way to look at the output
- from the Ant XmlLogger (ie: ant -listener org.apache.tools.ant.XmlLogger )
-
- @author <a href="mailto:michiel.rook@gmail.com>Michiel Rook</a>
- @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
-
--->
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-<xsl:template match="/">
-<html>
- <head>
- <title>Phing Build Log</title>
- <style type="text/css">
- .bannercell {
- border: 0px;
- padding: 0px;
- }
- body {
- margin: 0;
- font:normal 100% arial,helvetica,sanserif;
- background-color:#FFFFFF;
- color:#000000;
- }
- table.status {
- font:bold 80% arial,helvetica,sanserif;
- background-color:#525D76;
- color:#ffffff;
- }
- table.log tr td, tr th {
- font-size: 80%;
- }
- .error {
- color:red;
- }
- .warn {
- color:brown;
- }
- .info {
- color:gray;
- }
- .debug{
- color:gray;
- }
- .failed {
- font-size:80%;
- background-color: red;
- color:#FFFFFF;
- font-weight: bold
- }
- .complete {
- font-size:80%;
- background-color: #525D76;
- color:#FFFFFF;
- font-weight: bold
- }
- .a td {
- background: #efefef;
- }
- .b td {
- background: #fff;
- }
- th, td {
- text-align: left;
- vertical-align: top;
- }
- th {
- background: #ccc;
- color: black;
- }
- table, th, td {
- border: none
- }
- h3 {
- font:bold 80% arial,helvetica,sanserif;
- background: #525D76;
- color: white;
- text-decoration: none;
- padding: 5px;
- margin-right: 2px;
- margin-left: 2px;
- margin-bottom: 0;
- }
- a {
- color: #003399;
- }
- a:hover {
- color: #888888;
- }
- </style>
- </head>
- <body>
- <!-- jakarta logo -->
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tr>
- <td valign="top" class="bannercell">
- <a href="http://phing.info/">
- <img src="http://phing.info/images/phing.gif" alt="http://phing.info/" align="left" border="0"/>
- </a>
- </td>
- <td style="text-align:right;vertical-align:bottom">
- <a href="http://phing.info/">Phing</a>
- </td>
- </tr>
- </table>
-
- <table border="0" width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- </table>
-
- <xsl:apply-templates select="build"/>
-
- <!-- FOOTER -->
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td>
- <div align="center"><font color="#525D76" size="-1"><em>
- <a href="http://phing.info/">Phing</a>
- </em></font></div>
- </td></tr>
- </table>
- </body>
-</html>
-</xsl:template>
-
-<xsl:template match="build">
- <!-- build status -->
- <table width="100%">
- <xsl:attribute name="class">
- <xsl:if test="@error">failed</xsl:if>
- <xsl:if test="not(@error)">complete</xsl:if>
- </xsl:attribute>
- <tr>
- <xsl:if test="@error">
- <td nowrap="yes">Build Failed</td>
- </xsl:if>
- <xsl:if test="not(@error)">
- <td nowrap="yes">Build Complete</td>
- </xsl:if>
- <td style="text-align:right" nowrap="yes">Total Time: <xsl:value-of select="@time"/></td>
- </tr>
- <tr>
- <td colspan="2">
- <xsl:if test="@error">
- <tt><xsl:value-of select="@error"/></tt><br/>
- <i style="font-size:80%">See the <a href="#stacktrace" alt="Click for details">stacktrace</a>.</i>
- </xsl:if>
- </td>
- </tr>
- </table>
- <table border="1" cellspacing="2" cellpadding="3" width="100%" style="font-size:80%">
- <tr class="a"><td width="1">phing.file</td><td><xsl:value-of select="substring-after(//message[contains(text(),'phing.file')], '->')"/></td></tr>
- <tr class="b"><td width="1">phing.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'phing.version')], '->')"/></td></tr>
- </table>
- <!-- build information -->
- <h3>Build events</h3>
- <table class="log" border="1" cellspacing="2" cellpadding="3" width="100%">
- <tr>
- <th nowrap="yes" align="left" width="1%">target</th>
- <th nowrap="yes" align="left" width="1%">task</th>
- <th nowrap="yes" align="left">message</th>
- </tr>
- <xsl:apply-templates select=".//message[@priority != 'debug']"/>
- </table>
- <p>
- <!-- stacktrace -->
- <xsl:if test="stacktrace">
- <a name="stacktrace"/>
- <h3>Error details</h3>
- <table width="100%">
- <tr><td>
- <pre><xsl:value-of select="stacktrace"/></pre>
- </td></tr>
- </table>
- </xsl:if>
- </p>
-</xsl:template>
-
-<!-- report every message but those with debug priority -->
-<xsl:template match="message[@priority!='debug']">
- <tr valign="top">
- <!-- alternated row style -->
- <xsl:attribute name="class">
- <xsl:if test="position() mod 2 = 1">a</xsl:if>
- <xsl:if test="position() mod 2 = 0">b</xsl:if>
- </xsl:attribute>
- <td nowrap="yes" width="1%"><xsl:value-of select="../../@name"/></td>
- <td nowrap="yes" style="text-align:right" width="1%">[ <xsl:value-of select="../@name"/> ]</td>
- <td class="{@priority}" nowrap="yes">
- <xsl:value-of select="text()"/>
- </td>
- </tr>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/buildscripts/phing/etc/phing-grammar.rng b/buildscripts/phing/etc/phing-grammar.rng
deleted file mode 100644
index 7f0351ce..00000000
--- a/buildscripts/phing/etc/phing-grammar.rng
+++ /dev/null
@@ -1,5015 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- -File $Id: cf64bd85a79d1a3be75c42eab1ac6100a05f3a30 $
- -License GNU LGPL (http://www.gnu.org/copyleft/lgpl.html)
- -Author Johan Persson, johanp@aditus.nu
--->
-<!--
- ==================================================================================
-
- Relax-NG XML Schema For Phing build XML scripts. (See http://www.relaxng.org)
-
- The purpose of this schema is to facilitate the writing of correct Phing build
- scripts in a XML and schema aware editor. The schema will help the editor verify
- the input as well as providing tag completion making it easier and faster to
- write correct Phing build scripts.
-
- It can also be used together with one of the many existing R-NG validators to
- validate a Phing script for adherence to the Phing syntax, like a "lint"
- for Phing scripts.
-
- Note however that it is actually impossible to write a generic schema for
- Phing since it is possible to define new elements dynamically which means
- that the grammar can never be complete.
-
- However, in a particular setup only a few custom tasks is usually
- used. This is easy to add att the end of this schema so it can be extended to
- include those additional elements as well.
-
- ==================================================================================
--->
-<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
- xmlns="http://relaxng.org/ns/structure/1.0"
- datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
-
- <start>
- <ref name="project"/>
- </start>
-
- <!--
- ===========================================================================================================
- Entry point "project" element
- ===========================================================================================================
- -->
- <define name="project">
- <element name="project">
- <interleave>
- <attribute name="name"/>
- <optional>
- <attribute name="basedir"/>
- </optional>
- <attribute name="default"/>
- <optional>
- <attribute name="description"/>
- </optional>
- <optional>
- <attribute name="phingVersion"/>
- </optional>
- </interleave>
-
- <interleave>
- <zeroOrMore>
- <ref name="target"/>
- </zeroOrMore>
- <ref name="coretasks"/>
- <ref name="optionaltasks"/>
- <ref name="customtasks"/>
- <ref name="coretypes"/>
- </interleave>
-
- </element>
- </define>
-
- <!--
- ===========================================================================================================
- Macros for all built in tasks (both core and optional) as well as for core complex types
- ===========================================================================================================
- -->
-
- <define name="coretypes">
- <zeroOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="filelist"/>
- <ref name="path"/>
- <ref name="classpath"/>
- <ref name="excludes"/>
- </choice>
- </zeroOrMore>
- </define>
-
- <define name="optionaltasks">
- <zeroOrMore>
- <choice>
- <ref name="apigen"/>
- <ref name="coverage-merger"/>
- <ref name="coverage-report"/>
- <ref name="coverage-setup"/>
- <ref name="dbdeploy"/>
- <ref name="exportproperties"/>
- <ref name="filterchain"/>
- <ref name="ftpdeploy"/>
- <ref name="gitinit"/>
- <ref name="gitclone"/>
- <ref name="gitgc"/>
- <ref name="gitbranch"/>
- <ref name="gitfetch"/>
- <ref name="gitcheckout"/>
- <ref name="gitmerge"/>
- <ref name="gitpull"/>
- <ref name="gitpush"/>
- <ref name="gittag"/>
- <ref name="gitlog"/>
- <ref name="httpget"/>
- <ref name="httprequest"/>
- <ref name="headfilter"/>
- <ref name="iconvfilter"/>
- <ref name="ioncubeencoder"/>
- <ref name="ioncubelicense"/>
- <ref name="jsllint"/>
- <ref name="jsmin"/>
- <ref name="mail"/>
- <ref name="linecontains"/>
- <ref name="pdosqlexec"/>
- <ref name="pearpkg"/>
- <ref name="pearpkg2"/>
- <ref name="phpcodesniffer"/>
- <ref name="phpdepend"/>
- <ref name="phpdoc"/>
- <ref name="phpdocumentor"/>
- <ref name="phpdocumentorexternal"/>
- <ref name="phplint"/>
- <ref name="linecontainsregexp"/>
- <ref name="phpunit"/>
- <ref name="phkpackage"/>
- <ref name="phpmd"/>
- <ref name="prefixlines"/>
- <ref name="phpunitreport"/>
- <ref name="rst"/>
- <ref name="s3put"/>
- <ref name="s3get"/>
- <ref name="scp"/>
- <ref name="ssh"/>
- <ref name="simpletest"/>
- <ref name="striplinecomments"/>
- <ref name="stripphpcomments"/>
- <ref name="symlink"/>
- <ref name="svncheckout"/>
- <ref name="svnexport"/>
- <ref name="svncommit"/>
- <ref name="svncopy"/>
- <ref name="svninfo"/>
- <ref name="svnlastrevision"/>
- <ref name="svnlog"/>
- <ref name="svnlist"/>
- <ref name="svnupdate"/>
- <ref name="svnswitch"/>
- <ref name="tabtospace"/>
- <ref name="tabtospaces"/>
- <ref name="tailfilter"/>
- <ref name="tar"/>
- <ref name="tidyfilter"/>
- <ref name="untar"/>
- <ref name="unzip"/>
- <ref name="version"/>
- <ref name="xincludefilter"/>
- <ref name="xsltfilter"/>
- <ref name="xmllint"/>
- <ref name="xmlproperty"/>
- <ref name="zendcodeanalyzer"/>
- <ref name="zendguardencode"/>
- <ref name="zendguardlicense"/>
- <ref name="zip"/>
- <ref name="contains"/>
- <ref name="pharpackage"/>
- <ref name="filehash"/>
- <ref name="filesize"/>
- </choice>
- </zeroOrMore>
- </define>
-
- <define name="customtasks">
- <zeroOrMore>
- <choice>
- <ref name="highlightsrc"/>
- </choice>
- </zeroOrMore>
- </define>
-
- <define name="coretasks">
- <zeroOrMore>
- <choice>
- <ref name="adhoc"/>
- <ref name="adhoc-task"/>
- <ref name="adhoc-type"/>
- <ref name="append"/>
- <ref name="available"/>
- <ref name="phingcall"/>
- <ref name="phpeval"/>
- <ref name="condition"/>
- <ref name="copy"/>
- <ref name="cvs"/>
- <ref name="cvspass"/>
- <ref name="chmod"/>
- <ref name="chown"/>
- <ref name="delete"/>
- <ref name="echo"/>
- <ref name="warn"/>
- <ref name="exec"/>
- <ref name="exit"/>
- <ref name="foreach"/>
- <ref name="if"/>
- <ref name="includepath"/>
- <ref name="input"/>
- <ref name="mkdir"/>
- <ref name="move"/>
- <ref name="phing"/>
- <ref name="php"/>
- <ref name="property"/>
- <ref name="propertyprompt"/>
- <ref name="reflexive"/>
- <ref name="resolvepath"/>
- <ref name="taskdef"/>
- <ref name="touch"/>
- <ref name="tstamp"/>
- <ref name="typedef"/>
- <ref name="uptodate"/>
- <ref name="xslt"/>
- <ref name="loadfile"/>
- <ref name="import"/>
- </choice>
- </zeroOrMore>
- </define>
-
- <!--
- ===========================================================================================================
- Target element.
- ===========================================================================================================
- -->
- <define name="target">
- <element name="target">
-
- <!-- Attributes for target element -->
- <interleave>
- <attribute name="name"/>
- <optional>
- <attribute name="depends"/>
- </optional>
- <optional>
- <attribute name="if"/>
- </optional>
- <optional>
- <attribute name="unless"/>
- </optional>
- <optional>
- <attribute name="description"/>
- </optional>
- </interleave>
- <interleave>
- <ref name="coretasks"/>
- <ref name="coretypes"/>
- <ref name="optionaltasks"/>
- <ref name="customtasks"/>
- </interleave>
- </element>
- </define>
-
- <!--
- ===========================================================================================================
- Core types
- ===========================================================================================================
- -->
-
- <define name="filelist">
- <element name="filelist">
- <interleave>
- <attribute name="dir"/>
- <choice>
- <attribute name="files"/>
- <attribute name="listfile"/>
- </choice>
- </interleave>
- </element>
- </define>
-
- <define name="class">
- <element name="class">
- <attribute name="name"/>
- </element>
- </define>
- <define name="method">
- <element name="method">
- <attribute name="name"/>
- </element>
- </define>
- <define name="file">
- <element name="file">
- <attribute name="name"/>
- </element>
- </define>
-
-
- <define name="excludes">
- <element name="excludes">
- <oneOrMore>
- <choice>
- <ref name="class"/>
- <ref name="method"/>
- <ref name="file"/>
- </choice>
- </oneOrMore>
- </element>
- </define>
-
- <define name="fileset">
- <element name="fileset">
- <interleave>
- <choice>
- <attribute name="refid">
- <data type="IDREF"/>
- </attribute>
- <group>
- <attribute name="dir"/>
- <optional>
- <choice>
- <attribute name="id">
- <data type="ID"/>
- </attribute>
- <attribute name="refid">
- <data type="IDREF"/>
- </attribute>
- </choice>
- </optional>
- <zeroOrMore>
- <choice>
- <ref name="include"/>
- <ref name="exclude"/>
- </choice>
- </zeroOrMore>
- </group>
- </choice>
- </interleave>
- </element>
- </define>
-
- <define name="path">
- <element name="path">
- <optional>
- <attribute name="id">
- <data type="ID"/>
- </attribute>
- <optional>
- <attribute name="dir"/>
- <attribute name="path"/>
- </optional>
- </optional>
- <choice>
- <text/>
- <zeroOrMore>
- <choice>
- <ref name="pathelement"/>
- <ref name="fileset"/>
- <ref name="dirset"/>
- </choice>
- </zeroOrMore>
- </choice>
- </element>
- </define>
-
- <define name="classpath">
- <element name="classpath">
- <attribute name="refid">
- <data type="IDREF"/>
- </attribute>
- </element>
- </define>
-
- <define name="projdocfileset">
- <element name="projdocfileset">
- <attribute name="dir"/>
- <oneOrMore>
- <choice>
- <ref name="include"/>
- <ref name="exclude"/>
- </choice>
- </oneOrMore>
- </element>
- </define>
-
- <define name="dirset">
- <element name="dirset">
- <interleave>
- <optional>
- <attribute name="includes"/>
- </optional>
- <optional>
- <attribute name="includesfile"/>
- </optional>
- <optional>
- <attribute name="excludes"/>
- </optional>
- <optional>
- <attribute name="excludesfile"/>
- </optional>
- <optional>
- <attribute name="casesensitive" a:defaultValue="yes">
- <choice>
- <value>yes</value>
- <value>no</value>
- </choice>
- </attribute>
- </optional>
- <optional>
- <attribute name="followsymlinks" a:defaultValue="yes">
- <choice>
- <value>yes</value>
- <value>no</value>
- </choice>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <choice>
- <ref name="include"/>
- <ref name="exclude"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="include">
- <element name="include">
- <attribute name="name"/>
- </element>
- </define>
-
- <define name="exclude">
- <element name="exclude">
- <attribute name="name"/>
- </element>
- </define>
-
- <define name="pathelement">
- <element name="pathelement">
- <attribute name="dir"/>
- </element>
- </define>
-
- <define name="arg">
- <element name="arg">
- <choice>
- <attribute name="value"/>
- <attribute name="file"/>
- <attribute name="path"/>
- <attribute name="line"/>
- </choice>
- </element>
- </define>
-
-
- <!--
- ===========================================================================================================
- Core Tasks
- ===========================================================================================================
- -->
-
- <define name="adhoc">
- <element name="adhoc">
- <text/>
- </element>
- </define>
-
- <define name="adhoc-task">
- <element name="adhoc-task">
- <attribute name="name"/>
- </element>
- </define>
-
- <define name="adhoc-type">
- <element name="adhoc-type">
- <attribute name="name"/>
- </element>
- </define>
-
- <define name="append">
- <element name="append">
- <attribute name="destFile"/>
- <optional>
- <attribute name="text"/>
- </optional>
- <interleave>
- <optional>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <interleave>
- <optional>
- <ref name="fileset"/>
- </optional>
- <optional>
- <ref name="filelist"/>
- </optional>
- </interleave>
- </oneOrMore>
- </choice>
- </optional>
- <optional>
- <ref name="filterchain"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="available">
- <element name="available">
- <interleave>
- <attribute name="property"/>
- <optional>
- <attribute name="value"/>
- </optional>
- <choice>
- <attribute name="file"/>
- <attribute name="resource"/>
- </choice>
- <optional>
- <attribute name="type"/>
- </optional>
- <optional>
- <attribute name="filepath"/>
- </optional>
- <optional>
- <attribute name="followSymlinks">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="condition">
- <element name="condition">
- <attribute name="property"/>
- <optional>
- <attribute name="value"/>
- </optional>
- <optional>
- <choice>
- <ref name="or"/>
- <ref name="and"/>
- </choice>
- </optional>
- </element>
- </define>
-
- <define name="delete">
- <element name="delete">
- <interleave>
- <optional>
- <choice>
- <attribute name="file"/>
- <attribute name="dir"/>
- </choice>
- </optional>
- <optional>
- <attribute name="verbose">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="failonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="includeemptydirs">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
-
- <define name="warn">
- <element name="warn">
- <interleave>
- <choice>
- <attribute name="msg"/>
- <attribute name="message"/>
- </choice>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="append">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="level"/>
- </optional>
- </interleave>
- </element>
- </define>
-
-
- <define name="echo">
- <element name="echo">
- <interleave>
- <choice>
- <attribute name="msg"/>
- <attribute name="message"/>
- <text/>
- <ref name="fileset"/>
- </choice>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="append">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="level"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="exec">
- <element name="exec">
- <interleave>
- <oneOrMore>
- <choice>
- <attribute name="command"/>
- <attribute name="executable"/>
- </choice>
- </oneOrMore>
- <optional>
- <attribute name="passthru">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="checkreturn">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="dir"/>
- </optional>
- <optional>
- <attribute name="os"/>
- </optional>
- <optional>
- <attribute name="escape">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="spawn">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="returnProperty"/>
- </optional>
- <optional>
- <attribute name="outputProperty"/>
- </optional>
- <optional>
- <attribute name="logoutput"/>
- </optional>
- <optional>
- <attribute name="output"/>
- </optional>
- <optional>
- <attribute name="error"/>
- </optional>
- <optional>
- <attribute name="level">
- <choice>
- <value>error</value>
- <value>warning</value>
- <value>info</value>
- <value>verbose</value>
- <value>debug</value>
- </choice>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="arg"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="copy">
- <element name="copy">
- <interleave>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="filelist"/>
- </choice>
- </oneOrMore>
- </choice>
- <choice>
- <attribute name="tofile"/>
- <attribute name="todir"/>
- </choice>
- <optional>
- <attribute name="overwrite">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <choice>
- <attribute name="tstamp">
- <data type="boolean"/>
- </attribute>
- <attribute name="preservelastmodified">
- <data type="boolean"/>
- </attribute>
- </choice>
- </optional>
- <optional>
- <attribute name="includeemptydirs">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="mode">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <choice>
- <ref name="mapper"/>
- <ref name="filterchain"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="argument">
- <element name="argument">
- <choice>
- <attribute name="value"/>
- <attribute name="line"/>
- </choice>
- </element>
- </define>
-
- <define name="commandline">
- <element name="commandline">
- <attribute name="executable"/>
- <oneOrMore>
- <ref name="argument"/>
- </oneOrMore>
- </element>
- </define>
-
- <define name="cvs">
- <element name="cvs">
- <interleave>
- <attribute name="dest"/>
- <attribute name="modules"/>
- <optional>
- <attribute name="cvsRoot"/>
- </optional>
- <optional>
- <attribute name="cvsRsh"/>
- </optional>
- <optional>
- <attribute name="port">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="passfile"/>
- </optional>
- <optional>
- <attribute name="tag"/>
- </optional>
- <optional>
- <attribute name="date"/>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="noexec">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="setfailonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="compression">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="compressionlevel">
- <data type="unsignedByte"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="output"/>
- </optional>
- <optional>
- <attribute name="error"/>
- </optional>
- <optional>
- <attribute name="command"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="cvspass">
- <element name="cvspass">
- <interleave>
- <attribute name="password"/>
- <attribute name="cvsRoot"/>
- <optional>
- <attribute name="passFile"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="exit">
- <element name="exit">
- <interleave>
- <optional>
- <choice>
- <attribute name="message"/>
- <attribute name="msg"/>
- </choice>
- </optional>
- <optional>
- <attribute name="if"/>
- </optional>
- <optional>
- <attribute name="unless"/>
- </optional>
- <text/>
- </interleave>
- </element>
- </define>
-
- <define name="foreach">
- <element name="foreach">
- <interleave>
- <attribute name="target"/>
- <attribute name="param"/>
- <optional>
- <attribute name="list"/>
- </optional>
- <optional>
- <attribute name="delimiter"/>
- </optional>
- </interleave>
- <interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- <zeroOrMore>
- <ref name="mapper"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
- <define name="if">
- <element name="if">
- <choice>
- <ref name="not"/>
- <ref name="equals"/>
- <ref name="or"/>
- <ref name="and"/>
- <ref name="isfalse"/>
- <ref name="istrue"/>
- <ref name="isset"/>
- <ref name="contains_cond"/>
- <ref name="referenceexists"/>
- </choice>
- <ref name="then"/>
- <zeroOrMore>
- <ref name="elseif"/>
- </zeroOrMore>
- <optional>
- <ref name="else"/>
- </optional>
- </element>
- </define>
-
- <define name="not">
- <element name="not">
- <choice>
- <ref name="equals"/>
- <ref name="or"/>
- <ref name="and"/>
- <ref name="isfalse"/>
- <ref name="istrue"/>
- <ref name="isset"/>
- <ref name="contains_cond"/>
- <ref name="referenceexists"/>
- </choice>
- </element>
- </define>
-
- <define name="istrue">
- <element name="istrue">
- <attribute name="value"/>
- </element>
- </define>
-
- <define name="isset">
- <element name="isset">
- <attribute name="property"/>
- </element>
- </define>
-
- <define name="isfalse">
- <element name="isfalse">
- <attribute name="value"/>
- </element>
- </define>
-
- <define name="referenceexists">
- <element name="referenceexists">
- <attribute name="ref"/>
- </element>
- </define>
-
- <define name="contains_cond">
- <element name="contains">
- <interleave>
- <attribute name="string"/>
- <attribute name="substring"/>
- <optional>
- <attribute name="casesensitive"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="equals">
- <element name="equals">
- <interleave>
- <attribute name="arg1"/>
- <attribute name="arg2"/>
- <optional>
- <attribute name="casesensitive"/>
- </optional>
- <optional>
- <attribute name="trim"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="then">
- <element name="then">
- <interleave>
- <ref name="coretasks"/>
- <ref name="optionaltasks"/>
- <ref name="customtasks"/>
- <ref name="coretypes"/>
- </interleave>
- </element>
- </define>
-
- <define name="elseif">
- <choice>
- <ref name="equals"/>
- <ref name="or"/>
- <ref name="and"/>
- <ref name="isfalse"/>
- <ref name="istrue"/>
- <ref name="isset"/>
- <ref name="contains_cond"/>
- <ref name="referenceexists"/>
- </choice>
- <interleave>
- <ref name="coretasks"/>
- <ref name="optionaltasks"/>
- <ref name="customtasks"/>
- <ref name="coretypes"/>
- </interleave>
- </define>
-
- <define name="else">
- <element name="else">
- <interleave>
- <ref name="coretasks"/>
- <ref name="optionaltasks"/>
- <ref name="customtasks"/>
- <ref name="coretypes"/>
- </interleave>
- </element>
- </define>
-
- <define name="includepath">
- <element name="includepath">
- <choice>
- <attribute name="classpath"/>
- <attribute name="classpathref"/>
- </choice>
- </element>
- </define>
-
- <define name="or">
- <element name="or">
- <oneOrMore>
- <interleave>
- <ref name="property"/>
- <ref name="and"/>
- <ref name="isfalse"/>
- <ref name="istrue"/>
- <ref name="isset"/>
- <ref name="contains_cond"/>
- <ref name="referenceexists"/>
- </interleave>
- </oneOrMore>
- </element>
- </define>
-
- <define name="and">
- <element name="and">
- <oneOrMore>
- <interleave>
- <ref name="property"/>
- <ref name="or"/>
- <ref name="isfalse"/>
- <ref name="istrue"/>
- <ref name="isset"/>
- <ref name="contains_cond"/>
- <ref name="referenceexists"/>
- </interleave>
- </oneOrMore>
- </element>
- </define>
-
- <define name="input">
- <element name="input">
- <interleave>
- <attribute name="propertyName"/>
- <attribute name="message"/>
- <optional>
- <attribute name="defaultValue"/>
- </optional>
- <optional>
- <attribute name="promptChar"/>
- </optional>
- <optional>
- <attribute name="validArgs"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="mkdir">
- <element name="mkdir">
- <attribute name="dir"/>
- <optional>
- <attribute name="mode">
- <data type="int"/>
- </attribute>
- </optional>
- </element>
- </define>
-
- <define name="move">
- <element name="move">
- <interleave>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="filelist"/>
- </choice>
- </oneOrMore>
- </choice>
- <choice>
- <attribute name="tofile"/>
- <attribute name="todir"/>
- </choice>
- <optional>
- <attribute name="overwrite">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <choice>
- <attribute name="tstamp">
- <data type="boolean"/>
- </attribute>
- <attribute name="preservelastmodified">
- <data type="boolean"/>
- </attribute>
- </choice>
- </optional>
- <optional>
- <attribute name="includeemptydirs">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="mode">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <choice>
- <ref name="mapper"/>
- <ref name="filterchain"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="phing">
- <element name="phing">
- <interleave>
- <attribute name="phingfile"/>
- <optional>
- <attribute name="inheritAll">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="inheritRefs">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="dir"/>
- </optional>
- <optional>
- <ref name="property"/>
- </optional>
- <optional>
- <attribute name="target"/>
- </optional>
- <optional>
- <attribute name="haltonfailure">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="phingcall">
- <element name="phingcall">
- <attribute name="target"/>
- <zeroOrMore>
- <choice>
- <ref name="property"/>
- <ref name="param"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="phpeval">
- <element name="phpeval">
- <interleave>
- <choice>
- <attribute name="function"/>
- <attribute name="expression"/>
- </choice>
- <optional>
- <attribute name="class"/>
- </optional>
- <optional>
- <attribute name="returnProperty"/>
- </optional>
- <optional>
- <attribute name="level">
- <choice>
- <value>error</value>
- <value>warning</value>
- <value>info</value>
- <value>verbose</value>
- <value>debug</value>
- </choice>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="php">
- <element name="php">
- <interleave>
- <choice>
- <attribute name="function"/>
- <attribute name="expression"/>
- </choice>
- <optional>
- <attribute name="class"/>
- </optional>
- <optional>
- <attribute name="returnProperty"/>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="param"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="property">
- <element name="property">
- <interleave>
- <choice>
- <group>
- <attribute name="name"/>
- <attribute name="value"/>
- </group>
- <attribute name="file"/>
- <optional>
- <attribute name="environment"/>
- </optional>
- </choice>
- <optional>
- <attribute name="override">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="prefix"/>
- </optional>
- <optional>
- <attribute name="refid"/>
- </optional>
- <optional>
- <attribute name="fallback"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="propertyprompt">
- <element name="propertyprompt">
- <interleave>
- <attribute name="propertyName"/>
- <attribute name="promptText"/>
- <optional>
- <attribute name="promptCharacter"/>
- </optional>
- <optional>
- <attribute name="defaultValue"/>
- </optional>
- <optional>
- <attribute name="useExistingValue"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="reflexive">
- <element name="reflexive">
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- <zeroOrMore>
- <ref name="filterchain"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="resolvepath">
- <element name="resolvepath">
- <interleave>
- <attribute name="file"/>
- <attribute name="propertyName"/>
- <optional>
- <attribute name="dir"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="symlink">
- <element name="symlink">
- <choice>
- <attribute name="target"/>
- <ref name="fileset"/>
- </choice>
- <attribute name="link"/>
- <optional>
- <attribute name="overwrite">
- <data type="boolean"/>
- </attribute>
- </optional>
- </element>
- </define>
-
- <define name="taskdef">
- <element name="taskdef">
- <interleave>
- <choice>
- <group>
- <attribute name="classname"/>
- <attribute name="name"/>
- </group>
- <attribute name="file"/>
- </choice>
- <optional>
- <attribute name="classpath"/>
- </optional>
- <optional>
- <attribute name="classpathref"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="touch">
- <element name="touch">
- <interleave>
- <choice>
- <attribute name="file"/>
- <ref name="fileset"/>
- </choice>
- <optional>
- <attribute name="datetime"/>
- </optional>
- <optional>
- <attribute name="millis">
- <data type="int"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="tstamp">
- <element name="tstamp">
- <interleave>
- <optional>
- <attribute name="prefix"/>
- </optional>
- <optional>
- <element name="format">
- <interleave>
- <attribute name="property"/>
- <attribute name="pattern"/>
- <optional>
- <attribute name="locale"/>
- </optional>
- </interleave>
- </element>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="typedef">
- <element name="typedef">
- <interleave>
- <attribute name="classname"/>
- <attribute name="name"/>
- <optional>
- <attribute name="classpath"/>
- </optional>
- <optional>
- <attribute name="classpathref"/>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="classpath"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="uptodate">
- <element name="uptodate">
- <interleave>
- <attribute name="property"/>
- <optional>
- <attribute name="value"/>
- </optional>
- <choice>
- <attribute name="srcfile"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- <choice>
- <attribute name="targetfile"/>
- <oneOrMore>
- <ref name="mapper"/>
- </oneOrMore>
- </choice>
- </interleave>
- </element>
- </define>
-
- <define name="xslt">
- <element name="xslt">
- <interleave>
- <attribute name="style"/>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="filelist"/>
- </choice>
- </oneOrMore>
- </choice>
- <choice>
- <attribute name="tofile"/>
- <attribute name="todir"/>
- </choice>
- <optional>
- <attribute name="overwrite">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <choice>
- <attribute name="tstamp">
- <data type="boolean"/>
- </attribute>
- <attribute name="preservelastmodified">
- <data type="boolean"/>
- </attribute>
- </choice>
- </optional>
- <optional>
- <attribute name="includeemptydirs">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="mode">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <choice>
- <ref name="mapper"/>
- <ref name="filterchain"/>
- <ref name="param"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="chmod">
- <element name="chmod">
- <interleave>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- <attribute name="mode"/>
- <optional>
- <attribute name="failonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="verbose">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="chown">
- <element name="chown">
- <interleave>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- <attribute name="user"/>
- <optional>
- <attribute name="failonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="verbose">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="loadfile">
- <element name="loadfile">
- <interleave>
- <attribute name="property"/>
- <attribute name="file"/>
- </interleave>
- <zeroOrMore>
- <ref name="filterchain"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="import">
- <element name="import">
- <attribute name="file"/>
- <optional>
- <attribute name="optional">
- <data type="boolean"/>
- </attribute>
- </optional>
- </element>
- </define>
-
-
- <!--
- ===========================================================================================================
- Optional Tasks
- ===========================================================================================================
- -->
-
- <!--
- =========================================
- ApiGenTask
- =========================================
- -->
-
- <define name="apigen">
- <element name="apigen">
- <interleave>
- <optional>
- <attribute name="executable"/>
- </optional>
- <optional>
- <attribute name="config"/>
- </optional>
- <optional>
- <attribute name="source"/>
- </optional>
- <optional>
- <attribute name="destination"/>
- </optional>
- <optional>
- <attribute name="extensions"/>
- </optional>
- <optional>
- <attribute name="exclude"/>
- </optional>
- <optional>
- <attribute name="skipdocpath"/>
- </optional>
- <optional>
- <attribute name="skipdocprefix"/>
- </optional>
- <optional>
- <attribute name="charset"/>
- </optional>
- <optional>
- <attribute name="main"/>
- </optional>
- <optional>
- <attribute name="title"/>
- </optional>
- <optional>
- <attribute name="baseurl"/>
- </optional>
- <optional>
- <attribute name="googlecseid"/>
- </optional>
- <optional>
- <attribute name="googlecselabel"/>
- </optional>
- <optional>
- <attribute name="googleanalytics"/>
- </optional>
- <optional>
- <attribute name="templateconfig"/>
- </optional>
- <optional>
- <attribute name="allowedhtml"/>
- </optional>
- <optional>
- <attribute name="groups"/>
- </optional>
- <optional>
- <attribute name="autocomplete"/>
- </optional>
- <optional>
- <attribute name="accesslevels"/>
- </optional>
- <optional>
- <attribute name="internal">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="php">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="tree">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="deprecated">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="todo">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="sourcecode">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="download">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="report"/>
- </optional>
- <optional>
- <attribute name="wipeout">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="updatecheck">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="debug">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- CoverageMergerTask
- =========================================
- -->
-
- <define name="coverage-merger">
- <element name="coverage-merger">
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- CoverageReportTask
- =========================================
- -->
- <define name="coverage-report">
- <element name="coverage-report">
- <attribute name="outfile"/>
- <optional>
- <attribute name="classpath"/>
- </optional>
- <optional>
- <attribute name="geshipath"/>
- </optional>
- <optional>
- <attribute name="geshilanguagespath"/>
- </optional>
- <ref name="report"/>
- </element>
- </define>
-
- <define name="report">
- <element name="report">
- <attribute name="todir"/>
- <attribute name="styledir"/>
- <optional>
- <attribute name="title"/>
- </optional>
- <optional>
- <attribute name="usesorttable"/>
- </optional>
- </element>
- </define>
-
- <!--
- =========================================
- CoverageSetupTask
- =========================================
- -->
- <define name="coverage-setup">
- <element name="coverage-setup">
- <interleave>
- <attribute name="database"/>
- <zeroOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="filelist"/>
- <ref name="classpath"/>
- </choice>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- CoverageThresholdTask
- =========================================
- -->
- <define name="coverage-threshold">
- <element name="coverage-threshold">
- <interleave>
- <optional>
- <attribute name="database">
- <data type="string"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="perProject">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="perClass">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="perMethod">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="verbose">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="classpath"/>
- <ref name="excludes"/>
- </zeroOrMore>
- </element>
- </define>
-
-
- <!--
- =========================================
- DbDeployTask
- =========================================
- -->
-
- <define name="dbdeploy">
- <element name="dbdeploy">
- <interleave>
- <attribute name="url"/>
- <attribute name="dir"/>
- <optional>
- <attribute name="userid"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
-
- <optional>
- <attribute name="outputfile"/>
- </optional>
-
- <optional>
- <attribute name="undooutputfile"/>
- </optional>
-
- <optional>
- <attribute name="deltaset"/>
- </optional>
-
- <optional>
- <attribute name="lastchangetoapply">
- <data type="int"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- ExportPropertiesTask
- =========================================
- -->
-
- <define name="exportproperties">
- <element name="exportproperties">
- <interleave>
- <attribute name="targetfile"/>
- <optional>
- <attribute name="disallowedpropertyprefixes"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- FileHashTask
- =========================================
- -->
- <define name="filehash">
- <element name="filehash">
- <interleave>
- <attribute name="file"/>
- <optional>
- <attribute name="hashtype">
- <choice>
- <value>0</value>
- <value>1</value>
- </choice>
- </attribute>
- </optional>
- <optional>
- <attribute name="propertyname"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- FileSizeTask
- =========================================
- -->
- <define name="filesize">
- <element name="filesize">
- <interleave>
- <attribute name="file"/>
- <optional>
- <attribute name="propertyname"/>
- </optional>
- </interleave>
- </element>
- </define>
-
-
- <!--
- =========================================
- git Manipulation tasks
- =========================================
- -->
-
- <define name="gitinit">
- <element name="gitinit">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="bare">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="gitclone">
- <element name="gitclone">
- <interleave>
- <attribute name="repository"/>
- <attribute name="targetpath"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="bare">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="gitgc">
- <element name="gitgc">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="aggresive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="auto">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="noprune">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="prune"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="gitbranch">
- <element name="gitbranch">
- <interleave>
- <attribute name="repository"/>
- <attribute name="branchname"/>
- <optional>
- <attribute name="newbranch"/>
- </optional>
- <optional>
- <attribute name="startpoint"/>
- </optional>
- <optional>
- <attribute name="setupstream"/>
- </optional>
- <optional>
- <attribute name="track">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="notrack">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="move">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="forcemove">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="delete">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="forcedelete">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="gitfetch">
- <element name="gitfetch">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="source"/>
- </optional>
- <optional>
- <attribute name="refspec"/>
- </optional>
- <optional>
- <attribute name="group"/>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="all">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="keep">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="prune">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="tags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="notags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
-
- </element>
- </define>
-
- <define name="gitcheckout">
- <element name="gitcheckout">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="forcecreate">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="create">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="merge">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="track">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="notrack">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
-
- </element>
- </define>
-
- <define name="gitmerge">
- <element name="gitmerge">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="remote"/>
- </optional>
- <optional>
- <attribute name="message"/>
- </optional>
- <optional>
- <attribute name="strategy"/>
- </optional>
- <optional>
- <attribute name="strategyoption"/>
- </optional>
- <optional>
- <attribute name="commit">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="nocommit">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="fastforwardcommit">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="gitpull">
- <element name="gitpull">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="all"/>
- </optional>
- <optional>
- <attribute name="source"/>
- </optional>
- <optional>
- <attribute name="refspec"/>
- </optional>
- <optional>
- <attribute name="strategy"/>
- </optional>
- <optional>
- <attribute name="strategyoption"/>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="append">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="keepfiles">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="notags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="tags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="norebase">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="rebase">
- <data type="boolean"/>
- </attribute>
- </optional>
-
- </interleave>
-
- </element>
- </define>
-
- <define name="gitpush">
- <element name="gitpush">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="all"/>
- </optional>
- <optional>
- <attribute name="destination"/>
- </optional>
- <optional>
- <attribute name="refspec"/>
- </optional>
- <optional>
- <attribute name="mirror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="delete">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="tags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
-
- </element>
- </define>
-
- <define name="gittag">
- <element name="gittag">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="message"/>
- </optional>
- <optional>
- <attribute name="name"/>
- </optional>
- <optional>
- <attribute name="commit"/>
- </optional>
- <optional>
- <attribute name="object"/>
- </optional>
- <optional>
- <attribute name="pattern"/>
- </optional>
- <optional>
- <attribute name="outputproperty"/>
- </optional>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="num">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="contains"/>
- </optional>
- <optional>
- <attribute name="keysign"/>
- </optional>
- <optional>
- <attribute name="verify">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="sign">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="list">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="delete">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="annotate">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
-
- </element>
- </define>
-
- <define name="gitlog">
- <element name="gitlog">
- <interleave>
- <attribute name="repository"/>
- <optional>
- <attribute name="gitpath"/>
- </optional>
- <optional>
- <attribute name="outputproperty"/>
- </optional>
- <optional>
- <attribute name="paths"/>
- </optional>
- <optional>
- <attribute name="format"/>
- </optional>
- <optional>
- <attribute name="date"/>
- </optional>
- <optional>
- <attribute name="since"/>
- </optional>
- <optional>
- <attribute name="until"/>
- </optional>
- <optional>
- <attribute name="stat"/>
- </optional>
- <optional>
- <attribute name="namestatus">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="maxcount">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="nomerges">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- Http manipulation
- =========================================
- -->
- <define name="httpget">
- <element name="httpget">
- <interleave>
- <attribute name="url"/>
- <attribute name="dir"/>
- <optional>
- <attribute name="filename"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="header">
- <element name="header">
- <attribute name="name"/>
- <attribute name="val"/>
- </element>
- </define>
-
- <define name="httprequest">
- <element name="httprequest">
- <interleave>
- <attribute name="url"/>
- <optional>
- <attribute name="responseregex"/>
- </optional>
- <optional>
- <attribute name="authuser"/>
- </optional>
- <optional>
- <attribute name="authpassword"/>
- </optional>
- <optional>
- <attribute name="authschema"/>
- </optional>
- <optional>
- <attribute name="verbose">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="observerevents"/>
- </optional>
- <zeroOrMore>
- <ref name="config"/>
- </zeroOrMore>
- <zeroOrMore>
- <ref name="header"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- IoncubeEncoderTask
- =========================================
- -->
- <define name="ioncubeencoder">
- <element name="ioncubeencoder">
- <interleave>
- <attribute name="ignore"/>
- <attribute name="fromdir"/>
- <attribute name="todir"/>
- <optional>
- <attribute name="allowedserver"/>
- </optional>
- <optional>
- <attribute name="binary">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="copy"/>
- </optional>
- <optional>
- <attribute name="encode"/>
- </optional>
- <optional>
- <attribute name="encrypt"/>
- </optional>
- <optional>
- <attribute name="expirein"/>
- </optional>
- <optional>
- <attribute name="expireon"/>
- </optional>
- <optional>
- <attribute name="ioncubepath"/>
- </optional>
- <optional>
- <attribute name="keep"/>
- </optional>
- <optional>
- <attribute name="licensepath"/>
- </optional>
- <optional>
- <attribute name="nodocomments"/>
- </optional>
- <optional>
- <attribute name="obfuscation-key"/>
- </optional>
- <optional>
- <attribute name="obfuscate"/>
- </optional>
- <optional>
- <attribute name="optimize"/>
- </optional>
- <optional>
- <attribute name="passphrase"/>
- </optional>
- <optional>
- <attribute name="phpversion">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="targetoption"/>
- </optional>
- <optional>
- <attribute name="withoutruntimeloadersupport">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="noshortopentags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="callbackfile"/>
- </optional>
- <optional>
- <attribute name="obfuscationexclusionfile"/>
- </optional>
- <optional>
- <attribute name="ignoredeprecatedwarnings">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignorestrictwarnings">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="allowencodingintosource">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="messageifnoloader"/>
- </optional>
- <optional>
- <attribute name="actionifnoloader"/>
- </optional>
- <optional>
- <attribute name="showcommandline">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <optional>
- <ref name="comment"/>
- </optional>
- </element>
- </define>
-
-
- <!--
- =========================================
- IoncubeLicenseTask
- =========================================
- -->
- <define name="ioncubelicense">
- <element name="ioncubelicense">
- <interleave>
- <optional>
- <attribute name="licensepath"/>
- </optional>
- <optional>
- <attribute name="ioncubepath"/>
- </optional>
- <optional>
- <attribute name="passphrase"/>
- </optional>
- <optional>
- <attribute name="allowedserver"/>
- </optional>
- <optional>
- <attribute name="expirein"/>
- </optional>
- <optional>
- <attribute name="expireon"/>
- </optional>
- </interleave>
- <optional>
- <ref name="comment"/>
- </optional>
- </element>
- </define>
-
- <!--
- =========================================
- JslLintTask
- =========================================
- -->
- <define name="jsllint">
- <element name="jsllint">
- <interleave>
- <choice>
- <attribute name="executable"/>
- </choice>
- <choice>
- <attribute name="file"/>
- <ref name="fileset"/>
- </choice>
- <optional>
- <attribute name="haltonfailure">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="showwarnings">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="cachefile"/>
- </optional>
- <optional>
- <attribute name="conffile"/>
- </optional>
- <optional>
- <attribute name="tofile"/>
- </optional>
- </interleave>
- <ref name="fileset"/>
- </element>
- </define>
-
- <!--
- =========================================
- JsMinTask
- =========================================
- -->
- <define name="jsmin">
- <element name="jsmin">
- <interleave>
- <attribute name="targetdir"/>
- <optional>
- <attribute name="suffix"/>
- </optional>
- <optional>
- <attribute name="failonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- MailTask
- =========================================
- -->
-
- <define name="mail">
- <element name="mail">
- <interleave>
- <attribute name="from"/>
- <attribute name="tolist"/>
- <optional>
- <attribute name="message"/>
- </optional>
- <optional>
- <attribute name="subject"/>
- </optional>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- PatchTask
- =========================================
- -->
-
- <define name="patch">
- <element name="patch">
- <interleave>
- <attribute name="patchfile"/>
- <optional>
- <attribute name="originalfile"/>
- </optional>
- <optional>
- <attribute name="destfile"/>
- </optional>
- <optional>
- <attribute name="backups">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="reverse">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignorewhitespace">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="strip">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonfailure">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="dir"/>
- </optional>
- </interleave>
- </element>
- </define>
-
-
-
- <!--
- =========================================
- PDOSQLExecTask
- =========================================
- -->
- <define name="pdosqlexec">
- <element name="pdosqlexec">
- <interleave>
- <attribute name="url"/>
- <optional>
- <attribute name="userid"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="encoding"/>
- </optional>
- <optional>
- <attribute name="src"/>
- </optional>
- <optional>
- <attribute name="onerror"/>
- </optional>
- <optional>
- <attribute name="delimiter"/>
- </optional>
- <optional>
- <attribute name="delimitertype"/>
- </optional>
- <optional>
- <attribute name="autocommit">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- <zeroOrMore>
- <ref name="transaction"/>
- </zeroOrMore>
- <zeroOrMore>
- <ref name="formatter"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="transaction">
- <element name="transaction">
- <optional>
- <attribute name="tsrcfile"/>
- </optional>
- </element>
- </define>
-
- <define name="formatter">
- <element name="formatter">
- <interleave>
- <choice>
- <attribute name="type"/>
- <attribute name="classname"/>
- </choice>
- <optional>
- <attribute name="usefile">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="outfile"/>
- </optional>
- <optional>
- <attribute name="output"/>
- </optional>
- <optional>
- <attribute name="showheaders">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="coldelim"/>
- </optional>
- <optional>
- <attribute name="rowdelim"/>
- </optional>
- <optional>
- <attribute name="encoding"/>
- </optional>
- <optional>
- <attribute name="formatoutput">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="todir"/>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="param"/>
- </zeroOrMore>
- </element>
- </define>
-
-
- <!--
- =========================================
- PearPackageTask
- =========================================
- -->
- <define name="pearpkg">
- <element name="pearpkg">
- <interleave>
- <attribute name="name"/>
- <attribute name="dir"/>
- <optional>
- <attribute name="destFile"/>
- </optional>
- </interleave>
- <zeroOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="mapping"/>
- <ref name="option"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- PearPackage2Task
- =========================================
- -->
- <define name="pearpkg2">
- <element name="pearpkg2">
- <interleave>
- <attribute name="name"/>
- <attribute name="dir"/>
- </interleave>
- <zeroOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="mapping"/>
- <ref name="option"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="option">
- <element name="option">
- <interleave>
- <attribute name="name"/>
- <optional>
- <attribute name="value"/>
- </optional>
- </interleave>
- <text/>
- </element>
- </define>
-
- <define name="mapping">
- <element name="mapping">
- <optional>
- <attribute name="name"/>
- </optional>
- <oneOrMore>
- <ref name="element"/>
- </oneOrMore>
- </element>
- </define>
-
- <define name="element">
- <element name="element">
- <interleave>
- <optional>
- <choice>
- <attribute name="key"/>
- <attribute name="name"/>
- </choice>
- </optional>
- <optional>
- <attribute name="value"/>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="element"/>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- PharPackageTask
- =========================================
- -->
- <define name="pharpackage">
- <element name="pharpackage">
- <interleave>
- <attribute name="basedir"/>
- <attribute name="destfile"/>
- <optional>
- <attribute name="compression"/>
- </optional>
- <optional>
- <attribute name="webstub"/>
- </optional>
- <optional>
- <attribute name="clistub"/>
- </optional>
- <optional>
- <attribute name="stub"/>
- </optional>
- <optional>
- <attribute name="alias"/>
- </optional>
- <optional>
- <attribute name="signature"/>
- </optional>
- </interleave>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- <optional>
- <ref name="metadata"/>
- </optional>
- </element>
- </define>
-
- <define name="metadata">
- <element name="metadata">
- <oneOrMore>
- <ref name="element"/>
- </oneOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- PhkPackageTask
- =========================================
- -->
- <define name="phkpackage">
- <element name="phkpackage">
- <interleave>
- <attribute name="phkcreatorpath"/>
- <attribute name="inputdirectory"/>
- <attribute name="outputfile"/>
- <optional>
- <attribute name="compress"/>
- </optional>
- <optional>
- <attribute name="strip">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="name"/>
- </optional>
- <optional>
- <attribute name="webrunscript"/>
- </optional>
- <optional>
- <attribute name="crccheck"/>
- </optional>
- <optional>
- <ref name="webaccess"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="webaccess">
- <element name="webaccess">
- <oneOrMore>
- <ref name="path"/>
- </oneOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- PhpCodeSnifferTask
- =========================================
- -->
- <define name="phpcodesniffer">
- <element name="phpcodesniffer">
- <interleave>
- <optional>
- <attribute name="standard"/>
- </optional>
- <optional>
- <attribute name="format"/>
- </optional>
- <optional>
- <attribute name="showSniffs">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="showWarnings">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="showSources">
- <data type="boolean"/>
- </attribute>
- </optional>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- <optional>
- <attribute name="sniffs"/>
- </optional>
- <optional>
- <attribute name="verbosity"/>
- </optional>
- <optional>
- <attribute name="tabwidth">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="reportwidth">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="docgenerator"/>
- </optional>
- <optional>
- <attribute name="docfile"/>
- </optional>
- <optional>
- <attribute name="allowedFileExtensions"/>
- </optional>
- <optional>
- <attribute name="ignorePatterns"/>
- </optional>
- <optional>
- <attribute name="nosubdirectories">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonwarning">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="skipversioncheck">
- <data type="boolean"/>
- </attribute>
- </optional>
- <zeroOrMore>
- <ref name="config"/>
- <ref name="formatter"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
- <define name="config">
- <element name="config">
- <attribute name="name"/>
- <attribute name="value"/>
- </element>
- </define>
-
-
- <!--
- =========================================
- PhpDocumentorTask
- =========================================
- -->
- <define name="phpdocumentor">
- <element name="phpdocumentor">
- <interleave>
- <optional>
- <attribute name="title"/>
- </optional>
- <choice>
- <attribute name="destdir"/>
- <attribute name="target"/>
- </choice>
- <optional>
- <attribute name="output"/>
- </optional>
- <optional>
- <attribute name="sourcecode">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="examplesdir"/>
- </optional>
- <optional>
- <attribute name="parseprivate">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="javadocdesc">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="packageoutput"/>
- </optional>
- <optional>
- <attribute name="ignoretags"/>
- </optional>
- <optional>
- <attribute name="defaultpackagename"/>
- </optional>
- <optional>
- <attribute name="defaultcategoryname"/>
- </optional>
- <optional>
- <attribute name="pear"/>
- </optional>
- <optional>
- <attribute name="templatebase"/>
- </optional>
- <optional>
- <attribute name="undocumentedelements"/>
- </optional>
- <optional>
- <attribute name="customtags"/>
- </optional>
- </interleave>
- <zeroOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="projdocfileset"/>
- </choice>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- PHPMDTask
- =========================================
- -->
- <define name="phpmd">
- <element name="phpmd">
- <interleave>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="ruleset"/>
- </optional>
- <optional>
- <attribute name="minimumpriority">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="allowedfileextensions"/>
- </optional>
- <optional>
- <attribute name="ignorepatterns"/>
- </optional>
- <optional>
- <attribute name="format"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- PhpDependTask
- =========================================
- -->
- <define name="phpdepend">
- <element name="phpdepend">
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="configfile"/>
- </optional>
- <optional>
- <attribute name="allowedfileextensions"/>
- </optional>
- <optional>
- <attribute name="excludedirectories"/>
- </optional>
- <optional>
- <attribute name="excludepackages"/>
- </optional>
- <optional>
- <attribute name="withoutannotations">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="superbaddocumentation">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="debug">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- </element>
- </define>
-
- <!--
- =========================================
- PhpDocumentorTask
- =========================================
- -->
- <define name="phpdoc">
- <element name="phpdoc">
- <interleave>
- <optional>
- <attribute name="title"/>
- </optional>
- <choice>
- <attribute name="destdir"/>
- <attribute name="target"/>
- </choice>
- <optional>
- <attribute name="output"/>
- </optional>
- <optional>
- <attribute name="sourcecode">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="examplesdir"/>
- </optional>
- <optional>
- <attribute name="parseprivate">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="javadocdesc">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="packageoutput"/>
- </optional>
- <optional>
- <attribute name="ignoretags"/>
- </optional>
- <optional>
- <attribute name="defaultpackagename"/>
- </optional>
- <optional>
- <attribute name="defaultcategoryname"/>
- </optional>
- <optional>
- <attribute name="pear">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="templatebase"/>
- </optional>
- <optional>
- <attribute name="undocumentedelements">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="customtags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignore"/>
- </optional>
- <zeroOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="projdocfileset"/>
- </choice>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
-
- <!--
- =========================================
- PhpDocumentorExternalTask
- =========================================
- -->
- <define name="phpdocumentorexternal">
- <element name="phpdocumentorexternal">
- <interleave>
- <optional>
- <attribute name="title"/>
- </optional>
- <choice>
- <attribute name="destdir"/>
- <attribute name="target"/>
- </choice>
- <optional>
- <attribute name="output"/>
- </optional>
- <optional>
- <attribute name="sourcecode">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="examplesdir"/>
- </optional>
- <optional>
- <attribute name="parseprivate">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="javadocdesc">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="quiet">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="packageoutput"/>
- </optional>
- <optional>
- <attribute name="ignoretags"/>
- </optional>
- <optional>
- <attribute name="defaultpackagename"/>
- </optional>
- <optional>
- <attribute name="defaultcategoryname"/>
- </optional>
- <optional>
- <attribute name="pear"/>
- </optional>
- <optional>
- <attribute name="templatebase"/>
- </optional>
- <optional>
- <attribute name="undocumentedelements"/>
- </optional>
- <optional>
- <attribute name="customtags"/>
- </optional>
- <optional>
- <attribute name="programpath"/>
- </optional>
- <optional>
- <attribute name="ignore"/>
- </optional>
- <choice>
- <attribute name="sourcepath"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- PhpLintTask
- =========================================
- -->
- <define name="phplint">
- <element name="phplint">
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- <optional>
- <attribute name="haltonfailure">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="errorproperty"/>
- </optional>
- <optional>
- <attribute name="interpretator"/>
- </optional>
- <optional>
- <attribute name="cachefile"/>
- </optional>
- <optional>
- <attribute name="level">
- <choice>
- <value>error</value>
- <value>warning</value>
- <value>info</value>
- <value>verbose</value>
- <value>debug</value>
- </choice>
- </attribute>
- </optional>
- <optional>
- <attribute name="tofile"/>
- </optional>
- <optional>
- <attribute name="deprecatedaserror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- PHPUnitTask
- =========================================
- -->
- <define name="phpunit">
- <element name="phpunit">
- <interleave>
- <optional>
- <attribute name="printsummary">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="bootstrap"/>
- </optional>
- <optional>
- <attribute name="codecoverage">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonfailure">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonincomplete">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonskipped">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="failureproperty"/>
- </optional>
- <optional>
- <attribute name="errorproperty"/>
- </optional>
- <optional>
- <attribute name="incompleteproperty"/>
- </optional>
- <optional>
- <attribute name="skippedproperty"/>
- </optional>
- <optional>
- <attribute name="usecustomerrorhandler">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="processisolation">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="formatter"/>
- </zeroOrMore>
- <optional>
- <ref name="batchtest"/>
- </optional>
- </element>
- </define>
-
- <define name="batchtest">
- <element name="batchtest">
- <interleave>
- <optional>
- <attribute name="exclude"/>
- </optional>
- <optional>
- <attribute name="classpath"/>
- </optional>
- </interleave>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- PHPUnitReporttask
- =========================================
- -->
- <define name="phpunitreport">
- <element name="phpunitreport">
- <interleave>
- <optional>
- <attribute name="infile"/>
- </optional>
- <optional>
- <attribute name="format"/>
- </optional>
- <optional>
- <attribute name="styledir"/>
- </optional>
- <attribute name="todir"/>
- <optional>
- <attribute name="usesorttable">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- rSTTask
- =========================================
- -->
- <define name="rst">
- <element name="rst">
- <interleave>
- <choice>
- <attribute name="file"/>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </choice>
- <optional>
- <attribute name="format">
- <choice>
- <value>html</value>
- <value>latex</value>
- <value>man</value>
- <value>odt</value>
- <value>s5</value>
- <value>xml</value>
- </choice>
- </attribute>
- </optional>
- <optional>
- <attribute name="destination"/>
- </optional>
- <optional>
- <attribute name="uptodate">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="toolpath"/>
- </optional>
- <optional>
- <attribute name="toolparam"/>
- </optional>
- <zeroOrMore>
- <ref name="mapper"/>
- </zeroOrMore>
- <zeroOrMore>
- <ref name="filterchain"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- S3PutTask
- =========================================
- -->
- <define name="s3put">
- <element name="s3put">
- <interleave>
- <choice>
- <attribute name="source"/>
- <attribute name="content"/>
- </choice>
- <attribute name="key"/>
- <attribute name="secret"/>
- <attribute name="bucket"/>
- <optional>
- <attribute name="object"/>
- </optional>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- S3GetTask
- =========================================
- -->
- <define name="s3get">
- <element name="s3get">
- <interleave>
- <attribute name="key"/>
- <attribute name="secret"/>
- <attribute name="bucket"/>
- <attribute name="object"/>
- <attribute name="target"/>
- </interleave>
- </element>
- </define>
-
-
- <define name="scp">
- <element name="scp">
- <interleave>
- <attribute name="host"/>
- <optional>
- <attribute name="port">
- <data type="int"/>
- </attribute>
- </optional>
- <attribute name="username"/>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="pubkeyfile"/>
- </optional>
- <optional>
- <attribute name="privkeyfile"/>
- </optional>
- <optional>
- <attribute name="privkeyfilepassphrase"/>
- </optional>
- <optional>
- <attribute name="autocreate">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="todir"/>
- </optional>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="fetch">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="level">
- <choice>
- <value>error</value>
- <value>warning</value>
- <value>info</value>
- <value>verbose</value>
- <value>debug</value>
- </choice>
- </attribute>
- </optional>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
-
- <!--
- =========================================
- SshTask
- =========================================
- -->
- <define name="ssh">
- <element name="ssh">
- <interleave>
- <attribute name="host"/>
- <optional>
- <attribute name="port">
- <data type="int"/>
- </attribute>
- </optional>
- <attribute name="username"/>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="pubkeyfile"/>
- </optional>
- <optional>
- <attribute name="privkeyfile"/>
- </optional>
- <optional>
- <attribute name="privkeyfilepassphrase"/>
- </optional>
- <attribute name="command"/>
- <optional>
- <attribute name="property"/>
- </optional>
- <optional>
- <attribute name="display">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- SimpleTestTask
- =========================================
- -->
- <define name="simpletest">
- <element name="simpletest">
- <interleave>
- <optional>
- <attribute name="printsummary">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonerror">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonfailure">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="failureproperty"/>
- </optional>
- <optional>
- <attribute name="errorproperty"/>
- </optional>
- <optional>
- <attribute name="debug">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <optional>
- <ref name="formatter"/>
- </optional>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </element>
- </define>
-
-
- <!--
- =========================================
- SvnCheckoutTask
- =========================================
- -->
- <define name="svncheckout">
- <element name="svncheckout">
- <interleave>
- <attribute name="repositoryurl"/>
- <attribute name="todir"/>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="username"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="nocache">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="recursive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignoreexternals">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="trustservercert">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <empty/>
- </element>
- </define>
-
- <!--
- =========================================
- SvnCommitTask
- =========================================
- -->
- <define name="svncommit">
- <element name="svncommit">
- <interleave>
- <attribute name="message"/>
- <attribute name="workingcopy"/>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="username"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="nocache">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="recursive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignoreexternals">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="propertyname"/>
- </optional>
- <optional>
- <attribute name="trustservercert">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- SvnCopyTask
- =========================================
- -->
- <define name="svncopy">
- <element name="svncopy">
- <interleave>
- <attribute name="repositoryurl"/>
- <attribute name="todir"/>
- <optional>
- <attribute name="message"/>
- </optional>
- <attribute name="workingcopy"/>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="username"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="nocache">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="recursive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignoreexternals">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="trustservercert">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- SvnExportTask
- =========================================
- -->
- <define name="svnexport">
- <element name="svnexport">
- <interleave>
- <attribute name="repositoryurl"/>
- <attribute name="todir"/>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="username"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="nocache">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="recursive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignoreexternals"/>
- </optional>
- <optional>
- <attribute name="force">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="trustservercert">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
-
- <!--
- =========================================
- SvnInfoTask
- =========================================
- -->
- <define name="svninfo">
- <element name="svninfo">
- <interleave>
- <choice>
- <attribute name="workingcopy"/>
- <attribute name="repositoryurl"/>
- </choice>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="propertyname"/>
- </optional>
- <optional>
- <attribute name="element"/>
- </optional>
- <optional>
- <attribute name="subelement"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- SvnLastRevisionTask
- =========================================
- -->
- <define name="svnlastrevision">
- <element name="svnlastrevision">
- <interleave>
- <attribute name="workingcopy"/>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="propertyname"/>
- </optional>
- <optional>
- <attribute name="lastChanged">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="forcecompatible">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
-
- <!--
- =========================================
- SvnListTask
- =========================================
- -->
- <define name="svnlist">
- <element name="svnlist">
- <interleave>
- <choice>
- <attribute name="workingcopy"/>
- <attribute name="repositourl"/>
- </choice>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="propertyname"/>
- </optional>
- <optional>
- <attribute name="forcecompatible">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="limit">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="orderdescending">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- SvnLogTask
- =========================================
- -->
- <define name="svnlog">
- <element name="svnlog">
- <interleave>
- <choice>
- <attribute name="workingcopy"/>
- <attribute name="repositourl"/>
- </choice>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="propertyname"/>
- </optional>
- <optional>
- <attribute name="forcecompatible">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="limit">
- <data type="int"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
-
- <!--
- =========================================
- SvnUpdateTask
- =========================================
- -->
- <define name="svnupdate">
- <element name="svnupdate">
- <interleave>
- <attribute name="todir"/>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="username"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="nocache">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="recursive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignoreexternals">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="revision">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="trustservercert">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
-
- <!--
- =========================================
- SvnSwitchTask
- =========================================
- -->
- <define name="svnswitch">
- <element name="svnswitch">
- <interleave>
- <attribute name="todir"/>
- <attribute name="repositoryurl"/>
- <optional>
- <attribute name="svnpath"/>
- </optional>
- <optional>
- <attribute name="username"/>
- </optional>
- <optional>
- <attribute name="password"/>
- </optional>
- <optional>
- <attribute name="nocache">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="recursive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="ignoreexternals">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="trustservercert">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- </element>
- </define>
-
-
-
- <!--
- =========================================
- TarTask
- =========================================
- -->
- <define name="tar">
- <element name="tar">
- <interleave>
- <attribute name="destfile"/>
- <optional>
- <attribute name="basedir"/>
- </optional>
- <optional>
- <attribute name="compression">
- <choice>
- <value>gzip</value>
- <value>bzip2</value>
- <value>none</value>
- </choice>
- </attribute>
- </optional>
- <optional>
- <attribute name="includeemptydirs">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="longfile">
- <choice>
- <value>truncate</value>
- <value>fail</value>
- <value>warn</value>
- <value>gnu</value>
- <value>omit</value>
- </choice>
- </attribute>
- </optional>
- <optional>
- <attribute name="prefix"/>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- UntarTask
- =========================================
- -->
- <define name="untar">
- <element name="untar">
- <interleave>
- <attribute name="todir"/>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="removepath"/>
- </optional>
- <optional>
- <attribute name="forceextract">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- UnzipTask
- =========================================
- -->
- <define name="unzip">
- <element name="unzip">
- <interleave>
- <attribute name="todir"/>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="forceextract">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- VersionTask
- =========================================
- -->
- <define name="version">
- <element name="version">
- <interleave>
- <attribute name="releasetype">
- <choice>
- <value>Major</value>
- <value>Minor</value>
- <value>Bugfix</value>
- </choice>
- </attribute>
- <attribute name="file"/>
- <attribute name="property"/>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- XmlLintTask
- =========================================
- -->
- <define name="xmllint">
- <element name="xmllint">
- <interleave>
- <attribute name="schema"/>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="useRNG">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="haltonfailure">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- XmlPropertyTask
- =========================================
- -->
- <define name="xmlproperty">
- <element name="xmlproperty">
- <interleave>
- <attribute name="file"/>
- <optional>
- <attribute name="prefix"/>
- </optional>
- <optional>
- <attribute name="keeproot">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="collapseattributes">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="delimiter"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <!--
- =========================================
- ZendCodeAnalyzerTask
- =========================================
- -->
- <define name="zendcodeanalyzer">
- <element name="zendcodeanalyzer">
- <interleave>
- <attribute name="analyzerPath"/>
- <optional>
- <attribute name="file"/>
- </optional>
- <optional>
- <attribute name="disable"/>
- </optional>
- <optional>
- <attribute name="enable"/>
- </optional>
- <optional>
- <attribute name="haltonwarning">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
-
- <!--
- =========================================
- ZendGuardEncodeTask
- =========================================
- -->
- <define name="zendguardencode">
- <element name="zendguardencode">
- <interleave>
- <attribute name="zendencoderpath"/>
- <optional>
- <attribute name="deletesource">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="renamesourceext"/>
- </optional>
- <optional>
- <attribute name="expires"/>
- </optional>
- <optional>
- <attribute name="obfuscationlevel">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="optmask">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="privatekeypath"/>
- </optional>
- <optional>
- <attribute name="productname"/>
- </optional>
- <optional>
- <attribute name="prologfile"/>
- </optional>
- <optional>
- <attribute name="shorttags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="asptags">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="noheader">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="usecrypto">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="encodedonly">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="forceencode">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="licenseproduct">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="signproduct">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
-
- <!--
- =========================================
- ZendGuardLicenseTask
- =========================================
- -->
- <define name="zendguardlicense">
- <element name="zendguardlicense">
- <interleave>
- <attribute name="zendsignpath"/>
- <attribute name="privatekeypath"/>
- <attribute name="outputfile"/>
- <attribute name="productname"/>
- <attribute name="registeredto"/>
- <attribute name="expires"/>
- <optional>
- <attribute name="licensetemplate"/>
- </optional>
- <optional>
- <attribute name="iprange"/>
- </optional>
- <optional>
- <attribute name="hardwarelocked">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="hostid"/>
- </optional>
- <optional>
- <attribute name="userdefinedvalues"/>
- </optional>
- <optional>
- <attribute name="xuserdefinedvalues"/>
- </optional>
- </interleave>
- </element>
- </define>
-
-
-
- <!--
- =========================================
- ZipTask
- =========================================
- -->
- <define name="zip">
- <element name="zip">
- <interleave>
- <attribute name="destfile"/>
- <optional>
- <attribute name="basedir"/>
- </optional>
- <optional>
- <attribute name="prefix"/>
- </optional>
- <optional>
- <attribute name="includeemptydirs">
- <data type="boolean"/>
- </attribute>
- </optional>
- </interleave>
- <zeroOrMore>
- <ref name="fileset"/>
- </zeroOrMore>
- </element>
- </define>
-
- <!--
- =========================================
- FtpDeployTask
- =========================================
- -->
- <define name="ftpdeploy">
- <element name="ftpdeploy">
- <interleave>
- <attribute name="host"/>
- <attribute name="username"/>
- <attribute name="password"/>
- <optional>
- <attribute name="port">
- <data type="int"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="dir"/>
- </optional>
- <optional>
- <attribute name="mode">
- <choice>
- <value>ascii</value>
- <value>binary</value>
- </choice>
- </attribute>
- </optional>
- <optional>
- <attribute name="clearfirst">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="passive">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="level">
- <choice>
- <value>error</value>
- <value>warning</value>
- <value>info</value>
- <value>verbose</value>
- <value>debug</value>
- </choice>
- </attribute>
- </optional>
- <oneOrMore>
- <ref name="fileset"/>
- </oneOrMore>
- </interleave>
- </element>
- </define>
-
- <!--
- ======================================================================
- Filters
- ======================================================================
- -->
-
- <define name="mapper">
- <element name="mapper">
- <interleave>
- <choice>
- <attribute name="classname"/>
- <attribute name="type">
- <choice>
- <value type="string">flatten</value>
- <value type="string">glob</value>
- <value type="string">merge</value>
- <value type="string">identity</value>
- <value type="string">regexp</value>
- </choice>
- </attribute>
- </choice>
- <optional>
- <attribute name="from"/>
- </optional>
- <optional>
- <attribute name="to"/>
- </optional>
- </interleave>
- </element>
- </define>
-
- <define name="param">
- <element name="param">
- <optional>
- <attribute name="type"/>
- </optional>
- <optional>
- <attribute name="key"/>
- </optional>
- <optional>
- <attribute name="value"/>
- </optional>
- <optional>
- <attribute name="name"/>
- </optional>
- <optional>
- <attribute name="expression"/>
- </optional>
- </element>
- </define>
-
- <define name="filterreader">
- <element name="filterreader">
- <attribute name="classname"/>
- <optional>
- <attribute name="classpath"/>
- </optional>
- <optional>
- <attribute name="classpathref"/>
- </optional>
- <zeroOrMore>
- <ref name="param"/>
- </zeroOrMore>
- </element>
- </define>
-
- <define name="expandproperties">
- <element name="expandproperties">
- <empty/>
- </element>
- </define>
-
- <define name="filterchain">
- <element name="filterchain">
- <oneOrMore>
- <choice>
- <ref name="expandproperties"/>
- <ref name="filterreader"/>
- <ref name="expandproperties"/>
- <ref name="headfilter"/>
- <ref name="iconvfilter"/>
- <ref name="linecontains"/>
- <ref name="linecontainsregexp"/>
- <ref name="prefixlines"/>
- <ref name="replacetokens"/>
- <ref name="replaceregexp"/>
- <ref name="striplinecomments"/>
- <ref name="stripphpcomments"/>
- <ref name="stripwhitespace"/>
- <ref name="tabtospaces"/>
- <ref name="tailfilter"/>
- <ref name="tidyfilter"/>
- <ref name="xincludefilter"/>
- <ref name="xsltfilter"/>
- </choice>
- </oneOrMore>
- </element>
- </define>
-
- <define name="linecontains">
- <element name="linecontains">
- <oneOrMore>
- <ref name="contains"/>
- </oneOrMore>
- </element>
- </define>
-
- <define name="contains">
- <element name="contains">
- <attribute name="value"/>
- </element>
- </define>
-
- <define name="linecontainsregexp">
- <element name="linecontainsregexp">
- <ref name="regexp"/>
- </element>
- </define>
-
- <define name="regexp">
- <element name="regexp">
- <attribute name="pattern"/>
- <optional>
- <attribute name="replace"/>
- </optional>
- <optional>
- <attribute name="ignoreCase"/>
- </optional>
- </element>
- </define>
-
- <define name="prefixlines">
- <element name="prefixlines">
- <attribute name="prefix"/>
- </element>
- </define>
-
- <define name="replacetokens">
- <element name="replacetokens">
- <interleave>
- <optional>
- <attribute name="begintoken"/>
- </optional>
- <optional>
- <attribute name="endtoken"/>
- </optional>
- </interleave>
- <oneOrMore>
- <ref name="token"/>
- </oneOrMore>
- </element>
- </define>
-
- <define name="token">
- <element name="token">
- <attribute name="key"/>
- <attribute name="value"/>
- </element>
- </define>
-
- <define name="replaceregexp">
- <element name="replaceregexp">
- <oneOrMore>
- <ref name="regexp"/>
- </oneOrMore>
- </element>
- </define>
-
- <define name="stripwhitespace">
- <element name="stripwhitespace">
- <optional>
- <attribute name="tablength">
- <data type="int"/>
- </attribute>
- </optional>
- </element>
- </define>
-
- <define name="striplinecomments">
- <element name="striplinecomments">
- <oneOrMore>
- <ref name="comment"/>
- </oneOrMore>
- </element>
- </define>
-
- <define name="comment">
- <element name="comment">
- <choice>
- <attribute name="value"/>
- <text/>
- </choice>
- </element>
- </define>
-
- <define name="stripphpcomments">
- <element name="stripphpcomments">
- <empty/>
- </element>
- </define>
-
- <define name="tabtospaces">
- <element name="tabtospaces">
- <empty/>
- </element>
- </define>
-
- <define name="tabtospace">
- <element name="tabtospaces">
- <optional>
- <attribute name="tablength">
- <data type="int"/>
- </attribute>
- </optional>
- </element>
- <empty/>
- </define>
-
- <define name="tailfilter">
- <element name="tailfilter">
- <optional>
- <attribute name="lines">
- <data type="int"/>
- </attribute>
- </optional>
- </element>
- <empty/>
- </define>
-
- <define name="headfilter">
- <element name="headfilter">
- <optional>
- <attribute name="lines">
- <data type="int"/>
- </attribute>
- </optional>
- <empty/>
- </element>
- </define>
-
- <define name="iconvfilter">
- <element name="iconvfilter">
- <attribute name="inputencoding"/>
- <attribute name="outputencoding"/>
- <empty/>
- </element>
- </define>
-
- <define name="tidyfilter">
- <element name="tidyfilter">
- <optional>
- <attribute name="encoding"/>
- </optional>
- <empty/>
- </element>
- </define>
-
- <define name="xincludefilter">
- <element name="xincludefilter">
- <optional>
- <attribute name="basedir"/>
- </optional>
- </element>
- </define>
-
- <define name="xsltfilter">
- <element name="xsltfilter">
- <interleave>
- <attribute name="style"/>
- <optional>
- <attribute name="html"/>
- </optional>
- <zeroOrMore>
- <ref name="param"/>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
-
- <!--
- ================================================================
- Custom tasks/filters
- ================================================================
- -->
-
- <define name="highlightsrc">
- <element name="highlightsrc">
- <interleave>
- <optional>
- <attribute name="linenumber">
- <data type="boolean"/>
- </attribute>
- </optional>
- <optional>
- <attribute name="file"/>
- </optional>
- </interleave>
- <interleave>
- <zeroOrMore>
- <choice>
- <ref name="fileset"/>
- <ref name="filterchain"/>
- </choice>
- </zeroOrMore>
- </interleave>
- </element>
- </define>
-
-
-</grammar>
diff --git a/buildscripts/phing/etc/phpunit-frames.xsl b/buildscripts/phing/etc/phpunit-frames.xsl
deleted file mode 100755
index a3147eb9..00000000
--- a/buildscripts/phing/etc/phpunit-frames.xsl
+++ /dev/null
@@ -1,694 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:exsl="http://exslt.org/common"
- xmlns:str="http://exslt.org/strings"
- xmlns:date="http://exslt.org/dates-and-times"
- extension-element-prefixes="exsl str date">
-<xsl:include href="str.replace.function.xsl"/>
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator=","/>
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<!--
-
- Sample stylesheet to be used with Phing/PHPUnit output.
- Based on JUnit stylesheets from Apache Ant.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
- @author Michiel Rook <a href="mailto:michiel.rook@gmail.com"/>
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
- @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/>
- @author Martijn Kruithof <a href="mailto:martijn@kruithof.xs4all.nl"/>
-
--->
-<xsl:param name="output.dir" select="'.'"/>
-<xsl:param name="output.sorttable" select="'.'"/>
-
-
-<xsl:template match="testsuites">
- <!-- create the index.html -->
- <exsl:document href="efile://{$output.dir}/index.html">
- <xsl:call-template name="index.html"/>
- </exsl:document>
-
- <!-- create the stylesheet.css -->
- <exsl:document omit-xml-declaration="yes" href="efile://{$output.dir}/stylesheet.css">
- <xsl:call-template name="stylesheet.css"/>
- </exsl:document>
-
- <!-- create the overview-packages.html at the root -->
- <exsl:document href="efile://{$output.dir}/overview-summary.html">
- <xsl:apply-templates select="." mode="overview.packages"/>
- </exsl:document>
-
- <!-- create the all-packages.html at the root -->
- <exsl:document href="efile://{$output.dir}/overview-frame.html">
- <xsl:apply-templates select="." mode="all.packages"/>
- </exsl:document>
-
- <!-- create the all-classes.html at the root -->
- <exsl:document href="efile://{$output.dir}/allclasses-frame.html">
- <xsl:apply-templates select="." mode="all.classes"/>
- </exsl:document>
-
- <!-- process all packages -->
- <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:call-template name="package">
- <xsl:with-param name="name" select="@package"/>
- </xsl:call-template>
- </xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
- <xsl:param name="name"/>
- <xsl:variable name="package.dir">
- <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
- <xsl:if test="$name = ''">.</xsl:if>
- </xsl:variable>
- <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
- <!-- create a classes-list.html in the package directory -->
- <exsl:document href="efile://{$output.dir}/{$package.dir}/package-frame.html">
- <xsl:call-template name="classes.list">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </exsl:document>
-
- <!-- create a package-summary.html in the package directory -->
- <exsl:document href="efile://{$output.dir}/{$package.dir}/package-summary.html">
- <xsl:call-template name="package.summary">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </exsl:document>
-
- <!-- for each class, creates a @name.html -->
- <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
- <xsl:for-each select="/testsuites/testsuite[@package = $name]">
- <exsl:document href="efile://{$output.dir}/{$package.dir}/{@name}.html">
- <xsl:apply-templates select="." mode="class.details"/>
- </exsl:document>
- <xsl:if test="string-length(./system-out)!=0">
- <exsl:document href="efile://{$output.dir}/{$package.dir}/{@name}-out.txt">
- <xsl:value-of select="./system-out" />
- </exsl:document>
- </xsl:if>
- <xsl:if test="string-length(./system-err)!=0">
- <exsl:document href="efile://{$output.dir}/{$package.dir}/{@name}-err.txt">
- <xsl:value-of select="./system-err" />
- </exsl:document>
- </xsl:if>
- </xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<html>
- <head>
- <title>Unit Test Results.</title>
- </head>
- <frameset cols="20%,80%">
- <frameset rows="30%,70%">
- <frame src="overview-frame.html" name="packageListFrame"/>
- <frame src="allclasses-frame.html" name="classListFrame"/>
- </frameset>
- <frame src="overview-summary.html" name="classFrame"/>
- <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>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-body {
- font-family: verdana,arial,helvetica;
- color:#000000;
- font-size: 12px;
-}
-table tr td, table tr th {
- font-family: verdana,arial,helvetica;
- font-size: 12px;
-}
-table.details tr th{
- font-family: verdana,arial,helvetica;
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
-}
-table.details tr td{
- background:#eeeee0;
-}
-
-p {
- line-height:1.5em;
- margin-top:0.5em; margin-bottom:1.0em;
- font-size: 12px;
-}
-h1 {
- margin: 0px 0px 5px;
- font-family: verdana,arial,helvetica;
-}
-h2 {
- margin-top: 1em; margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
-}
-h3 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
-}
-h4 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
-}
-h5 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
-}
-h6 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
-}
-.Error {
- font-weight:bold; color:red;
-}
-.Failure {
- font-weight:bold; color:purple;
-}
-.small {
- font-size: 9px;
-}
-a {
- color: #003399;
-}
-a:hover {
- color: #888888;
-}
-<xsl:if test="$output.sorttable = 1">
-.sortable th {
- cursor: pointer;
-}
-</xsl:if>
-</xsl:template>
-
-
-<!-- ======================================================================
- This page is created for every testsuite class.
- It prints a summary of the testsuite and detailed information about
- testcase methods.
- ====================================================================== -->
-<xsl:template match="testsuite" mode="class.details">
- <xsl:variable name="package.name" select="@package"/>
- <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
- <html>
- <head>
- <title>Unit Test Results: Class <xsl:value-of select="$class.name"/></title>
- <xsl:if test="$output.sorttable = 1">
- <script language="JavaScript" src="http://www.phing.info/support/sorttable.js"/>
- </xsl:if>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:call-template name="pageHeader"/>
- <h3>Class <xsl:value-of select="$class.name"/></h3>
-
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:apply-templates select="." mode="print.test"/>
- </table>
-
- <h2>Tests</h2>
- <table class="details sortable" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testcase.test.header"/>
- <!--
- test can even not be started at all (failure to load the class)
- so report the error directly
- -->
- <xsl:if test="./error">
- <tr class="Error">
- <td colspan="4"><xsl:apply-templates select="./error"/></td>
- </tr>
- </xsl:if>
- <xsl:apply-templates select="./testcase | ./testsuite/testcase" mode="print.test"/>
- </table>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-<!-- ======================================================================
- This page is created for every package.
- It prints the name of all classes that belongs to this package.
- @param name the package name to print classes.
- ====================================================================== -->
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
- <xsl:param name="name"/>
- <html>
- <head>
- <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </head>
- <body>
- <table width="100%">
- <tr>
- <td nowrap="nowrap">
- <h2><a href="package-summary.html" target="classFrame">
- <xsl:value-of select="$name"/>
- <xsl:if test="$name = ''">&lt;none&gt;</xsl:if>
- </a></h2>
- </td>
- </tr>
- </table>
-
- <h2>Classes</h2>
- <table width="100%">
- <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
- <xsl:sort select="@name"/>
- <tr>
- <td nowrap="nowrap">
- <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </body>
- </html>
-</xsl:template>
-
-
-<!--
- Creates an all-classes.html file that contains a link to all package-summary.html
- on each class.
--->
-<xsl:template match="testsuites" mode="all.classes">
- <html>
- <head>
- <title>All Unit Test Classes</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2>Classes</h2>
- <table width="100%">
- <xsl:apply-templates select="testsuite" mode="all.classes">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.classes">
- <xsl:variable name="package.name" select="@package"/>
- <tr>
- <td nowrap="nowrap">
- <a target="classFrame">
- <xsl:attribute name="href">
- <xsl:if test="not($package.name='')">
- <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
- </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<!--
- Creates an html file that contains a link to all package-summary.html files on
- each package existing on testsuites.
- @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="testsuites" mode="all.packages">
- <html>
- <head>
- <title>All Unit Test Packages</title>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
- <h2>Packages</h2>
- <table width="100%">
- <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
- <xsl:sort select="@package"/>
- </xsl:apply-templates>
- </table>
- </body>
- </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.packages">
- <tr>
- <td nowrap="nowrap">
- <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
- <xsl:value-of select="@package"/>
- <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
- </a>
- </td>
- </tr>
-</xsl:template>
-
-
-<xsl:template match="testsuites" mode="overview.packages">
- <html>
- <head>
- <title>Unit Test Results: Summary</title>
- <xsl:if test="$output.sorttable = 1">
- <script language="JavaScript" src="http://www.phing.info/support/sorttable.js"/>
- </xsl:if>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
- <xsl:call-template name="pageHeader"/>
- <h2>Summary</h2>
- <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
- <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
- <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
- <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
- <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <tr valign="top">
- <th>Tests</th>
- <th>Failures</th>
- <th>Errors</th>
- <th>Success rate</th>
- <th>Time</th>
- </tr>
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
- <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="$testCount"/></td>
- <td><xsl:value-of select="$failureCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- <td>
- <xsl:call-template name="display-percent">
- <xsl:with-param name="value" select="$successRate"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="$timeCount"/>
- </xsl:call-template>
- </td>
-
- </tr>
- </table>
- <table border="0" width="95%">
- <tr>
- <td style="text-align: justify;">
- Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
- </td>
- </tr>
- </table>
-
- <h2>Packages</h2>
- <table class="details sortable" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:sort select="@package" order="ascending"/>
- <!-- get the node set containing all testsuites that have the same package -->
- <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
- <tr valign="top">
- <!-- display a failure if there is any failure/error in the package -->
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
- <xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="./{translate(@package,'.','/')}/package-summary.html">
- <xsl:value-of select="@package"/>
- <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
- </a></td>
- <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
- <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
- <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
- </xsl:call-template>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
- <xsl:param name="name"/>
- <html>
- <head>
- <title>Unit Test Results: Package <xsl:value-of select="$name"/></title>
- <xsl:if test="$output.sorttable = 1">
- <script language="JavaScript" src="http://www.phing.info/support/sorttable.js"/>
- </xsl:if>
- <xsl:call-template name="create.stylesheet.link">
- <xsl:with-param name="package.name" select="$name"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
- <xsl:call-template name="pageHeader"/>
- <h3>Package <xsl:value-of select="$name"/></h3>
-
- <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="class.metrics.header"/>
- <xsl:apply-templates select="." mode="print.metrics"/>
- </table-->
-
- <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
- <xsl:if test="count($insamepackage) &gt; 0">
- <h2>Classes</h2>
- <p>
- <table class="details sortable" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <xsl:apply-templates select="$insamepackage" mode="print.test">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </table>
- </p>
- </xsl:if>
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-
-<!--
- transform string like a.b.c to ../../../
- @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
- <xsl:param name="path"/>
- <xsl:if test="contains($path,'.')">
- <xsl:text>../</xsl:text>
- <xsl:call-template name="path">
- <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not(contains($path,'.')) and not($path = '')">
- <xsl:text>../</xsl:text>
- </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
- <xsl:param name="package.name"/>
- <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
- <h1>Unit Test Results</h1>
- <table width="100%">
- <tr>
- <td align="left"></td>
- <td align="right">Designed for use with <a href='http://www.phpunit.de'>PHPUnit</a> and <a href='http://www.phing.info/'>Phing</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- Page Footer -->
-<xsl:template name="pageFooter">
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td class="small">Report generated at <xsl:value-of select="date:date-time()"/></td></tr>
- </table>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
- <tr valign="top">
- <th width="80%">Name</th>
- <th>Tests</th>
- <th>Errors</th>
- <th>Failures</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
- <tr valign="top">
- <th>Name</th>
- <th>Status</th>
- <th width="80%">Type</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
- <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
- <xsl:otherwise>Pass</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
- <td><xsl:apply-templates select="@tests"/></td>
- <td><xsl:apply-templates select="@errors"/></td>
- <td><xsl:apply-templates select="@failures"/></td>
- <td><xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="error">Error</xsl:when>
- <xsl:when test="failure">Failure</xsl:when>
- <xsl:otherwise>TableRowColor</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="@name"/></td>
- <xsl:choose>
- <xsl:when test="failure">
- <td>Failure</td>
- <td><xsl:apply-templates select="failure"/></td>
- </xsl:when>
- <xsl:when test="error">
- <td>Error</td>
- <td><xsl:apply-templates select="error"/></td>
- </xsl:when>
- <xsl:otherwise>
- <td>Success</td>
- <td></td>
- </xsl:otherwise>
- </xsl:choose>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-
-<!-- Note : the below template error and failure are the same style
- so just call the same style store in the toolkit template -->
-<xsl:template match="failure">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the testcase template -->
-<xsl:template name="display-failures">
- <xsl:choose>
- <xsl:when test="not(@message)">N/A</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@message"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- display the stacktrace -->
- <br/><br/>
- <code>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="."/>
- </xsl:call-template>
- </code>
-</xsl:template>
-
-<!--
- template that will convert a carriage return into a br tag
- @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
- <xsl:param name="word"/>
- <xsl:choose>
- <xsl:when test="contains($word,'&#x0A;')">
- <xsl:value-of select="substring-before($word,'&#x0A;')"/>
- <br />
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="substring-after($word,'&#x0A;')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$word"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="display-time">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-</xsl:stylesheet>
-
diff --git a/buildscripts/phing/etc/phpunit-noframes.xsl b/buildscripts/phing/etc/phpunit-noframes.xsl
deleted file mode 100755
index d71e58d9..00000000
--- a/buildscripts/phing/etc/phpunit-noframes.xsl
+++ /dev/null
@@ -1,448 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:exsl="http://exslt.org/common"
- xmlns:str="http://exslt.org/strings"
- xmlns:date="http://exslt.org/dates-and-times"
- extension-element-prefixes="exsl str date">
-<xsl:include href="str.replace.function.xsl"/>
-<xsl:output method="html" indent="yes" encoding="US-ASCII"
- doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
- Copyright 2001-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<!--
-
- Sample stylesheet to be used with Phing/PHPUnit output.
- Based on JUnit stylesheets from Apache Ant.
-
- It creates a non-framed report that can be useful to send via
- e-mail or such.
-
- @author Michiel Rook <a href="mailto:michiel.rook@gmail.com"/>
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
- @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/>
-
--->
-<xsl:param name="output.sorttable" select="'.'"/>
-
-<xsl:template match="testsuites">
- <html>
- <head>
- <title>Unit Test Results</title>
- <xsl:if test="$output.sorttable = 1">
- <script language="JavaScript" src="http://www.phing.info/support/sorttable.js"/>
- </xsl:if>
- <style type="text/css">
- body {
- font-family: verdana,arial,helvetica;
- color:#000000;
- font-size: 12px;
- }
- table tr td, table tr th {
- font-family: verdana,arial,helvetica;
- font-size: 12px;
- }
- table.details tr th{
- font-family: verdana,arial,helvetica;
- font-weight: bold;
- text-align:left;
- background:#a6caf0;
- }
- table.details tr td{
- background:#eeeee0;
- }
-
- p {
- line-height:1.5em;
- margin-top:0.5em; margin-bottom:1.0em;
- font-size: 12px;
- }
- h1 {
- margin: 0px 0px 5px;
- font-family: verdana,arial,helvetica;
- }
- h2 {
- margin-top: 1em; margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
- }
- h3 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
- }
- h4 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
- }
- h5 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
- }
- h6 {
- margin-bottom: 0.5em;
- font-family: verdana,arial,helvetica;
- }
- .Error {
- font-weight:bold; color:red;
- }
- .Failure {
- font-weight:bold; color:purple;
- }
- .small {
- font-size: 9px;
- }
- a {
- color: #003399;
- }
- a:hover {
- color: #888888;
- }
- <xsl:if test="$output.sorttable = 1">
- .sortable th {
- cursor: pointer;
- }
- </xsl:if>
- </style>
- </head>
- <body>
- <a name="top"></a>
- <xsl:call-template name="pageHeader"/>
-
- <!-- Summary part -->
- <xsl:call-template name="summary"/>
- <hr size="1" width="95%" align="left"/>
-
- <!-- Package List part -->
- <xsl:call-template name="packagelist"/>
- <hr size="1" width="95%" align="left"/>
-
- <!-- For each package create its part -->
- <xsl:call-template name="packages"/>
- <hr size="1" width="95%" align="left"/>
-
- <!-- For each class create the part -->
- <xsl:call-template name="classes"/>
-
- <xsl:call-template name="pageFooter"/>
- </body>
- </html>
-</xsl:template>
-
-
-
- <!-- ================================================================== -->
- <!-- Write a list of all packages with an hyperlink to the anchor of -->
- <!-- of the package name. -->
- <!-- ================================================================== -->
- <xsl:template name="packagelist">
- <h2>Packages</h2>
- Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
- <table class="details sortable" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
- <!-- list all packages recursively -->
- <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:sort select="@package"/>
- <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
- <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
- <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
- <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
- <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
-
- <!-- write a summary for the package -->
- <tr valign="top">
- <!-- set a nice color depending if there is an error/failure -->
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
- <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
- <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
- <td><xsl:value-of select="$testCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- <td><xsl:value-of select="$failureCount"/></td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="$timeCount"/>
- </xsl:call-template>
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </xsl:template>
-
-
- <!-- ================================================================== -->
- <!-- Write a package level report -->
- <!-- It creates a table with values from the document: -->
- <!-- Name | Tests | Errors | Failures | Time -->
- <!-- ================================================================== -->
- <xsl:template name="packages">
- <!-- create an anchor to this package name -->
- <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
- <xsl:sort select="@package"/>
- <a name="{@package}"></a>
- <h3>Package <xsl:value-of select="@package"/></h3>
-
- <table class="details sortable" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testsuite.test.header"/>
-
- <!-- match the testsuites of this package -->
- <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
- </table>
- <a href="#top">Back to top</a>
- <p/>
- <p/>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="classes">
- <xsl:for-each select="testsuite">
- <xsl:sort select="@name"/>
- <!-- create an anchor to this class name -->
- <a name="{@name}"></a>
- <h3>TestCase <xsl:value-of select="@name"/></h3>
-
- <table class="details sortable" border="0" cellpadding="5" cellspacing="2" width="95%">
- <xsl:call-template name="testcase.test.header"/>
- <!--
- test can even not be started at all (failure to load the class)
- so report the error directly
- -->
- <xsl:if test="./error">
- <tr class="Error">
- <td colspan="4"><xsl:apply-templates select="./error"/></td>
- </tr>
- </xsl:if>
- <xsl:apply-templates select="./testcase | ./testsuite/testcase" mode="print.test"/>
- </table>
- <p/>
-
- <a href="#top">Back to top</a>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="summary">
- <h2>Summary</h2>
- <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
- <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
- <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
- <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
- <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
- <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
- <tr valign="top">
- <th>Tests</th>
- <th>Failures</th>
- <th>Errors</th>
- <th>Success rate</th>
- <th>Time</th>
- </tr>
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
- <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="$testCount"/></td>
- <td><xsl:value-of select="$failureCount"/></td>
- <td><xsl:value-of select="$errorCount"/></td>
- <td>
- <xsl:call-template name="display-percent">
- <xsl:with-param name="value" select="$successRate"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="$timeCount"/>
- </xsl:call-template>
- </td>
-
- </tr>
- </table>
- <table border="0" width="95%">
- <tr>
- <td style="text-align: justify;">
- Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
- </td>
- </tr>
- </table>
- </xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
- <h1>Unit Test Results</h1>
- <table width="100%">
- <tr>
- <td align="left"></td>
- <td align="right">Designed for use with <a href='http://www.phpunit.de'>PHPUnit</a> and <a href='http://www.phing.info/'>Phing</a>.</td>
- </tr>
- </table>
- <hr size="1"/>
-</xsl:template>
-
-<!-- Page Footer -->
-<xsl:template name="pageFooter">
- <table width="100%">
- <tr><td><hr noshade="yes" size="1"/></td></tr>
- <tr><td class="small">Report generated at <xsl:value-of select="date:date-time()"/></td></tr>
- </table>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="header">
- <tr valign="top">
- <th width="80%">Name</th>
- <th>Tests</th>
- <th>Errors</th>
- <th>Failures</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
- <tr valign="top">
- <th width="80%">Name</th>
- <th>Tests</th>
- <th>Errors</th>
- <th>Failures</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
- <tr valign="top">
- <th>Name</th>
- <th>Status</th>
- <th width="80%">Type</th>
- <th nowrap="nowrap">Time(s)</th>
- </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
- <tr valign="top">
- <!-- set a nice color depending if there is an error/failure -->
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
- <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
-
- <!-- print testsuite information -->
- <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
- <td><xsl:value-of select="@tests"/></td>
- <td><xsl:value-of select="@errors"/></td>
- <td><xsl:value-of select="@failures"/></td>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
- <tr valign="top">
- <xsl:attribute name="class">
- <xsl:choose>
- <xsl:when test="failure | error">Error</xsl:when>
- </xsl:choose>
- </xsl:attribute>
- <td><xsl:value-of select="@name"/></td>
- <xsl:choose>
- <xsl:when test="failure">
- <td>Failure</td>
- <td><xsl:apply-templates select="failure"/></td>
- </xsl:when>
- <xsl:when test="error">
- <td>Error</td>
- <td><xsl:apply-templates select="error"/></td>
- </xsl:when>
- <xsl:otherwise>
- <td>Success</td>
- <td></td>
- </xsl:otherwise>
- </xsl:choose>
- <td>
- <xsl:call-template name="display-time">
- <xsl:with-param name="value" select="@time"/>
- </xsl:call-template>
- </td>
- </tr>
-</xsl:template>
-
-
-<xsl:template match="failure">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
- <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the tescase template -->
-<xsl:template name="display-failures">
- <xsl:choose>
- <xsl:when test="not(@message)">N/A</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@message"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- display the stacktrace -->
- <code>
- <br/><br/>
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="."/>
- </xsl:call-template>
- </code>
-</xsl:template>
-
-<!--
- template that will convert a carriage return into a br tag
- @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
- <xsl:param name="word"/>
- <xsl:choose>
- <xsl:when test="contains($word,'&#x0A;')">
- <xsl:value-of select="substring-before($word,'&#x0A;')"/>
- <br />
- <xsl:call-template name="br-replace">
- <xsl:with-param name="word" select="substring-after($word,'&#x0A;')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$word"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="display-time">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
- <xsl:param name="value"/>
- <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/buildscripts/phing/etc/str.replace.function.xsl b/buildscripts/phing/etc/str.replace.function.xsl
deleted file mode 100755
index 5d74e86c..00000000
--- a/buildscripts/phing/etc/str.replace.function.xsl
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:str="http://exslt.org/strings"
- xmlns:func="http://exslt.org/functions"
- xmlns:exsl="http://exslt.org/common"
- extension-element-prefixes="str exsl func">
-
-<func:function name="str:replace">
- <xsl:param name="string" select="''" />
- <xsl:param name="search" select="/.." />
- <xsl:param name="replace" select="/.." />
- <xsl:choose>
- <xsl:when test="not($string)">
- <func:result select="/.." />
- </xsl:when>
- <xsl:when test="function-available('exsl:node-set')">
- <!-- this converts the search and replace arguments to node sets
- if they are one of the other XPath types -->
- <xsl:variable name="search-nodes-rtf">
- <xsl:copy-of select="$search" />
- </xsl:variable>
- <xsl:variable name="replace-nodes-rtf">
- <xsl:copy-of select="$replace" />
- </xsl:variable>
- <xsl:variable name="replacements-rtf">
- <xsl:for-each select="exsl:node-set($search-nodes-rtf)/node()">
- <xsl:variable name="pos" select="position()" />
- <replace search="{.}">
- <xsl:copy-of select="exsl:node-set($replace-nodes-rtf)/node()[$pos]" />
- </replace>
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="sorted-replacements-rtf">
- <xsl:for-each select="exsl:node-set($replacements-rtf)/replace">
- <xsl:sort select="string-length(@search)" data-type="number" order="descending" />
- <xsl:copy-of select="." />
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="result">
- <xsl:choose>
- <xsl:when test="not($search)">
- <xsl:value-of select="$string" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="str:_replace">
- <xsl:with-param name="string" select="$string" />
- <xsl:with-param name="replacements" select="exsl:node-set($sorted-replacements-rtf)/replace" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <func:result select="exsl:node-set($result)/node()" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">
- ERROR: function implementation of str:replace() relies on exsl:node-set().
- </xsl:message>
- </xsl:otherwise>
- </xsl:choose>
-</func:function>
-
-<xsl:template name="str:_replace">
- <xsl:param name="string" select="''" />
- <xsl:param name="replacements" select="/.." />
- <xsl:choose>
- <xsl:when test="not($string)" />
- <xsl:when test="not($replacements)">
- <xsl:value-of select="$string" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="replacement" select="$replacements[1]" />
- <xsl:variable name="search" select="$replacement/@search" />
- <xsl:choose>
- <xsl:when test="not(string($search))">
- <xsl:value-of select="substring($string, 1, 1)" />
- <xsl:copy-of select="$replacement/node()" />
- <xsl:call-template name="str:_replace">
- <xsl:with-param name="string" select="substring($string, 2)" />
- <xsl:with-param name="replacements" select="$replacements" />
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($string, $search)">
- <xsl:call-template name="str:_replace">
- <xsl:with-param name="string" select="substring-before($string, $search)" />
- <xsl:with-param name="replacements" select="$replacements[position() > 1]" />
- </xsl:call-template>
- <xsl:copy-of select="$replacement/node()" />
- <xsl:call-template name="str:_replace">
- <xsl:with-param name="string" select="substring-after($string, $search)" />
- <xsl:with-param name="replacements" select="$replacements" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="str:_replace">
- <xsl:with-param name="string" select="$string" />
- <xsl:with-param name="replacements" select="$replacements[position() > 1]" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/BuildPradoPEARPackageTask.php b/buildscripts/phing/tasks/BuildPradoPEARPackageTask.php
deleted file mode 100644
index a8128d12..00000000
--- a/buildscripts/phing/tasks/BuildPradoPEARPackageTask.php
+++ /dev/null
@@ -1,205 +0,0 @@
-<?php
-require_once 'phing/tasks/system/MatchingTask.php';
-include_once 'phing/types/FileSet.php';
-include_once 'phing/tasks/ext/pearpackage/Fileset.php';
-require_once 'PEAR/PackageFileManager.php';
-require_once 'PEAR/PackageFileManager/File.php';
-
-/**
- * Task for creating a PEAR package definition file package.xml to be used with
- * the PEAR distribution of PRADO.
- *
- * @author Knut Urdalen <knut.urdalen@gmail.com>
- * @package phing.tasks.ext
- */
-class BuildPradoPEARPackageTask extends MatchingTask {
-
- /* Base directory for reading files. */
- private $dir;
-
- /* PRADO version */
- private $version;
-
- /* PRADO state */
- private $state = 'stable';
- private $notes;
- private $filesets = array();
-
- /* Package file */
- private $packageFile;
-
- /**
- * Intitialize the task and throw a BuildException if something is missing.
- */
- public function init() {
- include_once 'PEAR/PackageFileManager2.php';
- if(!class_exists('PEAR_PackageFileManager2')) {
- throw new BuildException("You must have installed PEAR_PackageFileManager2 (PEAR_PackageFileManager >= 1.6.0) in order to create a PEAR package.xml file.");
- }
- }
-
- /**
- * Helper function to set PEAR package options.
- *
- * @param PEAR_PackageFileManager2 $pkg
- */
- private function setOptions($pkg) {
- $options['baseinstalldir'] = 'prado3';
- $options['packagedirectory'] = $this->dir->getAbsolutePath();
-
- if(empty($this->filesets)) {
- throw new BuildException("You must use a <fileset> tag to specify the files to include in the package.xml");
- }
-
- // Use PEAR_PackageFileManager_Fileset from phing as file list generator
- $options['filelistgenerator'] = 'Fileset';
-
- // Some Phing-specific options needed by our Fileset reader
- $options['phing_project'] = $this->getProject();
- $options['phing_filesets'] = $this->filesets;
-
- if($this->packageFile !== null) {
- // Create one with full path
- $f = new PhingFile($this->packageFile->getAbsolutePath());
- $options['packagefile'] = $f->getName();
- // Must end in trailing slash
- $options['outputdirectory'] = $f->getParent().DIRECTORY_SEPARATOR;
- $this->log("Creating package file: ".$f->getPath(), PROJECT_MSG_INFO);
- } else {
- $this->log("Creating [default] package.xml file in base directory.", PROJECT_MSG_INFO);
- }
- $options['dir_roles'] = array('framework' => 'php');
- $pkg->setOptions($options);
- }
-
- /**
- * Main entry point.
- * @return void
- */
- public function main() {
-
- if($this->dir === null) {
- throw new BuildException("You must specify the \"dir\" attribute for PEAR package task.");
- }
-
- if($this->version === null) {
- throw new BuildException("You must specify the \"version\" attribute for PEAR package task.");
- }
-
- $package = new PEAR_PackageFileManager2();
- $this->setOptions($package);
-
- // the hard-coded stuff
- $package->setPackage('prado3');
- $package->setSummary('PRADO is a component-based and event-driven framework for rapid Web programming in PHP 5.');
- $package->setDescription('PRADO reconceptualizes Web application development in terms of components, events and properties instead of procedures, URLs and query parameters.
-
-A PRADO component is a combination of a specification file (in XML), an HTML template and a PHP class. PRADO components are combined together to form larger components or complete PRADO pages.
-
-Developing PRADO Web applications mainly involves instantiating prebuilt and application-specific component types, configuring them by setting their properties, responding to their events by writing handler functions, and composing them into application tasks. Event-driven programming
-
-PRADO provides the following benefits for Web application developers:
-
-o Reusability - Codes following the PRADO component protocol are highly reusable. Everything in PRADO is a reusable component.
-o Ease of Use - Creating and using components are extremely easy. Usually they simply involve configuring component properties.
-o Robustness - PRADO frees developers from writing boring, buggy code. They code in terms of objects, methods and properties, instead of URLs and query parameters. The latest PHP5 exception mechanism is exploited that enables line-precise error reporting.
-o Performance - PRADO uses a cache technique to ensure the performance of applications based on it. The performance is in fact comparable to those based on commonly used template engines.
-o Team Integration - PRADO enables separation of content and presentation. Components, typically pages, have their content (logic) and presentation stored in different files.');
- $package->setChannel('pear.pradosoft.com');
- $package->setPackageType('php');
-
- $package->setReleaseVersion($this->version);
- $package->setAPIVersion($this->version);
-
- $package->setReleaseStability($this->state);
- $package->setAPIStability($this->state);
-
- $package->setNotes($this->notes);
-
- $package->setLicense('BSD', 'http://www.opensource.org/licenses/bsd-license.php');
-
- // Add package maintainers
- $package->addMaintainer('lead', 'qxue', 'Qiang Xue', 'qiang.xue@gmail.com');
- $package->addMaintainer('lead', 'jrags', 'Jason Ragsdale', 'jrags@jasrags.net');
- $package->addMaintainer('lead', 'knut', 'Knut Urdalen', 'knut.urdalen@gmail.com');
-
- // "core" dependencies
- $package->setPhpDep('5.1.0');
- $package->setPearinstallerDep('1.4.7');
-
- $package->generateContents();
-
- $e = $package->writePackageFile();
-
- if(PEAR::isError($e)) {
- throw new BuildException("Unable to write package file.", new Exception($e->getMessage()));
- }
- }
-
- /**
- * Used by the PEAR_PackageFileManager_PhingFileSet lister.
- * @return array FileSet[]
- */
- public function getFileSets() {
- return $this->filesets;
- }
-
- // -------------------------------
- // Set properties from XML
- // -------------------------------
-
- /**
- * Nested creator, creates a FileSet for this task
- *
- * @return FileSet The created fileset object
- */
- function createFileSet() {
- $num = array_push($this->filesets, new FileSet());
- return $this->filesets[$num-1];
- }
-
- /**
- * Set the version we are building.
- * @param string $v
- * @return void
- */
- public function setVersion($v){
- $this->version = $v;
- }
-
- /**
- * Set the state we are building.
- * @param string $v
- * @return void
- */
- public function setState($v) {
- $this->state = $v;
- }
-
- /**
- * Sets release notes field.
- * @param string $v
- * @return void
- */
- public function setNotes($v) {
- $this->notes = $v;
- }
- /**
- * Sets "dir" property from XML.
- * @param PhingFile $f
- * @return void
- */
- public function setDir(PhingFile $f) {
- $this->dir = $f;
- }
-
- /**
- * Sets the file to use for generated package.xml
- */
- public function setDestFile(PhingFile $f) {
- $this->packageFile = $f;
- }
-
-}
-
-
diff --git a/buildscripts/phing/tasks/ManualIndexTask.php b/buildscripts/phing/tasks/ManualIndexTask.php
index c689d4c5..3590a500 100644
--- a/buildscripts/phing/tasks/ManualIndexTask.php
+++ b/buildscripts/phing/tasks/ManualIndexTask.php
@@ -34,5 +34,3 @@ class ManualIndexTask extends Task
$api->create_index();
}
}
-
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/PradoDocTask.php b/buildscripts/phing/tasks/PradoDocTask.php
index 944fde82..449ff711 100644
--- a/buildscripts/phing/tasks/PradoDocTask.php
+++ b/buildscripts/phing/tasks/PradoDocTask.php
@@ -16,7 +16,7 @@ class PradoDocTask extends Task
private $ignorelist = '';
- private $output = "";
+ private $template = "";
private $linksource = false;
@@ -66,11 +66,11 @@ class PradoDocTask extends Task
}
/**
- * Set the output type
+ * Set the template
*/
- function setOutput($output)
+ function setTemplate($template)
{
- $this->output = $output;
+ $this->template = $template;
}
/**
@@ -92,6 +92,7 @@ class PradoDocTask extends Task
function main()
{
$arguments = $this->constructArguments();
+ echo $this->phpdoc . " " . $arguments."\n";
passthru($this->phpdoc . " " . $arguments, $retval);
}
@@ -109,7 +110,7 @@ class PradoDocTask extends Task
if ($this->title)
{
- $arguments.= "-ti \"" . $this->title . "\" ";
+ $arguments.= "--title \"" . $this->title . "\" ";
}
if ($this->destdir)
@@ -122,9 +123,9 @@ class PradoDocTask extends Task
$arguments.= "-d \"" . $this->sourcepath->__toString() . "\" ";
}
- if ($this->output)
+ if ($this->template)
{
- $arguments.= "-o \"" . $this->output . "\" ";
+ $arguments.= "--template \"" . $this->template . "\" ";
}
if ($this->linksource)
@@ -145,5 +146,3 @@ class PradoDocTask extends Task
return $arguments;
}
}
-
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/PradoPackageTask.php b/buildscripts/phing/tasks/PradoPackageTask.php
deleted file mode 100644
index 61031206..00000000
--- a/buildscripts/phing/tasks/PradoPackageTask.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-require_once 'phing/Task.php';
-
-/**
- * Task to run phpDocumentor for PRADO API docs.
- */
-class PradoPackageTask extends Task
-{
- protected $filelists = array();
- protected $output;
- protected $strip=false;
-
- function setOutput(PhingFile $file)
- {
- $this->output=$file;
- }
-
- function setStrip($value)
- {
- $this->strip = (boolean)$value;
- }
-
- /**
- * Supports embedded <filelist> element.
- * @return FileList
- */
- function createFileList() {
- $num = array_push($this->filelists, new FileList());
- return $this->filelists[$num-1];
- }
-
- function main()
- {
- $project = $this->getProject();
-
- $content = '';
- $files=array();
- // append the files in the filelists
- foreach($this->filelists as $fl)
- {
- $fromDir = $fl->getDir($project);
- foreach($fl->getFiles($project) as $file)
- {
- $src = new PhingFile($fromDir,$file);
- $files[] = $file;
- $content .= file_get_contents($src->getAbsolutePath());
- }
- }
-
- $content = $this->processPhp($content,$files);
- file_put_contents($this->output->getAbsolutePath(), $content);
- }
-
- function processPhp($content,$files)
- {
- $content = preg_replace('/^\s*Prado::trace.*\s*;\s*$/mu','',$content);
- $content = preg_replace('/(PradoBase::using|Prado::using|require_once|include_once)\s*\([^\$].*?\);/mu','',$content);
- $content = str_replace('Prado::', 'PradoBase::', $content);
- $content = str_replace('PradoBase::getApplication()->getMode()', 'true', $content);
- $content = str_replace('TApplicationMode::Debug', 'true', $content);
- $content = str_replace('/Exceptions/messages', '/messages', $content);
- if($this->strip)
- $content=$this->strip_comments($content);
- $content=$this->strip_empty_lines($content);
- $content="<?php".$this->getFileComment($files).preg_replace('/(\?>\s?|<\?php\s?)/mu','',$content)."\n?>";
- return $content;
- }
-
-function strip_comments($source)
-{
- $tokens = token_get_all($source);
- /* T_ML_COMMENT does not exist in PHP 5.
- * The following three lines define it in order to
- * preserve backwards compatibility.
- *
- * The next two lines define the PHP 5-only T_DOC_COMMENT,
- * which we will mask as T_ML_COMMENT for PHP 4.
- */
- if (!defined('T_ML_COMMENT')) {
- @define('T_ML_COMMENT', T_COMMENT);
- } else {
- @define('T_DOC_COMMENT', T_ML_COMMENT);
- }
- $output = '';
- foreach ($tokens as $token) {
- if (is_string($token)) {
- // simple 1-character token
- $output .= $token;
- } else {
- // token array
- list($id, $text) = $token;
- switch ($id) {
- case T_COMMENT:
- case T_ML_COMMENT: // we've defined this
- case T_DOC_COMMENT: // and this
- // no action on comments
- break;
- default:
- // anything else -> output "as is"
- $output .= $text;
- break;
- }
- }
- }
- return $output;
-}
-
-function strip_empty_lines($string)
-{
- $string = preg_replace("/[\r\n]+[\s\t]*[\r\n]+/", "\n", $string);
- $string = preg_replace("/^[\s\t]*[\r\n]+/", "", $string);
- return $string;
-}
-function getFileComment($files)
-{
- $lastupdate=date('Y/m/d H:i:s');
- $year=date('Y');
- $fileList=array();
- foreach($files as $file)
- $fileList[] = " * $file";
- $fileListStr = implode("\n", $fileList);
-$comments="
-/**
- * Last Update: $lastupdate
- *
- * Do not modify this file manually. This file was auto-generated by combining
- * the following classes from the Prado framework.
- *
- * Files:
-{$fileListStr}
- *
- * @author Qiang Xue <qiang.xue@gmail.com>, Wei Zhuo <weizhuo@gmail.com>
- * @link http://www.pradosoft.com/
- * @copyright Copyright &copy; 2005-{$year} PradoSoft
- * @license http://www.pradosoft.com/license/
- */
-
-";
- return $comments;
-}
-}
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/PradoQuickStartDocs.php b/buildscripts/phing/tasks/PradoQuickStartDocs.php
deleted file mode 100644
index 1cbc5140..00000000
--- a/buildscripts/phing/tasks/PradoQuickStartDocs.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-require_once 'phing/Task.php';
-
-require_once(dirname(__FILE__).'/../../chmbuilder/ChmQuickstartBuilder.php');
-include(dirname(__FILE__).'/../../../framework/PradoBase.php');
-class Prado extends PradoBase
-{
- protected static $app;
-
- public static function setApplication($application)
- {
- self::$app=$application;
- }
-
- public static function getApplication()
- {
- return self::$app;
- }
-
- public static function setPathOfAlias($alias,$path)
- {
- $aliases = self::getPathAliases();
- if(!isset($aliases[$alias]))
- parent::setPathOfAlias($alias,$path);
- }
-}
-
-include(dirname(__FILE__).'/../../../framework/prado.php');
-
-/**
- * Task to run phpDocumentor for PRADO API docs.
- */
-class PradoQuickStartDocs extends Task
-{
- private $base_dir;
-
- private $destdir;
-
- private $page;
-
- /**
- * Set the destination directory for the generated documentation
- */
- function setOutput(PhingFile $destdir)
- {
- $this->destdir = $destdir;
- }
-
- function setPages($page)
- {
- $this->page = $page;
- }
-
- /**
- * Main entrypoint of the task
- */
- function main()
- {
- $output = $this->destdir->getAbsolutePath();
- $base = dirname(__FILE__).'/../../../demos/quickstart/protected/';
- error_reporting(0);
- $quickstart= new ChmQuickstartBuilder($base,$output);
-
- foreach(preg_split('/\s*[, ]+\s*/', $this->page) as $page)
- {
- $file = str_replace(array('/','.page'), array('_','.html'),$page);
- $this->log("Parsing $page");
- file_put_contents($output.'/'.$file, $this->parsePage($quickstart,$page));
- $this->log("Writing $file");
- }
- }
-
- protected function parsePage($quickstart, $page)
- {
- $_GET['page'] = str_replace(array('/','.page'),array('.',''),$page);
- $_GET['notheme'] = 'true';
- $content = $quickstart->parseHtmlContent($quickstart->getApplicationContent());
- //hide prado specific content
- $content = str_replace('<body>', '<style type="text/css">.prado-specific {display:none;}</style><body>', $content);
- return $content;
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/PradoSimpleTestTask.php b/buildscripts/phing/tasks/PradoSimpleTestTask.php
deleted file mode 100644
index 91e6e22f..00000000
--- a/buildscripts/phing/tasks/PradoSimpleTestTask.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/simpletest/SimpleTestTask.php';
-
-/**
- * Task to run PRADO unit tests
- */
-class PradoSimpleTestTask extends SimpleTestTask
-{
- private $_appdir;
-
- public function setAppdir($value)
- {
- $this->_appdir=$value;
- }
-
- function init()
- {
- $tools= realpath(dirname(__FILE__).'/../../../tests/test_tools/');
- include_once "$tools/unit_tests.php";
-
- if (!class_exists('SimpleReporter',false))
- throw new BuildException("SimpleTestTask depends on SimpleTest package being installed.", $this->getLocation());
-
- require_once 'phing/tasks/ext/simpletest/SimpleTestCountResultFormatter.php';
- require_once 'phing/tasks/ext/simpletest/SimpleTestFormatterElement.php';
- }
-
- function main()
- {
- if($this->_appdir)
- {
- $app = new TShellApplication($this->_appdir);
- $app->run();
- }
- parent::main();
- }
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/PradoTestTask.php b/buildscripts/phing/tasks/PradoTestTask.php
deleted file mode 100644
index a52e7c85..00000000
--- a/buildscripts/phing/tasks/PradoTestTask.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-require_once 'phing/Task.php';
-require_once 'phing/tasks/ext/phpunit/PHPUnitTask.php';
-require 'PHPUnit/Autoload.php';
-
-/**
- * Task to run PRADO unit tests
- */
-class PradoTestTask extends PHPUnitTask
-{
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/PradoVersionTask.php b/buildscripts/phing/tasks/PradoVersionTask.php
index 2a76d97c..4310cf60 100644
--- a/buildscripts/phing/tasks/PradoVersionTask.php
+++ b/buildscripts/phing/tasks/PradoVersionTask.php
@@ -52,5 +52,3 @@ class PradoVersionTask extends PropertyTask
return 'unknown';
}
}
-
-?> \ No newline at end of file
diff --git a/buildscripts/phing/tasks/QuickstartIndexTask.php b/buildscripts/phing/tasks/QuickstartIndexTask.php
index 5179d8ad..1cea4b3e 100644
--- a/buildscripts/phing/tasks/QuickstartIndexTask.php
+++ b/buildscripts/phing/tasks/QuickstartIndexTask.php
@@ -28,5 +28,3 @@ class QuickstartIndexTask extends Task
$quickstart->create_index();
}
}
-
-?> \ No newline at end of file
diff --git a/buildscripts/texbuilder/Page2Tex.php b/buildscripts/texbuilder/Page2Tex.php
index eea0ab7e..b0d37149 100644
--- a/buildscripts/texbuilder/Page2Tex.php
+++ b/buildscripts/texbuilder/Page2Tex.php
@@ -30,7 +30,7 @@ class Page2Tex
{
return "\begin{small}\begin{verbatim}".
str_replace($this->_verb_find, $this->_verb_replace, $matches[1]).
- "\end{verbatim}\end{small}\n";
+ '\end{verbatim}\end{small}'."\n";
}
function escape_verb($matches)
@@ -242,8 +242,8 @@ class Page2Tex
$this->_tabular_total = count($widths);
$this->_tabular_col = 0;
- $begin = "\begin{table}[!hpt]\centering \n \begin{tabular}{".$options['align']."}\\hline";
- $end = "\end{tabular} \n \end{table}\n";
+ $begin = '\begin{table}[!hpt]\centering '."\n".' \begin{tabular}{'.$options['align'].'}\hline';
+ $end = '\end{tabular} '."\n".'\end{table}'."\n";
$table = preg_replace('/<\/tr>/', '\\\\\\\\ \hline', $matches[2]);
$table = preg_replace('/<tr>/', '', $table);
$table = preg_replace('/<th>([^<]+)<\/th>/', '\textbf{$1} &', $table);
@@ -267,7 +267,7 @@ class Page2Tex
function mbox($matches)
{
- return "\n\begin{mybox}\n".$matches[1]."\n\end{mybox}\n";
+ return "\n\begin{mybox}\n".$matches[1]."\n".'\end{mybox}'."\n";
}
function get_chapter_label($chapter)
diff --git a/buildscripts/wikibuilder/DumpSkin.php b/buildscripts/wikibuilder/DumpSkin.php
deleted file mode 100644
index 6d4ba4b3..00000000
--- a/buildscripts/wikibuilder/DumpSkin.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-/**
- * MonoBook nouveau
- *
- * Translated from gwicke's previous TAL template version to remove
- * dependency on PHPTAL.
- *
- * @todo document
- * @package MediaWiki
- * @subpackage Skins
- */
-
-/**
- * MonoBook modified and redesigned by JasonPearce.com for FraternityManuals.com
- * Launched April 7, 2005
- */
-
-if( !defined( 'MEDIAWIKI' ) )
- die();
-
-/** */
-require_once('includes/SkinTemplate.php');
-
-/**
- * Inherit main code from SkinTemplate, set the CSS and template filter.
- * @todo document
- * @package MediaWiki
- * @subpackage Skins
- */
-class DumpSkin extends SkinTemplate {
- /** Using monobook. */
- function initPage( &$out ) {
- SkinTemplate::initPage( $out );
- $this->skinname = 'dump';
- $this->stylename = '';
- $this->template = 'DumpTemplate';
- }
-}
-
-class DumpTemplate extends QuickTemplate {
- /**
- * Template filter callback for MonoBook skin.
- * Takes an associative array of data set from a SkinTemplate-based
- * class, and a wrapper for MediaWiki's localization database, and
- * outputs a formatted page.
- *
- * @access private
- */
- function execute() {
-?>
-<!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="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
-<head>
-<meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
-<title>WIKI: <?php $this->text('pagetitle') ?>
-</title>
-<link rel="stylesheet" type="text/css" href="<?php $this->text('stylepath') ?>main.css" />
-</head>
-<body>
-<div id="globalWrapper">
- <div id="column-content">
- <div id="content"> <a name="top" id="contentTop"></a>
-
- <h1 class="firstHeading">
- <?php $this->text('title') ?>
- </h1>
- <h3 id="siteSub">
- <?php $this->msg('tagline') ?>
- </h3>
-
- <div id="bodyContent">
- <div id="contentSub">
- <?php $this->html('subtitle') ?>
- </div>
-
- <!-- BEGIN content -->
- <?php $this->html('bodytext') ?>
- <?php if($this->data['catlinks']) { ?>
- <div id="catlinks">
- <?php $this->html('catlinks') ?>
- </div>
- <?php } ?>
-
- <!-- END content -->
- </div>
-
- </div>
- </div>
-</div>
-<!-- end of the left (by default at least) column -->
-<img src="<?php $this->text('stylepath') ?>external.png" style="display:none"/>
-</body></html>
-<?php } } ?>
diff --git a/buildscripts/wikibuilder/build.php b/buildscripts/wikibuilder/build.php
deleted file mode 100644
index 3ee8a078..00000000
--- a/buildscripts/wikibuilder/build.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-$wiki_dir = 'c:/Wei/workspace/wiki/';
-$wiki_url = 'http://www.pradosoft.com/wiki/';
-
-$ROOT = dirname(__FILE__);
-
-$output_dir = $ROOT.'/../../build/docs/wiki';
-
-include_once(dirname(__FILE__).'/dumpHTML.php');
-
-if(!is_file($output_dir.'/external.png'))
-{
- copy($ROOT.'/external.png', $output_dir.'/external.png');
- copy($ROOT.'/main.css', $output_dir.'/main.css');
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/wikibuilder/dumpHTML.inc b/buildscripts/wikibuilder/dumpHTML.inc
deleted file mode 100644
index 5b8ca15a..00000000
--- a/buildscripts/wikibuilder/dumpHTML.inc
+++ /dev/null
@@ -1,390 +0,0 @@
-<?php
-/**
- * @package MediaWiki
- * @subpackage Maintenance
- */
-
-define( 'REPORTING_INTERVAL', 10 );
-
-require_once( 'includes/ImagePage.php' );
-require_once( 'includes/CategoryPage.php' );
-
-class DumpHTML {
- # Destination directory
- var $dest;
-
- # Show interlanguage links?
- var $interwiki = true;
-
- # Depth of HTML directory tree
- var $depth = 3;
-
- # Directory that commons images are copied into
- var $sharedStaticPath;
-
- # Relative path to image directory
- var $imageRel = 'upload';
-
- # Copy commons images instead of symlinking
- var $forceCopy = false;
-
- # Make links assuming the script path is in the same directory as
- # the destination
- var $alternateScriptPath = false;
-
- function DumpHTML( $settings ) {
- foreach ( $settings as $var => $value ) {
- $this->$var = $value;
- }
- }
-
- /**
- * Write a set of articles specified by start and end page_id
- * Skip categories and images, they will be done separately
- */
- function doArticles( $start, $end = false ) {
- $fname = 'DumpHTML::doArticles';
-
- $this->setupGlobals();
-
- if ( $end === false ) {
- $dbr =& wfGetDB( DB_SLAVE );
- $end = $dbr->selectField( 'page', 'max(page_id)', false, $fname );
- }
-
-
- for ($id = $start; $id <= $end; $id++) {
- if ( !($id % REPORTING_INTERVAL) ) {
- print "Processing ID: $id\r";
- }
- $title = DumpTitle::newFromID( $id );
- if ( $title ) {
- $ns = $title->getNamespace() ;
- if ( $ns != NS_CATEGORY ) {
- $this->doArticle( $title );
- }
- }
- }
- print "\n";
- }
-
- function doSpecials() {
- $this->doMainPage();
-
- $this->setupGlobals();
- print "Special:Categories...";
- $this->doArticle( DumpTitle::makeTitle( NS_SPECIAL, 'Categories' ) );
- print "\n";
- }
-
- /** Write the main page as index.html */
- function doMainPage() {
- global $wgMakeDumpLinks;
-
- print "Making index.html ";
-
- // Set up globals with no ../../.. in the link URLs
- $this->setupGlobals( 0 );
-
- // But still use that directory style
- $wgMakeDumpLinks = 3;
-
- $title = DumpTitle::newMainPage();
-
- $text = $this->getArticleHTML( $title );
- $file = fopen( "{$this->dest}/index.html", "w" );
- if ( !$file ) {
- print "\nCan't open index.html for writing\n";
- return false;
- }
- fwrite( $file, $text );
- fclose( $file );
- print "\n";
- }
-
- function doImageDescriptions() {
- global $wgSharedUploadDirectory;
-
- $fname = 'DumpHTML::doImageDescriptions';
-
- $this->setupGlobals( 3 );
-
- /**
- * Dump image description pages that don't have an associated article, but do
- * have a local image
- */
- $dbr =& wfGetDB( DB_SLAVE );
- extract( $dbr->tableNames( 'image', 'page' ) );
- $res = $dbr->select( 'image', array( 'img_name' ), false, $fname );
-
- $i = 0;
- print "Writing image description pages for local images\n";
- $num = $dbr->numRows( $res );
- while ( $row = $dbr->fetchObject( $res ) ) {
- if ( !( ++$i % REPORTING_INTERVAL ) ) {
- print "Done $i of $num\r";
- }
- $title = DumpTitle::makeTitle( NS_IMAGE, $row->img_name );
- if ( $title->getArticleID() ) {
- // Already done by dumpHTML
- continue;
- }
- $this->doArticle( $title );
- }
- print "\n";
-
- /**
- * Dump images which only have a real description page on commons
- */
- print "Writing description pages for commons images\n";
- $i = 0;
- for ( $hash = 0; $hash < 256; $hash++ ) {
- $dir = sprintf( "%01x/%02x", intval( $hash / 16 ), $hash );
- $paths = glob( "{$this->sharedStaticPath}/$dir/*" );
- $paths += glob( "{$this->sharedStaticPath}/thumb/$dir/*" );
-
- foreach ( $paths as $path ) {
- $file = basename( $path );
- if ( !(++$i % REPORTING_INTERVAL ) ) {
- print "$i\r";
- }
-
- $title = DumpTitle::makeTitle( NS_IMAGE, $file );
- $this->doArticle( $title );
- }
- }
- print "\n";
- }
-
- function doCategories() {
- $fname = 'DumpHTML::doCategories';
- $this->setupGlobals();
-
- $dbr =& wfGetDB( DB_SLAVE );
- print "Selecting categories...";
- $sql = 'SELECT DISTINCT cl_to FROM ' . $dbr->tableName( 'categorylinks' );
- $res = $dbr->query( $sql, $fname );
-
- print "\nWriting " . $dbr->numRows( $res ). " category pages\n";
- $i = 0;
- while ( $row = $dbr->fetchObject( $res ) ) {
- if ( !(++$i % REPORTING_INTERVAL ) ) {
- print "$i\r";
- }
- $title = DumpTitle::makeTitle( NS_CATEGORY, $row->cl_to );
- $this->doArticle( $title );
- }
- print "\n";
- }
-
-
- /** Write an article specified by title */
- function doArticle( $title ) {
- global $wgTitle, $wgSharedUploadPath, $wgSharedUploadDirectory;
- global $wgUploadDirectory;
-
- $text = $this->getArticleHTML( $title );
- if ( $text === false ) {
- return;
- }
-
- # Parse the XHTML to find the images
- $images = $this->findImages( $text );
- $this->copyImages( $images );
-
- # Write to file
- $this->writeArticle( $title, $text );
- }
-
- /** Write the given text to the file identified by the given title object */
- function writeArticle( &$title, $text ) {
- $filename = strtr($title->getHashedFilename(),':~','__');
- $fullName = "{$this->dest}/$filename";
- $fullDir = dirname( $fullName );
-
- wfMkdirParents( $fullDir, 0755 );
-
- $file = fopen( $fullName, 'w' );
- if ( !$file ) {
- print("Can't open file $fullName for writing\n");
- return;
- }
-
- fwrite( $file, $text );
- fclose( $file );
- }
-
- /** Set up globals required for parsing */
- function setupGlobals( $depth = NULL ) {
- global $wgUser, $wgTitle, $wgMakeDumpLinks, $wgStylePath, $wgArticlePath;
- global $wgUploadPath, $wgLogo, $wgMaxCredits, $wgSharedUploadPath;
- global $wgHideInterlanguageLinks, $wgUploadDirectory, $wgThumbnailScriptPath;
- global $wgSharedThumbnailScriptPath, $wgEnableParserCache;
-
- static $oldLogo = NULL;
-
- if ( is_null( $depth ) ) {
- $wgMakeDumpLinks = $this->depth;
- } else {
- $wgMakeDumpLinks = $depth;
- }
-
- if ( $this->alternateScriptPath ) {
- if ( $wgMakeDumpLinks == 0 ) {
- $wgScriptPath = '.';
- } else {
- $wgScriptPath = '..' . str_repeat( '/..', $wgMakeDumpLinks - 1 );
- }
- } else {
- $wgScriptPath = '..' . str_repeat( '/..', $wgMakeDumpLinks );
- }
-
- $wgArticlePath = str_repeat( '../', $wgMakeDumpLinks ) . '$1';
-
- # Logo image
- # Allow for repeated setup
- if ( !is_null( $oldLogo ) ) {
- $wgLogo = $oldLogo;
- } else {
- $oldLogo = $wgLogo;
- }
-
- if ( strpos( $wgLogo, $wgUploadPath ) === 0 ) {
- # If it's in the upload directory, rewrite it to the new upload directory
- $wgLogo = "$wgScriptPath/{$this->imageRel}/" . substr( $wgLogo, strlen( $wgUploadPath ) + 1 );
- } elseif ( $wgLogo{0} == '/' ) {
- # This is basically heuristic
- # Rewrite an absolute logo path to one relative to the the script path
- $wgLogo = $wgScriptPath . $wgLogo;
- }
-
- $wgScriptPath = substr($wgScriptPath,3);
-
- $wgStylePath = $wgScriptPath ? "$wgScriptPath/" : '';
- $wgUploadPath = "$wgScriptPath/{$this->imageRel}";
- $wgSharedUploadPath = "$wgUploadPath/shared";
- $wgMaxCredits = -1;
- $wgHideInterlangageLinks = !$this->interwiki;
- $wgThumbnailScriptPath = $wgSharedThumbnailScriptPath = false;
- $wgEnableParserCache = false;
-
- $wgUser = new User;
- $wgUser->setOption( 'skin', 'htmldump' );
- $wgUser->setOption( 'editsection', 0 );
-
- $this->sharedStaticPath = "$wgUploadDirectory/shared";
-
- }
-
- /** Reads the content of a title object, executes the skin and captures the result */
- function getArticleHTML( &$title ) {
- global $wgOut, $wgTitle, $wgArticle, $wgUser, $wgUseCategoryMagic;
-
- $wgOut = new OutputPage;
- $wgOut->setParserOptions( new ParserOptions );
-
- $wgTitle = $title;
- if ( is_null( $wgTitle ) ) {
- return false;
- }
-
- $ns = $wgTitle->getNamespace();
- if ( $ns == NS_SPECIAL ) {
- SpecialPage::executePath( $wgTitle );
- } else {
- if ( $ns == NS_IMAGE ) {
- $wgArticle = new ImagePage( $wgTitle );
- } elseif ( $wgUseCategoryMagic && $ns == NS_CATEGORY ) {
- $wgArticle = new CategoryPage( $wgTitle );
- } else {
- $wgArticle = new Article( $wgTitle );
- }
- $wgArticle->view();
- }
-
- $sk =& $wgUser->getSkin();
- ob_start();
- $sk->outputPage( $wgOut );
- $text = ob_get_contents();
- ob_end_clean();
-
- $text = str_replace(array('/:/','%7E'), array('/_/','_'), $text);
-
- return $text;
- }
-
- /** Returns image paths used in an XHTML document */
- function findImages( $text ) {
- global $wgOutputEncoding, $wgDumpImages;
- $parser = xml_parser_create( $wgOutputEncoding );
- xml_set_element_handler( $parser, 'wfDumpStartTagHandler', 'wfDumpEndTagHandler' );
-
- $wgDumpImages = array();
- xml_parse( $parser, $text );
- xml_parser_free( $parser );
-
- return $wgDumpImages;
- }
-
- /**
- * Copy images (or create symlinks) from commons to a static directory.
- * This is necessary even if you intend to distribute all of commons, because
- * the directory contents is used to work out which image description pages
- * are needed.
- */
- function copyImages( $images ) {
- global $wiki_dir, $output_dir;
- global $wgSharedUploadPath, $wgSharedUploadDirectory;
- # Find shared uploads and copy them into the static directory
- $sharedPathLength = strlen( $wgSharedUploadPath );
- foreach ( $images as $image => $dummy ) {
- # Is it shared?
- if ( strpos($image, 'upload') > 0) {
- # Reconstruct full filename
- $rel = substr( $image, strpos($image,'upload')+7 ); // +1 for slash
- $sourceLoc = $wiki_dir."images/$rel";
- $staticLoc = "$output_dir/upload/$rel";
-// print "Copying $sourceLoc to $staticLoc\n";
-
- # Copy to static directory
- if ( !file_exists( $staticLoc ) ) {
- wfMkdirParents( dirname( $staticLoc ), 0755 );
- //if ( function_exists( 'symlink' ) && !$this->forceCopy ) {
- // symlink( $sourceLoc, $staticLoc );
- //} else {
- copy( $sourceLoc, $staticLoc );
- //}
- }
-
- if ( substr( $rel, 0, 6 ) == 'thumb/' ) {
- # That was a thumbnail
- # We will also copy the real image
- $parts = explode( '/', $rel );
- $rel = "{$parts[1]}/{$parts[2]}/{$parts[3]}";
- $sourceLoc = $wiki_dir."images/$rel";
- $staticLoc = "$output_dir/upload/$rel";
-# print "Copying $sourceLoc to $staticLoc\n";
- if ( !file_exists( $staticLoc ) ) {
- wfMkdirParents( dirname( $staticLoc ), 0755 );
- copy( $sourceLoc, $staticLoc );
- }
- }
- }
- }
- }
-}
-
-/** XML parser callback */
-function wfDumpStartTagHandler( $parser, $name, $attribs ) {
- global $wgDumpImages;
-
- if ( $name == 'IMG' && isset( $attribs['SRC'] ) ) {
- $wgDumpImages[$attribs['SRC']] = true;
- }
-}
-
-/** XML parser callback */
-function wfDumpEndTagHandler( $parser, $name ) {}
-
-# vim: syn=php
-?>
diff --git a/buildscripts/wikibuilder/dumpHTML.php b/buildscripts/wikibuilder/dumpHTML.php
deleted file mode 100644
index d34e53ed..00000000
--- a/buildscripts/wikibuilder/dumpHTML.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-/**
- * @todo document
- * @package MediaWiki
- * @subpackage Maintenance
- */
-
-/**
- * Usage:
- * php dumpHTML.php [options...]
- *
- * -d <dest> destination directory
- * -s <start> start ID
- * -e <end> end ID
- * --images only do image description pages
- * --categories only do category pages
- * --special only do miscellaneous stuff
- * --force-copy copy commons instead of symlink, needed for Wikimedia
- * --interlang allow interlanguage links
- */
-
-
-$optionsWithArgs = array( 's', 'd', 'e' );
-
-require_once($wiki_dir. "/maintenance/commandLine.inc" );
-require_once(dirname(__FILE__)."/dumpHTML.inc" );
-
-class DummyUser extends User
-{
- function getSkin()
- {
- require_once(dirname(__FILE__).'/DumpSkin.php' );
- $this->mSkin =& new DumpSkin;
- return $this->mSkin;
- }
-}
-
-class DumpTitle extends Title
-{
- function getHashedDirectory()
- {
- return strtr(parent::getHashedDirectory(), '~:', '__');
- }
-}
-
-error_reporting( E_ALL & (~E_NOTICE) );
-define( 'CHUNK_SIZE', 50 );
-
-if ( !empty( $options['s'] ) ) {
- $start = $options['s'];
-} else {
- $start = 1280;
-}
-
-if ( !empty( $options['e'] ) ) {
- $end = $options['e'];
-} else {
- $dbr =& wfGetDB( DB_SLAVE );
- $end = $dbr->selectField( 'page', 'max(page_id)', false );
-}
-
-if ( !empty( $options['d'] ) ) {
- $dest = $options['d'];
-} else {
- $dest = $output_dir;
-}
-
-class DumpHTMLSkined extends DumpHTML
-{
- function setupGlobals( $depth = NULL )
- {
- parent::setupGlobals($depth);
- global $wgUser,$wgServer,$wiki_url;
- $wgUser = new DummyUser;
- $wgServer = $wiki_url;
- }
-}
-
-$d = new DumpHTMLSkined( array(
- 'dest' => $dest,
- 'forceCopy' => $options['force-copy'],
- 'alternateScriptPath' => $options['interlang'],
- 'interwiki' => $options['interlang'],
-));
-
-
-if ( $options['special'] ) {
- $d->doSpecials();
-} elseif ( $options['images'] ) {
- $d->doImageDescriptions();
-} elseif ( $options['categories'] ) {
- $d->doCategories();
-} else {
- print("Creating static HTML dump in directory $dest. \n".
- "Starting from page_id $start of $end.\n");
- $d->doArticles( $start, $end );
- $d->doImageDescriptions();
- $d->doCategories();
- $d->doMainPage();
-}
-
-?> \ No newline at end of file
diff --git a/buildscripts/wikibuilder/external.png b/buildscripts/wikibuilder/external.png
deleted file mode 100644
index 419c06fb..00000000
--- a/buildscripts/wikibuilder/external.png
+++ /dev/null
Binary files differ
diff --git a/buildscripts/wikibuilder/main.css b/buildscripts/wikibuilder/main.css
deleted file mode 100644
index c237dfc1..00000000
--- a/buildscripts/wikibuilder/main.css
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
------------------------------------------------------
-FraternityManuals.org MediaWiki 'monobook' style sheet for CSS2-capable browsers
-FileName: main.css
-Version: 2005.04.06
-Author: jasonpearce.com
------------------------------------------------------
-*/
-
-/*
------------------------------------------------------
-FraternityManuals.org basic tags rules CSS file for screen media
-FileName: browserdefaults_compact.css
-Version: 2005.04.06
-Author: jasonpearce.com
------------------------------------------------------
-*/
-
-@namespace url(http://www.w3.org/1999/xhtml);/* set default namespace to HTML */
-
-/* zero padding and margins */
-* {margin:0;padding:0;}
-
-/* set font size */
-
-/* blocks */
-address,blockquote,body,center,dd,dir,div,dl,dt,frameset,h1,h2,h3,h4,h5,h6,hr,html,isindex,listing,map,marquee,menu,multicol,ol,p,plaintext,pre,ul,xmp {display:block;}
-blockquote {margin:1em 40px;}
-blockquote[type=cite] {border-color:blue;border-left:solid;border-width:thin;margin:1em 0px;padding-left:1em;}
-listing {font-size:medium;margin:1em 0;white-space:pre;}
-p,dl,multicol {margin:1em 0;}
-plaintext,xmp,pre {margin:1em 0;white-space:pre;}
-
-/* headings */
-h1,h2,h3,h4,h5,h6 {font-weight:bold;}
-h1 {font-size:1.75em;}
-h2 {font-size:1.5em;}
-h3 {font-size:1.33em;}
-h4 {font-size:1.2em;}
-h5 {font-size:1em;}
-h6 {font-size:0.85em;}
-h1,h2,h3,h4,h5,h6 {margin:1.5em 0 0.25em 0;}
-h1 {margin-top:0;}
-
-/* link pseudo-classes */
-a:link {text-decoration:none;}
-a:visited {text-decoration:none;}
-a:hover {text-decoration:underline;}
-a:active {text-decoration:none;}
-
-/* tables */
-table {border-collapse:separate;border-spacing:2px;display:table;margin-bottom:0;margin-top:0;text-indent:0;}
-table[align="left"] {float:left;}
-table[align="right"] {float:right;text-align:start;}
-table[rules] {border-collapse:collapse;}
-caption {display:table-caption;text-align:center;}
-table[align="center"] > caption {margin-left:auto;margin-right:auto;}
-table[align="center"] > caption[align="left"] {margin-right:0;}
-table[align="center"] > caption[align="right"] {margin-left:0;}
-tr {display:table-row;vertical-align:inherit;}
-col {display:table-column;}
-colgroup {display:table-column-group;}
-tbody {display:table-row-group;vertical-align:middle;}
-thead {display:table-header-group;vertical-align:middle;}
-tfoot {display:table-footer-group;vertical-align:middle;}
-
-/* for XHTML tables without tbody */
-table > tr {vertical-align:middle;}
-td { display:table-cell;padding:1px;text-align:inherit; vertical-align:inherit;}
-th {display:table-cell;font-weight:bold;padding:1px;vertical-align:inherit;}
-
-/* inlines */
-b,strong {font-weight:bolder;}
-big {font-size:larger;}
-blink {text-decoration:blink;}
-i,address,cite,dfn,em,var {font-style:italic;}
-nobr {white-space:nowrap;}
-q:after {content:close-quote;}
-q:before {content:open-quote;}
-s,strike,del {text-decoration:line-through;}
-small {font-size:smaller;}
-sub {font-size:smaller;line-height:normal;vertical-align:sub;}
-sup {font-size:smaller;line-height:normal;vertical-align:super;}
-u,ins {text-decoration:underline;}
-
-/* titles */
-abbr[title],acronym[title] {border-bottom:dotted 1px;}
-
-/* lists */
-ul,menu,dir {list-style-type:disc;margin:1em 2em;}
-ol {list-style-type:decimal;margin:1em 2em;}
-li {display:list-item;}
-
-/* nested lists have no top/bottom margins */
-ul ul,ul ol,ul dir,ul menu,ul dl,ol ul,ol ol,ol dir,ol menu,ol dl,dir ul, dir ol, dir dir, dir menu, dir dl,menu ul,menu ol,menu dir,menu menu,menu dl,dl ul,dl ol,dl dir,dl menu,dl dl {margin-top:0;margin-bottom:0;}
-
-/* 2 deep unordered lists use a circle */
-ol ul,ul ul,menu ul,dir ul,ol menu,ul menu,menu menu,dir menu,ol dir, ul dir, menu dir, dir dir {list-style-type:circle;}
-
-/* 3 deep (or more) unordered lists use a square */
-ol ol ul, ol ul ul, ol menu ul, ol dir ul,ol ol menu,ol ul menu,ol menu menu,ol dir menu,ol ol dir, ol ul dir, ol menu dir, ol dir dir,ul ol ul, ul ul ul, ul menu ul, ul dir ul,ul ol menu,ul ul menu,ul menu menu,ul dir menu,ul ol dir, ul ul dir, ul menu dir, ul dir dir,menu ol ul,menu ul ul,menu menu ul,menu dir ul,menu ol menu,menu ul menu,menu menu menu,menu dir menu,menu ol dir, menu ul dir, menu menu dir, menu dir dir,dir ol ul, dir ul ul, dir menu ul, dir dir ul,dir ol menu, dir ul menu, dir menu menu, dir dir menu,dir ol dir,dir ul dir,dir menu dir,dir dir dir {list-style-type:square;}
-
-/* leafs */
-hr {border:1px;height:2px;margin:0.5em auto 0.5em auto;}
-img[usemap],object[usemap] {color:blue;cursor:pointer;}
-iframe {border:2px inset;}
-
-/* hidden elements */
-area,base,basefont,head,meta,noembed,noframes,noscript,param,script,style,title { display:none;}
-
-/* bidirectionality elements */
-*[dir="ltr"] {direction:ltr;unicode-bidi:embed;}
-*[dir="rtl"] {direction:rtl;unicode-bidi:embed;}
-address,blockquote,body,dd,div,dl,dt,fieldset,form,frame,frameset,h1,h2,h3,h4,h5,h6,iframe,noscript,noframes,object,ol,p,ul,applet,center,dir,hr,menu,pre,li,table,tr,thead,tbody,tfoot,col,colgroup,td,th,caption {unicode-bidi:embed;}
-bdo[dir="ltr"] {direction:ltr;unicode-bidi:bidi-override;}
-bdo[dir="rtl"] {direction:rtl;unicode-bidi:bidi-override;}
-
-/* print settings */
-@media print {
- @page {margin:10%;}
- blockquote,fieldset,pre {page-break-inside:avoid;}
- h1,h2,h3,h4,h5,h6 {page-break-after:avoid;page-break-inside:avoid;}
- ul,ol,dl {page-break-before:avoid;}
-}
-
-/* speech settings */
-@media speech {
- a:active {voice-family:betty,female;pitch-range:80;pitch:x-high;}
- a:link {voice-family:harry,male;}
- a:visited {voice-family:betty,female;}
- b {pitch:medium;pitch-range:60;stress:90;richness:90;}
- dfn {pitch:high;pitch-range:60;stress:60;}
- dt {stress:80;}
- em {pitch:medium;pitch-range:60;stress:60;richness:50;}
- h1 {pitch:x-low;pitch-range:90;}
- h1,h2,h3,h4,h5,h6 {voice-family:paul,male;stress:20;richness:90;}
- h2 {pitch:x-low;pitch-range:80;}
- h3 {pitch:low;pitch-range:70;}
- h4 {pitch:medium;pitch-range:60;}
- h5 {pitch:medium;pitch-range:50;}
- h6 {pitch:medium;pitch-range:40;}
- i {pitch:medium;pitch-range:60;stress:60;richness:50;}
- li,dt,dd {pitch:medium;richness:60;}
- pre,code,tt {pitch:medium;pitch-range:0;stress:0;richness:80;}
- s,strike {richness:0;}
- strong {pitch:medium;pitch-range:60;stress:90;richness:90;}
- u {richness:0;}
-}
-
-
-/* Typography & Colors -----------------------------------------------*/
-body {
- background-color: #ffffff; /* white */
- color: #333; /* dark grey */
- font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
- }
-img { border: 0px;}
-
-#titleBar {
- border-bottom: 1px solid #DBDBDB; /* light grey */
- }
-
-#content {
- font-size: 10pt;
- line-height: 1.5em;
- }
-
-code {
- font: 11pt 'Courier New', Courier, Fixed;
- background-color: #f9f9f9;
-}
-pre {
- padding: 0.5em;
- color: Black;
- background-color: #EEEEEE;
- line-height: 1.1em;
- font-size: 11pt;
-}
-
-acronym, abbr, span.caps {
- font-size: 0.9em;
- letter-spacing: .07em;
- }
-
-#column-one {
- font-size: 10pt;
- line-height: 1.2em;
- }
-
-#column-one {
- color: #444444;
- background-color: #F0F0F0;
- }
-
-#toc { /* table of contents */
- background: #FFF6EB; /* very light orange */
- border: 1px solid #FEBA63; /* light orange */
- }
-
-#toctitle {
- background: #FEBA63; /* light orange */
- color: #3F290C; /* very dark orange */
- }
-
-#footer {
- border-top: 1px solid silver;
- color: #999999;
- }
-
-
-/* Links -------------------------------------------------------------*/
-a {color: #3366CC;} /* red */
-a:hover {color: #3366CC;} /* red */
-
-p a:visited {color: #3366CC;} /* red */
-#content a.new {color: #DE0000;} /* green */
-
-#column-one a {color: #2F7300;} /* green */
-#column-one a:hover {color: #183A00;} /* dark green */
-#column-one .selected a {
- color: #183A00; /* dark green bold */
- font-weight: bolder;
- }
-
-#toc a {color: #2153B0;} /* blue */
-#toc a:hover {color: #173A7B;} /* dark blue */
-#toc p a:visited {color: #2153B0;} /* blue */
-
-#footer a {color: #999999;}
-#footer a:hover {color: #173A7B;} /* dark blue */
-
-/* LINK ICONS
-** keep the whitespace in front of the ^=, hides rule from konqueror
-** this is css3, the validator doesn't like it when validating as css2
-*/
-#bodyContent a[href ^="http://"], #bodyContent a[href ^="gopher://"] {
- background: url("external.png") center right no-repeat;
- padding-right: 13px;
- }
-
-#bodyContent a[href ^="https://"], .link-https {
- background: url("lock_icon.gif") center right no-repeat;
- padding-right: 16px;
- }
-
-#bodyContent a[href ^="mailto:"], .link-mailto {
- background: url("mail_icon.gif") center right no-repeat;
- padding-right: 18px;
- }
-
-#bodyContent a[href ^="news://"] {
- background: url("news_icon.png") center right no-repeat;
- padding-right: 18px;
- }
-
-#bodyContent a[href ^="ftp://"], .link-ftp {
- background: url("file_icon.gif") center right no-repeat;
- padding-right: 18px;
- }
-
-#bodyContent a[href ^="irc://"], .link-irc {
- background: url("discussionitem_icon.gif") center right no-repeat;
- padding-right: 18px;
-}
-
-
-
-
-/* Structure & Frame -------------------------------------------------*/
-body {
- text-align: center;
- font-size:10pt;
- }
-
-#titleBar {
- height: 100px;
- text-align: left;
- width: 100%;
- }
-
-#globalWrapper {
- margin: 20px;
- text-align: left;
- }
-
-
-/* Headers -----------------------------------------------------------*/
-h1, h2, h3, h4 {font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;}
-h1, h2 {border-bottom: 1px solid silver; line-height: 1.1em; padding-bottom: 0.2em;}
-
-.firstHeading {border-bottom-style: solid; font-size: 2em;}
-.editsection {margin-top: 1em;}
-
-.portlet h5 { /* blocks within #column-one */
- border-top: 1px solid #eeeeee;
- margin-top: 0;
- padding-top: 0.25em;
- }
-
-
-/* Images ------------------------------------------------------------*/
-#titleBar {
- background-image: url('pradomantis.gif'); /* blue and white background */
- background-repeat: no-repeat;
- background-position: top right;
- }
-
-#titleBar img {
- margin-left: 2.5%;
- }
-
-#p-poweredby img {
- border: 0;
- clear: both;
- float: right;
- margin: 2px 0;
- }
-
-
-/* Lists -------------------------------------------------------------*/
-.portlet ul {
- margin-bottom: 2em;
- }
-
-.portlet li {
- margin: 0.5em 0;
- }
-
-/* Special stylized non-IE bullets
- Does not work in Internet Explorer, which merely default to normal bullets. */
-html>body .portlet ul {
- list-style: none;
- margin-left: 0px;
- padding: 0 0 0 30px;
- padding-left: 10px;
- text-indent: -10px;
- }
-
-html>body .portlet li {
- margin-left: 10px;
- }
-
-html>body .portlet ul li:before {
- content: "\00BB \0020";
- }
-
-
-/* Form Elements -----------------------------------------------------*/
-.portlet #searchform {
- margin-left: 10px;
- margin-bottom: 2em;
- }
-
-.portlet #searchform input {
- margin: 0.15em 0;
- }
-
-
-/* Various Tags & Classes --------------------------------------------*/
-#siteSub, .urlexpansion, .printfooter {
- display: none;
- }
-
-.visualClear {
- clear: both;
- }
-
-/* BEGIN user notifications */
-.usermessage {
- background-color: #ffce7b; /* yellow */
- border: 1px solid #ffa500; /* orange */
- color: Black;
- font-weight: bold;
- margin: 2em 0em 1em 0em;
- padding: 0.5em 1em;
- vertical-align: middle;
- }
-
-#siteNotice {
- font-size: 95%;
- padding: 0 0.9em 0 0.9em;
- text-align: center;
- }
-
-#siteNotice p {margin: 0; padding: 0;}
-
-.error {color: red; font-size: larger;}
-
-#catlinks {
- background-color: #F2F6FF; /* very light blue */
- border: 1px solid #CBDDFF; /* light blue */
- clear: both;
- margin: 1em 0;
- }
-
-#catlinks p {margin: 0.5em;}
-/* END user notifications */
-
-
-
-/* Content -----------------------------------------------------------*/
-/* BEGIN Table of Contents */
-#toc {
- float: right;
- margin: 0 0 1em 1em;
- }
-#toc td {padding: 0.5em;}
-#toc .tocindent {margin-left: 1em;}
-#toc .tocline {margin-bottom: 0px;}
-#toc p {margin: 0}
-#toc .editsection {margin-top: 0.7em;}
-/* END Table of Contents */
-
-/* BEGIN Page history styling */
-.autocomment {color: gray;}
-#pagehistory span.user {margin-left: 1.4em; margin-right: 0.4em;}
-#pagehistory span.minor {font-weight: bold;}
-#pagehistory input {margin: 0.2em;}
-#pagehistory li {border: 1px solid #ffffff; margin-top: 1px; margin-bottom: 1px;}
-#pagehistory li.selected {
- background-color: #CBDDFF; /* light blue */
- border:1px dashed #FDA32F; /* orange */
- }
-/* END Page history styling */
-
-/* BEGIN Diff rendering */
-table.diff {background: #FEFEFE; border: 1px solid #cccccc; padding: 0.5em}
-table.diff td {vertical-align: top;}
-td.diff-otitle a, td.diff-ntitle a, td.diff-otitle a:visited, td.diff-ntitle a:visited {color: #2153B0;}
-td.diff-otitle a:hover, td.diff-ntitle a:hover {text-decoration: underline;}
-td.diff-otitle {}
-td.diff-ntitle {}
-td.diff-addedline {background:#F2F6FF;}
-td.diff-addedline span.diffchange {
- background: #CDDEFF;
- border: 1px dashed #676F80;
- color: green;
- font-weight: bold;
- }
-td.diff-deletedline {background:#FFF9F2;}
-td.diff-deletedline span.diffchange {
- background: #FFE9CB;
- border: 1px dashed #B3A38E;
- color: red;
- font-weight: bold;
- text-decoration: line-through;
- }
-td.diff-context {background:#eeeeee;}
-.newpage {color: green; font-weight: bolder;}
-/* END Diff rendering */
-
-/* BEGIN forms */
-fieldset {
- background: #FAFCFF;
- border: 1px solid #CBDDFF;
- margin: 1em;
- padding: 0.5em 1em;
- }
-
-fieldset div {
- margin: 0.25em 0;
- }
-
-fieldset input {
- margin: 0 0.5em;
- }
-
-legend {
- color: #2153B0;
- font-size: 1.25em;
- font-weight: bolder;
- padding: 0.2em 0.5em;
- }
-/* END forms */
-
-
-
-
-/* Footer ------------------------------------------------------------*/
-#footer ul {
- list-style: none;
- margin: 0;
- }
-
-#footer ul li {
- margin: 0.1em;
- margin-right: 1em;
- }
-
-#f-lastmod {}
-#f-viewcount {display: none;}
-#f-copyright {}
-#f-about {float: left;}
-#f-disclaimer {float: left;}
-#f-developedby {float: left;}
-
-a.external
-{
- background: url("external.png") center right no-repeat;
- padding-right: 13px;
-} \ No newline at end of file
diff --git a/composer.json b/composer.json
index 88f42336..026cc12e 100644
--- a/composer.json
+++ b/composer.json
@@ -1,11 +1,84 @@
{
- "name": "comperio/prado",
- "description": "Component Framework for PHP 5.",
- "homepage": "http://www.pradosoft.com/",
- "license": "BSD",
- "include-path": ["framework"],
- "require": {
- "php": ">=5.2.4"
- },
- "bin": ["framework/prado-cli", "framework/prado-cli.bat"]
+ "name": "comperio/prado",
+ "type": "library",
+ "description": "Component Framework for PHP",
+ "keywords": ["Framework", "Component"],
+ "homepage": "http://www.pradosoft.com/",
+ "license" : "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Fabio Bas",
+ "email": "ctrlaltca@gmail.com",
+ "role" : "Developer"
+ },
+ {
+ "name": "Christophe Boulain",
+ "email": "christophe.boulain@gmail.com",
+ "role" : "Developer"
+ },
+ {
+ "name": "Robin J. Rogge",
+ "email": "rojaro@gmail.com",
+ "role" : "Developer"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3",
+ "ext-ctype" : "*",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-spl": "*"
+ },
+ "require-dev" : {
+ "phpunit/phpunit" : "3.7.*",
+ "phing/phing" : "2.4.14",
+ "apigen/apigen": "2.*"
+ },
+ "provide" : {
+ "pradosoft/prado" : "3.2.3"
+ },
+ "suggest" : {
+ "ext-apc" : "*",
+ "ext-eaccellerator" : "*",
+ "ext-hash" : "*",
+ "ext-iconv" : "*",
+ "ext-mbstring" : "*",
+ "ext-mcrypt" : "*",
+ "ext-memcache" : "*",
+ "ext-pdo" : "*",
+ "ext-soap" : "*",
+ "ext-xcache" : "*",
+ "ext-xsl" : "*",
+ "ext-zlib" : "*"
+ },
+ "autoload": {
+ "psr-0" : {
+ "Prado" : "framework",
+ "Prado\\Caching" : "framework",
+ "Prado\\Collections" : "framework",
+ "Prado\\Exceptions" : "framework",
+ "Prado\\I18N" : "framework",
+ "Prado\\IO" : "framework",
+ "Prado\\Security" : "framework",
+ "Prado\\Util" : "framework",
+ "Prado\\Web" : "framework",
+ "Prado\\Web\\Javascripts" : "framework",
+ "Prado\\Web\\Services" : "framework",
+ "Prado\\Web\\UI" : "framework",
+ "Prado\\Web\\UI\\ActiveControls" : "framework",
+ "Prado\\Web\\UI\\WebControls" : "framework",
+ "Prado\\Xml" : "framework"
+ }
+ },
+ "support" : {
+ "forum" : "http://www.pradosoft.com/forum",
+ "source" : "https://code.google.com/p/prado3/source"
+ },
+ "bin" : [
+ "bin/prado-cli"
+ ],
+ "config" : {
+ "bin-dir" : "./bin"
+ }
}
diff --git a/demos/quickstart/protected/controls/DocLink.php b/demos/quickstart/protected/controls/DocLink.php
index b1043821..758a1645 100644
--- a/demos/quickstart/protected/controls/DocLink.php
+++ b/demos/quickstart/protected/controls/DocLink.php
@@ -20,8 +20,8 @@ class DocLink extends THyperLink
$paths=explode('.',$this->getClassPath());
if(count($paths)>1)
{
- $classFile=array_pop($paths).'.html';
- $this->setNavigateUrl(self::BASE_URL . '/' . implode('.',$paths) . '/' . $classFile);
+ $classFile='class-'.array_pop($paths).'.html';
+ $this->setNavigateUrl(self::BASE_URL . '/' . $classFile);
if($this->getText() === '')
$this->setText('API Manual');
}
diff --git a/demos/quickstart/protected/pages/Controls/HtmlArea4.page b/demos/quickstart/protected/pages/Controls/HtmlArea4.page
new file mode 100644
index 00000000..1fa33424
--- /dev/null
+++ b/demos/quickstart/protected/pages/Controls/HtmlArea4.page
@@ -0,0 +1,28 @@
+<com:TContent ID="body" >
+
+<h1>THtmlArea4</h1>
+<com:DocLink ClassPath="System.Web.UI.WebControls.THtmlArea4" />
+
+<p class="block-content">
+<tt>THtmlArea4</tt> is a newer version of the <tt>THtmlArea</tt> component, based on TinyMCE version 4. Please refer to <tt>THtmlArea</tt> for basic usage.
+</p>
+
+<p class="block-content">
+<tt>THtmlArea4</tt> provides the WYSIWYG feature by wrapping the functionalities provided by the <a href="http://tinymce.com/">TinyMCE project version 4</a>.
+</p>
+
+<p class="block-content">
+The default editor tries to mimic <tt>THtmlArea</tt>'s old style and behaviour, disabling the menubar and permitting the resize of the editor in both directions. To enable the menubar or change any other aspect of the editor layout, use the <tt>Options</tt> property to add additional editor options with each options on a new line. See <a href="http://www.tinymce.com/wiki.php/Configuration">TinyMCE website</a> for a complete list of options. The following example displays a menu specific for HTML table manipulation,
+</p>
+<com:TTextHighlighter Language="prado" CssClass="source block-content">
+&lt;com:THtmlArea&gt;
+ &lt;prop:Options&gt;
+ plugins: "table"
+ menubar: "file edit table"
+ &lt;/prop:Options&gt;
+&lt;/com:THtmlArea&gt;
+</com:TTextHighlighter>
+
+<com:RunBar PagePath="Controls.Samples.THtmlArea4.Home" />
+
+</com:TContent>
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page
index 7baa16d6..9e37b675 100644
--- a/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page
+++ b/demos/quickstart/protected/pages/Controls/Samples/TConditional/Home.page
@@ -1,9 +1,9 @@
<com:TContent ID="body">
<h1>TConditional Samples</h1>
-<com:TConditional Condition="Prado::getVersion()==='3.2.1'">
+<com:TConditional Condition="Prado::getVersion()==='3.2.2'">
<prop:TrueTemplate>
- <com:TLabel Text="You are using PRADO 3.2.1" />
+ <com:TLabel Text="You are using PRADO 3.2.2" />
</prop:TrueTemplate>
<prop:FalseTemplate>
<com:TLabel Text="You are using PRADO <%= Prado::getVersion() %>" />
diff --git a/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page
new file mode 100755
index 00000000..6bb6449c
--- /dev/null
+++ b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.page
@@ -0,0 +1,43 @@
+<com:TContent ID="body">
+
+<h1>THtmlArea4 Samples</h1>
+
+<table class="sampletable">
+
+<tr><td class="samplenote">
+THtmlArea4 with default settings:
+</td><td class="sampleaction">
+<com:THtmlArea4 ID="HtmlArea1" />
+<com:TButton Text="Submit" OnClick="button1Clicked" />
+<br/>
+<com:TLiteral Encode="true" ID="Result1" />
+</td></tr>
+
+<tr><td class="samplenote">
+THtmlArea4 with manually set options
+</td><td class="sampleaction">
+<com:THtmlArea4 ID="HtmlArea2" Width="670px" Height="300px">
+ <prop:Options>
+ resize: false
+ plugins: "charmap code wordcount"
+ toolbar: "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | code charmap | ",
+ </prop:Options>
+</com:THtmlArea4>
+<com:TButton Text="Submit" OnClick="button2Clicked" />
+<br/>
+<com:TLiteral Encode="true" ID="Result2" />
+</td></tr>
+
+<tr><td class="samplenote">
+THtmlArea4 with visual editting disabled:
+</td><td class="sampleaction">
+<com:THtmlArea4 ID="HtmlArea3" EnableVisualEdit="false" />
+<br/>
+<com:TButton Text="Submit" OnClick="button3Clicked" />
+<br/>
+<com:TLiteral Encode="true" ID="Result3" />
+</td></tr>
+
+</table>
+
+</com:TContent>
diff --git a/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.php b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.php
new file mode 100755
index 00000000..c513c8f7
--- /dev/null
+++ b/demos/quickstart/protected/pages/Controls/Samples/THtmlArea4/Home.php
@@ -0,0 +1,20 @@
+<?php
+
+class Home extends TPage
+{
+ public function button1Clicked($sender,$param)
+ {
+ $this->Result1->Text="You have entered: ".$this->HtmlArea1->Text;
+ }
+
+ public function button2Clicked($sender,$param)
+ {
+ $this->Result2->Text="You have entered: ".$this->HtmlArea2->Text;
+ }
+
+ public function button3Clicked($sender,$param)
+ {
+ $this->Result3->Text="You have entered: ".$this->HtmlArea3->Text;
+ }
+}
+
diff --git a/demos/quickstart/protected/pages/Controls/Standard.page b/demos/quickstart/protected/pages/Controls/Standard.page
index 188cdd19..463f90a5 100644
--- a/demos/quickstart/protected/pages/Controls/Standard.page
+++ b/demos/quickstart/protected/pages/Controls/Standard.page
@@ -60,6 +60,10 @@
</li>
<li>
+ <a href="?page=Controls.HtmlArea4">THtmlArea4</a> is the counterpart of THtmlArea based on TinyMCE4.
+ </li>
+
+ <li>
<a href="?page=Controls.HyperLink">THyperLink</a> represents a hyperlink on a Web page.
</li>
diff --git a/demos/quickstart/protected/pages/Database/DAO.page b/demos/quickstart/protected/pages/Database/DAO.page
index ae8463df..45023384 100644
--- a/demos/quickstart/protected/pages/Database/DAO.page
+++ b/demos/quickstart/protected/pages/Database/DAO.page
@@ -5,10 +5,10 @@
Data Access Objects (DAO) separates a data resource's client interface from its data access mechanisms. It adapts a specific data resource's access API to a generic client interface. As a result, data access mechanisms can be changed independently of the code that uses the data.
</p>
<p id="680462" class="block-content">
-Since version 3.1, PRADO starts to provide a DAO that is a thin wrap around <a href="http://www.php.net/manual/en/ref.pdo.php">PHP Data Objects (PDO)</a>. Although PDO has a nice feature set and good APIs, we choose to implement the PRADO DAO on top of PDO because the PRADO DAO classes are component classes and are thus configurable in a PRADO application. Users can use these DAO classes in a more PRADO-preferred way.
+Since version 3.1, PRADO starts to provide a DAO that is a thin wrap around <a href="http://www.php.net/manual/en/book.pdo.php">PHP Data Objects (PDO)</a>. Although PDO has a nice feature set and good APIs, we choose to implement the PRADO DAO on top of PDO because the PRADO DAO classes are component classes and are thus configurable in a PRADO application. Users can use these DAO classes in a more PRADO-preferred way.
</p>
<div class="note"><b class="tip">Note:</b>
-Since the PRADO DAO is based on PDO, the PDO PHP extension needs to be installed. In addition, you need to install the corresponding PDO driver for the database to be used in your application. See more details in the <a href="http://www.php.net/manual/en/ref.pdo.php">PHP Manual</a>.
+Since the PRADO DAO is based on PDO, the PDO PHP extension needs to be installed. In addition, you need to install the corresponding PDO driver for the database to be used in your application. See more details in the <a href="http://www.php.net/manual/en/book.pdo.php">PHP Manual</a>.
</div>
<p id="680463" class="block-content">
The PRADO DAO mainly consists of the following four classes (in contrast to PDO which uses only two classes, <tt>PDO</tt> and <tt>PDOStatement</tt>):
@@ -36,12 +36,13 @@ $connection->Active=true; // connection is established
$connection->Active=false; // connection is closed
</com:TTextHighlighter>
<p id="680466" class="block-content">
-Complete specification of DSN may be found in the <a href="http://www.php.net/manual/en/ref.pdo.php#pdo.drivers">PDO documentation</a>. Below is a list of commonly used DSN formats:
+Complete specification of DSN may be found in the <a href="http://www.php.net/manual/en/pdo.drivers.php">PDO documentation</a>. Below is a list of commonly used DSN formats:
</p>
<ul id="u2" class="block-content">
<li>MySQL - <tt>mysql:host=localhost;dbname=test</tt></li>
<li>SQLite - <tt>sqlite:/path/to/dbfile</tt></li>
-<li>ODBC - <tt>odbc:SAMPLE</tt>
+<li>ODBC - <tt>odbc:SAMPLE</tt></li>
+<li>MSSql - <tt>sqlsrv:server=hostname;database=test"</tt></li>
</ul>
<p id="680467" class="block-content">
In case any error occurs when establishing the connection (such as bad DSN or username/password), a <tt>TDbException</tt> will be raised.
diff --git a/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page b/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page
index aaeb2b9c..897b45f0 100644
--- a/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page
+++ b/demos/quickstart/protected/pages/GettingStarted/NewFeatures.page
@@ -6,6 +6,11 @@
This page summarizes the main new features that are introduced in each PRADO release.
</p>
+<h2 id="8001">Version 3.2.3</h2>
+<ul>
+<li>Added <a href="?page=Controls.HtmlArea4">THtmlArea4 control</a> based on TinyMCE4</li>
+</ul>
+
<h2 id="8001">Version 3.2.2</h2>
<ul>
<li>TUrlMappingPattern support for constant parameters</li>
diff --git a/demos/quickstart/protected/pages/Services/SoapService.page b/demos/quickstart/protected/pages/Services/SoapService.page
index 8982ac46..3263180d 100644
--- a/demos/quickstart/protected/pages/Services/SoapService.page
+++ b/demos/quickstart/protected/pages/Services/SoapService.page
@@ -79,6 +79,12 @@ class Contact {
public $name;
/**
+ * @var string $notes {nillable=1, minOccurs=0, maxOccurs=2}
+ * @soapproperty
+ */
+ public $notes;
+
+ /**
* @var Address $address
* @soapproperty
*/
@@ -123,11 +129,25 @@ class ContactManager {
</com:TTextHighlighter>
<p id="670457" class="block-content">For a complex soap object, the properties of the object are specified with
<tt>@soapproperty</tt> keyword in the property phpdocs. Furthermore, the
-propert's type name must be specified as <tt>@var type $name</tt> where <tt>type
+property's type name must be specified as <tt>@var type $name</tt> where <tt>type
</tt> is any valid type in mentioned earlier and <tt>$name</tt> will defined
a property <tt>name</tt> (notice that if your class is a TComponent, you can
provide property setter/getter methods).
</p>
+
+<p class="block-content">
+Optionally, extra attributes (nillable, minOccurs, maxOccurs) can be defined for each property by enclosing definitions into curly brackets and separated by comma like so:
+<com:TTextHighlighter Language="javascript" CssClass="source block-content">
+{[attribute1 = value1][, attribute2 = value2], ...}
+</com:TTextHighlighter>
+where the attribute can be one of following:
+<ul>
+ <li>nillable = [0|1|true|false]</li>
+ <li>minOccurs = n; where n>=0</li>
+ <li>maxOccurs = n; where [n>=0|unbounded]</li>
+</ul>
+</p>
+
<p id="670458" class="block-content">
An array of complex objects can also be returned by adding a pair of
enclosing square brackets after the type name. For example, to return an
diff --git a/editors/Textmate/Prado.tmbundle/Snippets/TRepeater.tmSnippet b/editors/Textmate/Prado.tmbundle/Snippets/TRepeater.tmSnippet
index 04a7fa17..e985bb73 100644
--- a/editors/Textmate/Prado.tmbundle/Snippets/TRepeater.tmSnippet
+++ b/editors/Textmate/Prado.tmbundle/Snippets/TRepeater.tmSnippet
@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>content</key>
- <string>&lt;com:TRepeater ID="${1:repeater1}" DataKeys="${2:Data key field}"&gt;
+ <string>&lt;com:TRepeater ID="${1:repeater1}" DataKeyField="${2:Data key field}"&gt;
&lt;prop:EmptyTemplate&gt;
${3:&lt;!-- content --&gt;}
&lt;/prop:EmptyTemplate&gt;
diff --git a/framework/3rdParty/SafeHtml/TSafeHtmlParser.php b/framework/3rdParty/SafeHtml/TSafeHtmlParser.php
index f26c0ae1..29f2cb65 100644
--- a/framework/3rdParty/SafeHtml/TSafeHtmlParser.php
+++ b/framework/3rdParty/SafeHtml/TSafeHtmlParser.php
@@ -364,21 +364,21 @@ class TSafeHtmlParser
}
}
- $tempval = preg_replace_callback(
- '/&#(\d+);?/m',
- function ($matches) {
- return chr($matches[0]);
- },
- $value
- ); //"'
-
- $tempval = preg_replace_callback(
- '/&#x([0-9a-f]+);?/mi',
- function ($matches) {
- return chr(hexdec($matches[0]));
- },
- $tempval
- );
+ $tempval = preg_replace_callback(
+ '/&#(\d+);?/m',
+ function ($matches) {
+ return chr($matches[0]);
+ },
+ $value
+ ); //"'
+
+ $tempval = preg_replace_callback(
+ '/&#x([0-9a-f]+);?/mi',
+ function ($matches) {
+ return chr(hexdec($matches[0]));
+ },
+ $tempval
+ );
if ((in_array($name, $this->protocolAttributes)) &&
(strpos($tempval, ':') !== false))
diff --git a/framework/3rdParty/WsdlGen/Wsdl.php b/framework/3rdParty/WsdlGen/Wsdl.php
index 5d9c6aec..8cfee9cc 100644
--- a/framework/3rdParty/WsdlGen/Wsdl.php
+++ b/framework/3rdParty/WsdlGen/Wsdl.php
@@ -12,7 +12,7 @@
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: Wsdl.php 3188 2012-07-12 12:13:23Z ctrlaltca $
+ * @version $Id: Wsdl.php 3314 2013-08-20 10:00:47Z ctrlaltca $
* @package System.Web.Services.SOAP
*/
@@ -90,7 +90,8 @@ class Wsdl
{
$this->_encoding = $encoding;
$this->serviceName = $name;
- if ($serviceUri == '') $serviceUri = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
+ $protocol=(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!=='off'))?'https://':'http://';
+ if ($serviceUri === '') $serviceUri = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$this->serviceUri = str_replace('&amp;', '&', $serviceUri);
$this->types = new ArrayObject();
$this->targetNamespace = 'urn:'.$name.'wsdl';
@@ -167,6 +168,12 @@ class Wsdl
$e = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:element');
$e->setAttribute('name', $elem['name']);
$e->setAttribute('type', $elem['type']);
+ if($elem['minOc']!==false)
+ $e->setAttribute('minOccurs',$elem['minOc']);
+ if($elem['maxOc']!==false)
+ $e->setAttribute('maxOccurs',$elem['maxOc']);
+ if($elem['nil']!==false)
+ $e->setAttribute('nillable',$elem['nil']);
$all->appendChild($e);
}
$complexType->appendChild($all);
diff --git a/framework/3rdParty/WsdlGen/WsdlGenerator.php b/framework/3rdParty/WsdlGen/WsdlGenerator.php
index b208fb8b..0bc2e6d4 100644
--- a/framework/3rdParty/WsdlGen/WsdlGenerator.php
+++ b/framework/3rdParty/WsdlGen/WsdlGenerator.php
@@ -11,7 +11,7 @@
* This file is part of the PRADO framework from {@link http://www.xisc.com}
*
* @author Marcus Nyeholt <tanus@users.sourceforge.net>
- * @version $Id: WsdlGenerator.php 3188 2012-07-12 12:13:23Z ctrlaltca $
+ * @version $Id: WsdlGenerator.php 3314 2013-08-20 10:00:47Z ctrlaltca $
* @package System.Web.Services.SOAP
*/
@@ -282,11 +282,35 @@ class WsdlGenerator
$comment = $property->getDocComment();
if(strpos($comment, '@soapproperty') !== false)
{
- if (preg_match('/@var\s+(\w+(\[\])?)\s+\$(\w+)/mi', $comment, $match)) {
+ if(preg_match('/@var\s+([\w\.]+(\[\s*\])?)\s*?\$(.*)$/mi',$comment,$matches))
+ {
+ // support nillable, minOccurs, maxOccurs attributes
+ $nillable=$minOccurs=$maxOccurs=false;
+ if(preg_match('/{(.+)}/',$matches[3],$attr))
+ {
+ $matches[3]=str_replace($attr[0],'',$matches[3]);
+ if(preg_match_all('/((\w+)\s*=\s*(\w+))/mi',$attr[1],$attr))
+ {
+ foreach($attr[2] as $id=>$prop)
+ {
+ if(strcasecmp($prop,'nillable')===0)
+ $nillable=$attr[3][$id] ? 'true' : 'false';
+ elseif(strcasecmp($prop,'minOccurs')===0)
+ $minOccurs=(int)$attr[3][$id];
+ elseif(strcasecmp($prop,'maxOccurs')===0)
+ $maxOccurs=(int)$attr[3][$id];
+ }
+ }
+ }
+
$param = array();
- $param['type'] = $this->convertType($match[1]);
- $param['name'] = $match[3];
+ $param['type'] = $this->convertType($matches[1]);
+ $param['name'] = trim($matches[3]);
+ $param['nil'] = $nillable;
+ $param['minOc'] = $minOccurs;
+ $param['maxOc'] = $maxOccurs;
$this->types[$className][] = $param;
+
}
}
}
diff --git a/framework/Caching/TAPCCache.php b/framework/Caching/TAPCCache.php
index 53e3e388..8826fac6 100644
--- a/framework/Caching/TAPCCache.php
+++ b/framework/Caching/TAPCCache.php
@@ -6,7 +6,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TAPCCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TAPCCache.php 3281 2013-03-13 21:01:40Z ctrlaltca $
* @package System.Caching
*/
@@ -41,7 +41,7 @@
*
* @author Alban Hanry <compte_messagerie@hotmail.com>
* @author Knut Urdalen <knut.urdalen@gmail.com>
- * @version $Id: TAPCCache.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TAPCCache.php 3281 2013-03-13 21:01:40Z ctrlaltca $
* @package System.Caching
* @since 3.0b
*/
@@ -103,11 +103,7 @@ class TAPCCache extends TCache
*/
protected function addValue($key,$value,$expire)
{
- if(function_exists('apc_add')) {
- return apc_add($key,$value,$expire);
- } else {
- throw new TNotSupportedException('apccache_add_unsupported');
- }
+ return apc_add($key,$value,$expire);
}
/**
diff --git a/framework/Caching/TEACache.php b/framework/Caching/TEACache.php
new file mode 100644
index 00000000..6a20f63b
--- /dev/null
+++ b/framework/Caching/TEACache.php
@@ -0,0 +1 @@
+<?php /** * TEACache class file * * @author Dario rigolin <drigolin@e-portaltech.it> * @link http://www.pradosoft.com/ * @copyright Copyright &copy; 2005-2013 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id: TEACache.php 3281 2013-03-13 19:31:03Z xue $ * @package System.Caching */ /** * TEACache class * * TEACache implements a cache application module based on {@link http://eaccelerator.net/ eAccelerator}. * * By definition, cache does not ensure the existence of a value * even if it never expires. Cache is not meant to be an persistent storage. * * To use this module, the eAccelerator PHP extension must be loaded and enabled * * Please note that as of v0.9.6, eAccelerator no longer supports data caching. * This means if you still want to use this component, your eAccelerator should be of 0.9.5.x or lower version. * * Some usage examples of TEACache are as follows, * <code> * $cache=new TEACache; // TEACache may also be loaded as a Prado application module * $cache->init(null); * $cache->add('object',$object); * $object2=$cache->get('object'); * </code> * * If loaded, TEACache will register itself with {@link TApplication} as the * cache module. It can be accessed via {@link TApplication::getCache()}. * * TEACache may be configured in application configuration file as follows * <code> * <module id="cache" class="System.Caching.TEACache" /> * </code> * * @author Dario Rigolin <drigolin@e-portaltech.it> * @version $Id: TEACache.php 3281 2013-03-13 19:31:03Z xue $ * @package System.Caching * @since 3.2.2 */ class TEACache extends TCache { /** * Initializes this module. * This method is required by the IModule interface. * @param TXmlElement configuration for this module, can be null * @throws TConfigurationException if eaccelerator extension is not installed or not started, check your php.ini */ public function init($config) { if(!function_exists('eaccelerator_get')) throw new TConfigurationException('eacceleratorcache_extension_required'); parent::init($config); } /** * Retrieves a value from cache with a specified key. * This is the implementation of the method declared in the parent class. * @param string a unique key identifying the cached value * @return string the value stored in cache, false if the value is not in the cache or expired. */ protected function getValue($key) { $value = eaccelerator_get($key); return ($value === null) ? false : $value; } /** * Stores a value identified by a key in cache. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function setValue($key,$value,$expire) { return eaccelerator_put($key,$value,$expire); } /** * Stores a value identified by a key into cache if the cache does not contain this key. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function addValue($key,$value,$expire) { return (null === eaccelerator_get($key)) ? $this->setValue($key,$value,$expire) : false; } /** * Deletes a value with the specified key from cache * This is the implementation of the method declared in the parent class. * @param string the key of the value to be deleted * @return boolean if no error happens during deletion */ protected function deleteValue($key) { return eaccelerator_rm($key); } /** * Deletes all values from cache. * Be careful of performing this operation if the cache is shared by multiple applications. */ public function flush() { // first, remove expired content from cache eaccelerator_gc(); // now, remove leftover cache-keys $keys = eaccelerator_list_keys(); foreach($keys as $key) $this->deleteValue(substr($key['name'], 1)); return true; } } \ No newline at end of file
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php
index caeacf63..71f015b8 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php
@@ -6,7 +6,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @package System.Data.ActiveReecord.Scaffold.InputBuilder
+ * @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon');
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php
index b223e7e4..b9d133a2 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php
@@ -5,7 +5,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @package System.Data.ActiveReecord.Scaffold.InputBuilder
+ * @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon');
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php
index ea1dd377..74eddbd8 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php
@@ -5,7 +5,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @package System.Data.ActiveReecord.Scaffold.InputBuilder
+ * @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon');
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php
index 72a31f20..088bbd42 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php
@@ -5,7 +5,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @package System.Data.ActiveReecord.Scaffold.InputBuilder
+ * @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon');
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php
index 39ecd4a2..611cfdfb 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php
@@ -5,7 +5,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @package System.Data.ActiveReecord.Scaffold.InputBuilder
+ * @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
class TScaffoldInputBase
{
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php
index 415b85a5..68404adb 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php
@@ -5,7 +5,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @package System.Data.ActiveReecord.Scaffold.InputBuilder
+ * @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputBase');
diff --git a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php
index e821121a..302f320b 100644
--- a/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php
+++ b/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php
@@ -5,7 +5,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @package System.Data.ActiveReecord.Scaffold.InputBuilder
+ * @package System.Data.ActiveRecord.Scaffold.InputBuilder
*/
Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon');
diff --git a/framework/PradoBase.php b/framework/PradoBase.php
index 9f20eb36..7cb7e841 100644
--- a/framework/PradoBase.php
+++ b/framework/PradoBase.php
@@ -9,7 +9,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: PradoBase.php 3246 2013-01-07 21:07:38Z ctrlaltca $
+ * @version $Id: PradoBase.php 3293 2013-07-10 21:33:04Z ctrlaltca $
* @package System
*/
@@ -34,7 +34,7 @@ if(!defined('PRADO_CHMOD'))
* rewritten for customization.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: PradoBase.php 3246 2013-01-07 21:07:38Z ctrlaltca $
+ * @version $Id: PradoBase.php 3293 2013-07-10 21:33:04Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -71,7 +71,7 @@ class PradoBase
*/
public static function getVersion()
{
- return '3.2.1';
+ return '3.2.2';
}
/**
diff --git a/framework/TApplication.php b/framework/TApplication.php
index a4a4b423..1bbbbdb6 100644
--- a/framework/TApplication.php
+++ b/framework/TApplication.php
@@ -6,7 +6,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TApplication.php 3272 2013-02-13 21:43:28Z ctrlaltca $
+ * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
*/
@@ -105,7 +105,7 @@ Prado::using('System.I18N.TGlobalization');
* </code>
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TApplication.php 3272 2013-02-13 21:43:28Z ctrlaltca $
+ * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -972,7 +972,8 @@ class TApplication extends TComponent
$module->setSubProperty($name,$value);
}
$this->setModule($id,$module);
- unset($this->_lazyModules[$id]);
+ // keep the key to avoid reuse of the old module id
+ $this->_lazyModules[$id]=null;
return array($module,$configElement);
}
@@ -1279,7 +1280,7 @@ class TApplication extends TComponent
* - Normal: the application is running in normal production mode.
* - Performance: the application is running in performance mode.
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TApplication.php 3272 2013-02-13 21:43:28Z ctrlaltca $
+ * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0.4
*/
@@ -1299,7 +1300,7 @@ class TApplicationMode extends TEnumerable
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TApplication.php 3272 2013-02-13 21:43:28Z ctrlaltca $
+ * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0
*/
@@ -1808,7 +1809,7 @@ class TApplicationConfiguration extends TComponent
* Cache will be exploited if it is enabled.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TApplication.php 3272 2013-02-13 21:43:28Z ctrlaltca $
+ * @version $Id: TApplication.php 3317 2013-09-03 10:19:09Z ctrlaltca $
* @package System
* @since 3.0
*/
diff --git a/framework/Web/Javascripts/packages.php b/framework/Web/Javascripts/packages.php
index 65921920..1d98f60f 100644
--- a/framework/Web/Javascripts/packages.php
+++ b/framework/Web/Javascripts/packages.php
@@ -1,6 +1,6 @@
<?php
-//$Id: packages.php 3187 2012-07-12 11:21:01Z ctrlaltca $
+//$Id: packages.php 3319 2013-09-08 20:59:44Z ctrlaltca $
// To make future upgrades easier
if (!defined('PROTOTYPE_DIR')) define ('PROTOTYPE_DIR', 'prototype-1.7');
@@ -83,6 +83,10 @@ $packages = array(
'prado/controls/htmlarea.js'
),
+ 'htmlarea4'=>array(
+ 'prado/controls/htmlarea4.js'
+ ),
+
'ratings' => array(
'prado/ratings/ratings.js',
),
@@ -113,6 +117,7 @@ $dependencies = array(
'dragdropextra' => array('prototype', 'prado', 'effects', 'ajax', 'dragdrop','dragdropextra'),
'accordion' => array('prototype', 'prado', 'effects', 'accordion'),
'htmlarea' => array('prototype', 'prado', 'htmlarea'),
+ 'htmlarea4' => array('prototype', 'prado', 'htmlarea4'),
'ratings' => array('prototype', 'prado', 'effects', 'ajax', 'ratings'),
'inlineeditor' => array('prototype', 'prado', 'effects', 'ajax', 'inlineeditor'),
);
diff --git a/framework/Web/Javascripts/source/prado/controls/htmlarea.js b/framework/Web/Javascripts/source/prado/controls/htmlarea.js
index 30bb82dd..5cba4f6c 100644
--- a/framework/Web/Javascripts/source/prado/controls/htmlarea.js
+++ b/framework/Web/Javascripts/source/prado/controls/htmlarea.js
@@ -124,7 +124,11 @@ Prado.WebUI.THtmlArea = Class.create(Prado.WebUI.Control,
try
{
tinyMCE.execCommand('mceFocus', false, this.ID);
+ // when removed, tinyMCE restores its content to the textarea. If the textarea content has been
+ // updated in this same callback, it will be overwritten with the old content. Workaround this.
+ var curtext = $(this.ID).value;
tinyMCE.execCommand('mceRemoveControl', false, this.ID);
+ $(this.ID).value = curtext;
}
catch (e)
{
diff --git a/framework/Web/Javascripts/source/prado/controls/htmlarea4.js b/framework/Web/Javascripts/source/prado/controls/htmlarea4.js
new file mode 100644
index 00000000..cd3c6a0e
--- /dev/null
+++ b/framework/Web/Javascripts/source/prado/controls/htmlarea4.js
@@ -0,0 +1,58 @@
+
+/*
+ *
+ * HtmlArea (tinyMCE 4) wrapper
+ *
+ * @author Gabor Berczi <gabor.berczi@devworx.hu>
+ *
+*/
+
+
+Prado.WebUI.THtmlArea4 = Class.create(Prado.WebUI.Control,
+{
+ initialize: function($super, options)
+ {
+ options.ID = options.EditorOptions.elements;
+ $super(options);
+ },
+
+ onInit : function(options)
+ {
+ this.options = options;
+ tinyMCE.init(this.options.EditorOptions);
+ },
+
+ removePreviousInstance: function()
+ {
+ for(var i=0;i<tinyMCE.editors.length;i++)
+ if (tinyMCE.editors[i].id==this.ID)
+ {
+ tinyMCE.editors.splice(i,1); // ugly hack, but works
+ i--;
+ }
+ },
+
+ onDone: function()
+ {
+ // check for previous tinyMCE registration, and try to remove it gracefully first
+ var prev = tinyMCE.get(this.ID);
+ if (prev)
+ try
+ {
+ tinyMCE.execCommand('mceFocus', false, this.ID);
+ // when removed, tinyMCE restores its content to the textarea. If the textarea content has been
+ // updated in this same callback, it will be overwritten with the old content. Workaround this.
+ // var curtext = $(this.ID).html();
+ tinyMCE.execCommand('mceRemoveControl', false, this.ID);
+ // $(this.ID).html(curtext);
+ }
+ catch (e)
+ {
+ // suppress error here in case editor can't be properly removed
+ // (happens when <textarea> has been removed from DOM tree without deinitialzing the tinyMCE editor first)
+ }
+
+ // doublecheck editor instance here and remove manually from tinyMCE-registry if neccessary
+ this.removePreviousInstance();
+ }
+});
diff --git a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js
index ad7eb019..ae1ad4b9 100644
--- a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js
+++ b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js
@@ -496,7 +496,10 @@ Prado.WebUI.TDatePicker = Class.create(Prado.WebUI.Control,
for(var i = 0; i < years.length; i++)
years[i].selected = years[i].value.toInteger() == currentYear;
}
- this.fireChangeEvent(day || month || year, capevents);
+
+ day && this.fireChangeEvent(day, capevents);
+ month && this.fireChangeEvent(month, capevents);
+ year && this.fireChangeEvent(year, capevents);
}
},
diff --git a/framework/Web/Javascripts/source/prado/scriptaculous-adapter.js b/framework/Web/Javascripts/source/prado/scriptaculous-adapter.js
index febe6ad9..1b9b2909 100644
--- a/framework/Web/Javascripts/source/prado/scriptaculous-adapter.js
+++ b/framework/Web/Javascripts/source/prado/scriptaculous-adapter.js
@@ -362,7 +362,7 @@ Prado.Element =
}
var opt = document.createElement('option');
opt.text = option[0];
- opt.innerText = option[0];
+ opt.innerHTML = option[0];
opt.value = option[1];
if(optgroup!=null)
optgroup.appendChild(opt);
diff --git a/framework/Web/Javascripts/source/prado/validator/validation3.js b/framework/Web/Javascripts/source/prado/validator/validation3.js
index 97fff053..0361389f 100644
--- a/framework/Web/Javascripts/source/prado/validator/validation3.js
+++ b/framework/Web/Javascripts/source/prado/validator/validation3.js
@@ -1148,6 +1148,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control,
return Prado.WebUI.TDatePicker.getDropDownDate(control);//.getTime();
}
case 'THtmlArea':
+ case 'THtmlArea4':
if(typeof tinyMCE != "undefined")
tinyMCE.triggerSave();
return $F(control);
@@ -1180,6 +1181,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control,
case 'TDatePicker':
return value;
case 'THtmlArea':
+ case 'THtmlArea4':
return this.trim(value);
case 'TRadioButton':
return value;
diff --git a/framework/Web/Javascripts/source/prototype-1.7/prototype.js b/framework/Web/Javascripts/source/prototype-1.7/prototype.js
index 37dd39ac..de5fff4a 100644
--- a/framework/Web/Javascripts/source/prototype-1.7/prototype.js
+++ b/framework/Web/Javascripts/source/prototype-1.7/prototype.js
@@ -2755,9 +2755,12 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
}
var PROBLEMATIC_ATTRIBUTE_READING = (function() {
- DIV.setAttribute('onclick', Prototype.emptyFunction);
+ // This test used to set 'onclick' to `Prototype.emptyFunction`, but that
+ // caused an (uncatchable) error in IE 10. For some reason, switching to
+ // an empty array prevents this issue.
+ DIV.setAttribute('onclick', []);
var value = DIV.getAttribute('onclick');
- var isFunction = (typeof value === 'function');
+ var isFunction = Object.isArray(value);
DIV.removeAttribute('onclick');
return isFunction;
})();
diff --git a/framework/Web/Javascripts/source/tinymce-405/changelog.txt b/framework/Web/Javascripts/source/tinymce-405/changelog.txt
new file mode 100755
index 00000000..f7a6c7c4
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/changelog.txt
@@ -0,0 +1,213 @@
+Version 4.0.5 (2013-08-27)
+ Added visuals for UL, LI and BR to visualblocks plugin. Patch contributed by Dan Ransom.
+ Added new autosave_restore_when_empty option to autosave plugin. Enabled by default.
+ Fixed bug where an exception was thrown when inserting images if valid_elements didn't include an ID for the image.
+ Fixed bug where the advlist plugin wouldn't properly render the splitbutton controls.
+ Fixed bug where visual blocks menu item wouldn't be marked checked when using the visualblocks_default_state option.
+ Fixed bug where save button in save plugin wouldn't get properly enabled when contents was changed.
+ Fixed bug where it was possible to insert images without any value for it's source attribute.
+ Fixed bug where altering image attributes wouldn't add a new undo level.
+ Fixed bug where import rules in CSS files wouldn't be properly imported by the importcss plugin.
+ Fixed bug where selectors could be imported multiple times. Producing duplicate formats.
+ Fixed bug where IE would throw exception if selection was changed while the editor was hidden.
+ Fixed so complex rules like .class:before doesn't get imported by default in the importcss plugin.
+ Fixed so it's possible to remove images by setting the src attribute to a blank value.
+ Fixed so the save_enablewhendirty setting in the save plugin is enabled by default.
+ Fixed so block formats drop down for classic mode can be translated properly using language packs.
+ Fixed so hr menu item and toolbar button gets the same translation string.
+ Fixed so bullet list toolbar button gets the correct translation from language packs.
+ Fixed issue with Chrome logging CSS warning about border styling for combo boxes.
+ Fixed issue with Chrome logging warnings about deprecated keyLocation property.
+ Fixed issue where custom_elements would not remove the some of the default rules when cloning rules from div and span.
+Version 4.0.4 (2013-08-21)
+ Added new importcss plugin. Lets you auto import classes from CSS files similar to the 3.x behavior.
+ Fixed bug where resize handles would be positioned incorrectly when inline element parent was using position: relative.
+ Fixed bug where IE 8 would throw Unknown runtime error if the editor was placed within a P tag.
+ Fixed bug where removing empty lists wouldn't produce blocks or brs where the old list was in the DOM.
+ Fixed bug where IE 10 wouldn't properly initialize template dialog due to async loading issues.
+ Fixed bug where autosave wouldn't properly display the warning about content not being saved due to isDirty changes.
+ Fixed bug where it wouldn't be possible to type if a touchstart event was bound to the parent document.
+ Fixed bug where code dialog in code plugin wouldn't wouldn't add a proper undo level.
+ Fixed issue where resizing the editor in vertical mode would set the iframe width to a pixel value.
+ Fixed issue with naming of insertdatetime settings. All are now prefixed with the plugin name.
+ Fixed so an initial change event is fired when the user types the first character into the editor.
+ Fixed so swf gets mapped to object element in media plugin. Enables embedding of flash with alternative poster.
+Version 4.0.3 (2013-08-08)
+ Added new code_dialog_width/code_dialog_height options to control code dialog size.
+ Added missing pastetext button that works the same way as the pastetext menu item.
+ Added missing smaller browse button for the classical smaller toolbars.
+ Fixed bug where input method would produce new lines when inserting contents to an empty editor.
+ Fixed bug where pasting single indented list items from Word would cause a JS exception.
+ Fixed bug where applying block formats inside list elements in inline mode would apply them to whole document.
+ Fixed bug where link editing in inline mode would cause exception on IE/WebKit.
+ Fixed bug where IE 10 wouldn't render the last button group properly in inline mode due to wrapping.
+ Fixed bug where localStorage initialization would fail on Firefox/Chrome with disabled support.
+ Fixed bug where image elements would get an __mce id when undo/redo:ing to a level with image changes.
+ Fixed bug where too long template names wouldn't fit the listbox in template plugin.
+ Fixed bug where alignment format options would be marked disabled when forced_root_block was set to false.
+ Fixed bug where UI listboxes such as fontsize, fontfamily wouldn't update properly when switching editors in inline mode.
+ Fixed bug where the formats select box would mark the editable container DIV as a applied format in inline mode.
+ Fixed bug where IE 7/8 would scroll to empty editors when initialized.
+ Fixed bug where IE 7/8 wouldn't display previews of format options.
+ Fixed bug where UI states wasn't properly updated after code was changed in the code dialog.
+ Fixed bug with setting contents in IE would select all contents within the editor.
+ Fixed so the undoManages transact function disables any other undo levels from being added while within the transaction.
+ Fixed so sub/sup elements gets removed when the Clear formatting action is executed.
+ Fixed so text/javascript type value get removed by default from script elements to match the HTML5 spec.
+Version 4.0.2 (2013-07-18)
+ Fixed bug where formatting using menus or toolbars wasn't possible on Opera 12.15.
+ Fixed bug where IE 8 keyboard input would break after paste using the paste plugin.
+ Fixed bug where IE 8 would throw an error when populating image size in image dialog.
+ Fixed bug where image resizing wouldn't work properly on latest IE 10.0.9 version.
+ Fixed bug where focus wasn't moved to the hovered menu button in a menubar container.
+ Fixed bug where paste would produce an extra uneeded undo level on IE and Gecko.
+ Fixed so anchors gets listed in the link dialog as they where in TinyMCE 3.x.
+ Fixed so sub, sup and strike though gets passed through when pasting from Word.
+ Fixed so Ctrl+P can be used to print the current document. Patch contributed by jashua212.
+Version 4.0.1 (2013-06-26)
+ Added new paste_as_text config option to force paste as plaintext mode.
+ Added new pastetext menu item that lets you toggle paste as plain text mode on/off.
+ Added new insertdatetime_element option to insertdatetime plugin. Enables HTML5 time element support.
+ Added new spellchecker_wordchar_pattern option to allow configuration of language specific characters.
+ Added new marker to formats menu displaying the formats used at the current selection/caret location.
+ Fixed bug where the position of the text color picker would be wrong if you switched to fullscreen.
+ Fixed bug where the link plugin would ask to add the mailto: prefix multiple times.
+ Fixed bug where list outdent operation could produce empty list elements on specific selections.
+ Fixed bug where element path wouldn't properly select parent elements on IE.
+ Fixed bug where IE would sometimes throw an exception when extrancting the current selection range.
+ Fixed bug where line feeds wasn't properly rendered in source view on IE.
+ Fixed bug where word count wouldn't be properly rendered on IE 7.
+ Fixed bug where menubuttons/listboxes would have an incorrect height on IE 7.
+ Fixed bug where browser spellchecking was enabled while editing inline on IE 10.
+ Fixed bug where spellchecker wouldn't properly find non English words.
+ Fixed bug where deactivating inline editor instances would force padding-top: 0 on page body.
+ Fixed bug where jQuery would initialize editors multiple times since it didn't check if the editor already existed.
+ Fixed bug where it wasn't possible to paste contents on IE 10 in modern UI mode when paste filtering was enabled.
+ Fixed bug where tabfocus plugin wouldn't work properly on inline editor instances.
+ Fixed bug where fullpage plugin would clear the existing HTML head if contents where inserted into the editor.
+ Fixed bug where deleting all table rows/columns in a table would cause an exception to be thrown on IE.
+ Fixed so color button panels gets toggled on/off when activated/deactivated.
+ Fixed so format menu items that can't be applied to the current selection gets disabled.
+ Fixed so the icon parameter for addButton isn't automatically filled if a button text is provided.
+ Fixed so image size fields gets updated when selecting a new image in the image dialog.
+ Fixed so it doesn't load any language pack if the language option is set to "en".
+ Fixed so ctrl+shift+z works as an alternative redo shortcut to match a common Mac OS X shortcut.
+ Fixed so it's not possible to drag/drop in images in Gecko by default when paste plugin is enabled.
+ Fixed so format menu item texts gets translated using the specified language pack.
+ Fixed so the image dialog title is the same as the insert/edit image button text.
+ Fixed so paste as plain text produces BR:s in PRE block and when forced_root_block is disabled.
+Version 4.0 (2013-06-13)
+ Added new insertdate_dateformat, insertdate_timeformat and insertdate_formats options to insertdatetime.
+ Added new font_formats, fontsize_formats and block_formats options to configure fontselect, fontsizeselect and formatselect.
+ Added new table_clone_elements option to table plugin. Enables you to specify what elements to clone when adding columns/rows.
+ Added new auto detect logic for site and email urls in link plugin to match the logic found in 3.x.
+ Added new getParams/setParams to WindowManager to make it easier to handle params to iframe based dialogs. Contributed by Ryan Demmer.
+ Added new textcolor options that enables you to specify the colors you want to display. Contributed by Jennifer Arsenault.
+ Added new external file support for link_list and image_list options. The file format is a simple JSON file.
+ Added new "both" mode for the resize option. Enables resizing in both width and height.
+ Added new paste_data_images option that allows you to enable/disable paste of data images.
+ Added new fixed_toolbar_container option that allows you to add a fixed container for the inline toolbar.
+ Fixed so font name, font size and block format select boxes gets updated with the current format.
+ Fixed so the resizeTo/resizeBy methods for the theme are exposed as it as in 3.x.
+ Fixed so the textcolor controls are splitbuttons as in 3.x. Patch contributed by toxalot/jashua212.
+ Fixed bug where the theme content css wasn't loaded into the preview dialog.
+ Fixed bug where the template description in template dialog wouldn't display the text correctly.
+ Fixed bug where various UI elements wasn't properly removed when an editor instance was removed.
+ Fixed bug where editing links in inline mode would fail on WebKit.
+ Fixed bug where the pagebreak_separator option in the pagebreak plugin wasn't working properly.
+ Fixed bug where the child panels of the float panel in inline mode wasn't properly placed.
+ Fixed bug where the float panel children of windows wasn't position fixed.
+ Fixed bug where the size of the ok button was hardcoded, caused issues with i18n.
+ Fixed bug where single comment in editor would cause exceptions due to resolve path logic not detecting elements only.
+ Fixed bug where switching alignment of tables in dialogs wouldn't properly remove existing alignments.
+ Fixed bug where the table properties dialog would show columns/rows textboxes.
+ Fixed bug where jQuery wasn't used instead of Sizzle in the jQuery version of TinyMCE.
+ Fixed bug where setting resize option to false whouldn't properly render the word count.
+ Fixed bug where table row type change would produce multiple table section elements.
+ Fixed bug where table row type change on multiple rows would add them in incorrect order.
+ Fixed bug where fullscreen plugin would maximize the editor on resize after toggling it off.
+ Fixed bug where context menu would be position at an incorrect coordinate in inline mode.
+ Fixed bug where inserting lists in inline mode on IE would produce errors since the body would be converted.
+ Fixed bug where the body couldn't be styled properly in custom content_css files.
+ Fixed bug where template plugins menu item would override the image menu item.
+ Fixed bug where IE 7-8 would render the text inside inputs at the wrong vertical location.
+ Fixed bug where IE configured to IE 7 compatibility mode wouldn't render the icons properly.
+ Fixed bug where editor.focus wouldn't properly fire the focusin event on WebKit.
+ Fixed bug where some keyboard shortcuts wouldn't work on IE 8.
+ Fixed bug where the undo state wasn't updated until the end of a typing level.
+ Fixed bug where keyboard shortcuts on Mac OS wasn't working correctly.
+ Fixed bug where empty inline elements would be created when toggling formatting of in empty block.
+ Fixed bug where applying styles on WebKit would fail in inline mode if the user released the mouse button outside the body.
+ Fixed bug where the visual aids menu item wasn't selected if the editor was empty.
+ Fixed so the isDirty/isNotDirty states gets updated to true/false on save() and change events.
+ Fixed so skins have separate CSS files for inline and iframe mode.
+ Fixed so menus and tool tips gets constrained to the current viewport.
+ Fixed so an error is thrown if users load jQuery after the jQuery version of TinyMCE.
+ Fixed so the filetype for media dialog passes out media instead of image as file type.
+ Fixed so it's possible to disable the toolbar by setting it to false.
+ Fixed so autoresize plugin isn't initialized when the editor is in inline mode.
+ Fixed so the inline editing toolbar will be rendered below elements if it doesn't fit above it.
+Version 4.0b3 (2013-05-15)
+ Added new optional advanced tab for image dialog with hspace, vspace, border and style.
+ Added new change event that gets fired when undo levels are added to editor instances.
+ Added new removed_menuitems option enables you to list menu items to remove from menus.
+ Added new external_plugins option enables you to specify external locations for plugins.
+ Added new language_url option enables you to specify an external location for the language pack.
+ Added new table toolbar control that displays a menu for inserting/editing menus.
+ Fixed bug where IE 10 wouldn't load files properly from cache.
+ Fixed bug where image dialog wouldn't properly remove width/height if blanked.
+ Fixed bug where all events wasn't properly unbound when editor instances where removed.
+ Fixed bug where data- attributes wasn't working properly in the SaxParser.
+ Fixed bug where Gecko wouldn't properly render broken images.
+ Fixed bug where Gecko wouldn't produce the same error dialog on paste as other browsers.
+ Fixed bug where is wasn't possible to prevent execCommands in beforeExecCommand event.
+ Fixed bug where the fullpage_hide_in_source_view option wasn't working in the fullpage plugin.
+ Fixed bug where the WindowManager close method wouldn't properly close the top most window.
+ Fixed bug where it wasn't possible to paste in IE 10 due to JS exception.
+ Fixed bug where tab key didn't move to the right child control in tabpanels.
+ Fixed bug where enter inside a form would focus the first button like control in TinyMCE.
+ Fixed bug where it would match scripts that looked like the tinymce base directory incorrectly.
+ Fixed bug where the spellchecker wouldn't properly toggle off the spellcheck mode if no errors where found.
+ Fixed bug in searchreplace plugin where it would remove all spans instead of the marker spans.
+ Fixed issue where selector wouldn't disable existing mode setting.
+ Fixed so it's easier to configure the menu and menubar.
+ Fixed so bodyId/bodyClass is applied to preview as it's done to the editor iframe.
+Version 4.0b2 (2013-04-24)
+ Added new rel_list option to link plugin. Enables you to specify values for a rel drop down.
+ Added new target_list option to link plugin. Enables you to add to or disable the link targets.
+ Added new link_list option to link plugin. Enables you to specify a list of links to pick from.
+ Added new image_list option to image pluigin. Enables you to specify a list of images to pick from.
+ Added new textcolor plugin. This plugin holds the text color and text background color buttons.
+ Fixed bug where alignment of images wasn't working properly on Firefox.
+ Fixed bug where IE 8 would throw error when inserting a table.
+ Fixed bug where IE 8 wouldn't render the element path properly.
+ Fixed bug where old IE versions would render a red focus border.
+ Fixed bug where old IE versions would render a frameborder for iframes.
+ Fixed bug where WebKit wouldn't properly open the cell properties dialog on edge case selection.
+ Fixed bug where charmap wouldn't correctly render all characters in grid.
+ Fixed bug where link dialog wouldn't update the link text properly.
+ Fixed bug where the focus/blur states on inline editors wasn't handled correctly on IE.
+ Fixed bug where IE would throw "unknown error" exception sometimes in ForceBlocks logic.
+ Fixed bug where IE would't properly render disabled buttons in button groups.
+ Fixed bug where tab key wouldn't properly move to next input field in dialogs.
+ Fixed bug where resize handles for tables and images would appear at wrong positions on IE 8.
+ Fixed bug where dialogs would produce stack overflow if title was wider than content.
+ Fixed bug with table cell/row menu items being enabled even if no cell was selected.
+ Fixed so the text to display is after the URL field in the link dialog.
+ Fixed so the width setting applies to the editor panel in modern theme.
+ Fixed so it's easier to make custom icons for buttons using plain old images.
+Version 4.0b1 (2013-04-11)
+ Added new node.js based build process used uglify, amdlc, jake etc.
+ Added new package.json to enable easy installation of dependent npm packages used for building.
+ Added new link, image, charmap, anchor, code, hr plugins since these are now moved out of the theme.
+ Rewrote all plugins and themes from scratch so they match the new UI framework.
+ Replaced all events to use the more common <target>.on/off(<event>) methods instead of <target>.<event>.add/remove.
+ Rewrote the TinyMCE core to use AMD style modules. Gets compiled to an inline library using amdlc.
+ Rewrote all core logic to pass jshint rules. Each file has specific jshint rules.
+ Removed all IE6 specific logic since 4.x will no longer support such an old browser.
+ Reworked the file names and directory structure of the whole project to be more similar to other JS projects.
+ Replaced tinymce.util.Cookie with tinymce.util.LocalStorage. Fallback to userData for IE 7 native localStorage for the rest.
+ Replaced the old 3.x UI with a new modern UI framework.
+ Removed "simple" theme and added new "modern" theme.
+ Removed advhr, advimage, advlink, iespell, inlinepopups, xhtmlxtras and style plugins.
+ Updated Sizzle to the latest version.
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ar.js b/framework/Web/Javascripts/source/tinymce-405/langs/ar.js
new file mode 100755
index 00000000..5a60b65b
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ar.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('ar',{
+"Cut": "\u0642\u0635",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u0627 \u064a\u062f\u0639\u0645 \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0628\u0627\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d Ctrl+X\/C\/V \u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.",
+"Paste": "\u0644\u0635\u0642",
+"Close": "\u0625\u063a\u0644\u0627\u0642",
+"Align right": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0645\u064a\u0646",
+"New document": "\u0645\u0633\u062a\u0646\u062f \u062c\u062f\u064a\u062f",
+"Numbered list": "\u062a\u0631\u0642\u064a\u0645",
+"Increase indent": "\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
+"Formats": "\u0627\u0644\u062a\u0646\u0633\u064a\u0642\u0627\u062a",
+"Select all": "\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644",
+"Undo": "\u062a\u0631\u0627\u062c\u0639",
+"Strikethrough": "\u064a\u062a\u0648\u0633\u0637 \u062e\u0637",
+"Bullet list": "\u062a\u0639\u062f\u0627\u062f \u0646\u0642\u0637\u064a",
+"Superscript": "\u0645\u0631\u062a\u0641\u0639",
+"Clear formatting": "\u0645\u0633\u062d \u0627\u0644\u062a\u0646\u0633\u064a\u0642",
+"Subscript": "\u0645\u0646\u062e\u0641\u0636",
+"Redo": "\u0625\u0639\u0627\u062f\u0629",
+"Ok": "\u0645\u0648\u0627\u0641\u0642",
+"Bold": "\u063a\u0627\u0645\u0642",
+"Italic": "\u0645\u0627\u0626\u0644",
+"Align center": "\u062a\u0648\u0633\u064a\u0637",
+"Decrease indent": "\u0625\u0646\u0642\u0627\u0635 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
+"Underline": "\u062a\u0633\u0637\u064a\u0631",
+"Cancel": "\u0625\u0644\u063a\u0627\u0621",
+"Justify": "\u0636\u0628\u0637",
+"Copy": "\u0646\u0633\u062e",
+"Align left": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0633\u0627\u0631",
+"Visual aids": "\u0627\u0644\u0645\u0639\u064a\u0646\u0627\u062a \u0627\u0644\u0628\u0635\u0631\u064a\u0629",
+"Lower Greek": "\u062a\u0631\u0642\u064a\u0645 \u064a\u0648\u0646\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
+"Square": "\u0645\u0631\u0628\u0639",
+"Default": "\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a",
+"Lower Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062e\u0631\u0641 \u0635\u063a\u064a\u0631\u0629",
+"Circle": "\u062f\u0627\u0626\u0631\u0629",
+"Disc": "\u0642\u0631\u0635",
+"Upper Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062d\u0631\u0641 \u0643\u0628\u064a\u0631\u0629",
+"Upper Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0643\u0628\u064a\u0631",
+"Lower Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
+"Name": "\u0627\u0644\u0627\u0633\u0645",
+"Anchor": "\u0645\u0631\u0633\u0627\u0629",
+"You have unsaved changes are you sure you want to navigate away?": "\u0644\u062f\u064a\u0643 \u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0644\u0645 \u064a\u062a\u0645 \u062d\u0641\u0638\u0647\u0627 \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u063a\u0628 \u0641\u064a \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0639\u064a\u062f\u0627\u061f",
+"Restore last draft": "\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0623\u062e\u0631 \u0645\u0633\u0648\u062f\u0629",
+"Special character": "\u0631\u0645\u0632",
+"Source code": "\u0634\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631",
+"Right to left": "\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0644\u0644\u064a\u0633\u0627\u0631",
+"Left to right": "\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0644\u0644\u064a\u0645\u064a\u0646",
+"Emoticons": "\u0627\u0644\u0631\u0645\u0648\u0632",
+"Robots": "\u0627\u0644\u0631\u0648\u0628\u0648\u062a\u0627\u062a",
+"Document properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0633\u062a\u0646\u062f",
+"Title": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
+"Keywords": "\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0628\u062d\u062b",
+"Encoding": "\u0627\u0644\u062a\u0631\u0645\u064a\u0632",
+"Description": "\u0627\u0644\u0648\u0635\u0641",
+"Author": "\u0627\u0644\u0643\u0627\u062a\u0628",
+"Fullscreen": "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
+"Horizontal line": "\u062e\u0637 \u0623\u0641\u0642\u064a",
+"Horizontal space": "\u0645\u0633\u0627\u0641\u0629 \u0623\u0641\u0642\u064a\u0629",
+"Insert\/edit image": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0635\u0648\u0631\u0629",
+"General": "\u0639\u0627\u0645",
+"Advanced": "\u062e\u0635\u0627\u0626\u0635 \u0645\u062a\u0642\u062f\u0645\u0647",
+"Source": "\u0627\u0644\u0645\u0635\u062f\u0631",
+"Border": "\u062d\u062f\u0648\u062f",
+"Constrain proportions": "\u0627\u0644\u062a\u0646\u0627\u0633\u0628",
+"Vertical space": "\u0645\u0633\u0627\u0641\u0629 \u0639\u0645\u0648\u062f\u064a\u0629",
+"Image description": "\u0648\u0635\u0641 \u0627\u0644\u0635\u0648\u0631\u0629",
+"Style": "\u0627\u0644\u0646\u0645\u0637 \/ \u0627\u0644\u0634\u0643\u0644",
+"Dimensions": "\u0627\u0644\u0623\u0628\u0639\u0627\u062f",
+"Insert date\/time": "\u0625\u062f\u0631\u0627\u062c \u062a\u0627\u0631\u064a\u062e\/\u0648\u0642\u062a",
+"Url": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
+"Text to display": "\u0627\u0644\u0646\u0635 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u0639\u0631\u0636\u0647",
+"Insert link": "\u0625\u062f\u0631\u0627\u062c \u0631\u0627\u0628\u0637",
+"New window": "\u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629",
+"None": "\u0628\u0644\u0627",
+"Target": "\u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0647\u062f\u0641",
+"Insert\/edit link": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0631\u0627\u0628\u0637",
+"Insert\/edit video": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0641\u064a\u062f\u064a\u0648",
+"Poster": "\u0645\u0644\u0635\u0642",
+"Alternative source": "\u0645\u0635\u062f\u0631 \u0628\u062f\u064a\u0644",
+"Paste your embed code below:": "\u0644\u0635\u0642 \u0643\u0648\u062f \u0627\u0644\u062a\u0636\u0645\u064a\u0646 \u0647\u0646\u0627:",
+"Insert video": "\u0625\u062f\u0631\u0627\u062c \u0641\u064a\u062f\u064a\u0648",
+"Embed": "\u062a\u0636\u0645\u064a\u0646",
+"Nonbreaking space": "\u0645\u0633\u0627\u0641\u0629 \u063a\u064a\u0631 \u0645\u0646\u0642\u0633\u0645\u0629",
+"Page break": "\u0641\u0627\u0635\u0644 \u0644\u0644\u0635\u0641\u062d\u0629",
+"Preview": "\u0645\u0639\u0627\u064a\u0646\u0629",
+"Print": "\u0637\u0628\u0627\u0639\u0629",
+"Save": "\u062d\u0641\u0638",
+"Could not find the specified string.": "\u062a\u0639\u0630\u0631 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629",
+"Replace": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
+"Next": "\u0627\u0644\u062a\u0627\u0644\u064a",
+"Whole words": "\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0643\u0644\u0645\u0627\u062a \u0628\u0627\u0644\u0643\u0627\u0645\u0644",
+"Find and replace": "\u0628\u062d\u062b \u0648\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
+"Replace with": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0628\u0640",
+"Find": "\u0628\u062d\u062b",
+"Replace all": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0627\u0644\u0643\u0644",
+"Match case": "\u0645\u0637\u0627\u0628\u0642\u0629 \u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u062d\u0631\u0641",
+"Prev": "\u0627\u0644\u0633\u0627\u0628\u0642",
+"Spellcheck": "\u062a\u062f\u0642\u064a\u0642 \u0625\u0645\u0644\u0627\u0626\u064a",
+"Finish": "\u0627\u0646\u062a\u0647\u064a",
+"Ignore all": "\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0643\u0644",
+"Ignore": "\u062a\u062c\u0627\u0647\u0644",
+"Insert row before": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
+"Rows": "\u0639\u062f\u062f \u0627\u0644\u0635\u0641\u0648\u0641",
+"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
+"Paste row after": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
+"Alignment": "\u0645\u062d\u0627\u0630\u0627\u0629",
+"Column group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0639\u0645\u0648\u062f",
+"Row": "\u0635\u0641",
+"Insert column before": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0633\u0627\u0631",
+"Split cell": "\u062a\u0642\u0633\u064a\u0645 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
+"Cell padding": "\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u062e\u0644\u064a\u0629",
+"Cell spacing": "\u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0628\u064a\u0646 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
+"Row type": "\u0646\u0648\u0639 \u0627\u0644\u0635\u0641",
+"Insert table": "\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644",
+"Body": "\u0647\u064a\u0643\u0644",
+"Caption": "\u0634\u0631\u062d",
+"Footer": "\u062a\u0630\u064a\u064a\u0644",
+"Delete row": "\u062d\u0630\u0641 \u0635\u0641",
+"Paste row before": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
+"Scope": "\u0627\u0644\u0645\u062c\u0627\u0644",
+"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
+"Header cell": "\u0631\u0623\u0633 \u0627\u0644\u062e\u0644\u064a\u0629",
+"Column": "\u0639\u0645\u0648\u062f",
+"Cell": "\u062e\u0644\u064a\u0629",
+"Header": "\u0627\u0644\u0631\u0623\u0633",
+"Cell type": "\u0646\u0648\u0639 \u0627\u0644\u062e\u0644\u064a\u0629",
+"Copy row": "\u0646\u0633\u062e \u0627\u0644\u0635\u0641",
+"Row properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0635\u0641",
+"Table properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644",
+"Row group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0635\u0641",
+"Right": "\u064a\u0645\u064a\u0646",
+"Insert column after": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0645\u064a\u0646",
+"Cols": "\u0639\u062f\u062f \u0627\u0644\u0623\u0639\u0645\u062f\u0629",
+"Insert row after": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
+"Width": "\u0639\u0631\u0636",
+"Cell properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062e\u0644\u064a\u0629",
+"Left": "\u064a\u0633\u0627\u0631",
+"Cut row": "\u0642\u0635 \u0627\u0644\u0635\u0641",
+"Delete column": "\u062d\u0630\u0641 \u0639\u0645\u0648\u062f",
+"Center": "\u062a\u0648\u0633\u064a\u0637",
+"Merge cells": "\u062f\u0645\u062c \u062e\u0644\u0627\u064a\u0627",
+"Insert template": "\u0625\u062f\u0631\u0627\u062c \u0642\u0627\u0644\u0628",
+"Templates": "\u0642\u0648\u0627\u0644\u0628",
+"Background color": "\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",
+"Text color": "\u0644\u0648\u0646 \u0627\u0644\u0646\u0635",
+"Show blocks": "\u0645\u0634\u0627\u0647\u062f\u0629 \u0627\u0644\u0643\u062a\u0644",
+"Show invisible characters": "\u0623\u0638\u0647\u0631 \u0627\u0644\u0623\u062d\u0631\u0641 \u0627\u0644\u063a\u064a\u0631 \u0645\u0631\u0626\u064a\u0629",
+"Words: {0}": "\u0627\u0644\u0643\u0644\u0645\u0627\u062a:{0}",
+"Insert": "\u0625\u062f\u0631\u0627\u062c",
+"File": "\u0645\u0644\u0641",
+"Edit": "\u062a\u062d\u0631\u064a\u0631",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0645\u0646\u0637\u0642\u0629 \u0646\u0635 \u0645\u0646\u0633\u0642. \u0627\u0636\u063a\u0637 ALT-F9 \u0644\u0644\u0642\u0627\u0626\u0645\u0629. \u0627\u0636\u063a\u0637 ALT-F10 \u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a. \u0627\u0636\u063a\u0637 ALT-0 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0633\u0627\u0639\u062f\u0629",
+"Tools": "\u0623\u062f\u0627\u0648\u0627\u062a",
+"View": "\u0639\u0631\u0636",
+"Table": "\u062c\u062f\u0648\u0644",
+"Format": "\u062a\u0646\u0633\u064a\u0642"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/bg_BG.js b/framework/Web/Javascripts/source/tinymce-405/langs/bg_BG.js
new file mode 100755
index 00000000..e1f39e9f
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/bg_BG.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('bg_BG',{
+"Cut": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435",
+"Header 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448\u0438\u044f\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u043a\u043b\u0438\u043f\u0431\u043e\u0440\u0434\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0432\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 Ctrl+X (\u0437\u0430 \u0438\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435), Ctrl+C (\u0437\u0430 \u043a\u043e\u043f\u0438\u0440\u0430\u043d\u0435) \u0438 Ctrl+V (\u0437\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435).",
+"Div": "\u0411\u043b\u043e\u043a",
+"Paste": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435",
+"Close": "\u0417\u0430\u0442\u0432\u0430\u0440\u044f\u043d\u0435",
+"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u0435\u043d \u0442\u0435\u043a\u0441\u0442",
+"Align right": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u0434\u044f\u0441\u043d\u043e",
+"New document": "\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442",
+"Numbered list": "\u041d\u043e\u043c\u0435\u0440\u0438\u0440\u0430\u043d \u0441\u043f\u0438\u0441\u044a\u043a",
+"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435",
+"Headers": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f",
+"Select all": "\u041c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0446\u044f\u043b\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435",
+"Header 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u043e\u0432\u0435",
+"Undo": "\u0412\u044a\u0440\u043d\u0438",
+"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u0432\u0430\u043d\u0435",
+"Bullet list": "\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0432\u043e\u0434\u0430\u0447\u0438",
+"Header 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",
+"Superscript": "\u0413\u043e\u0440\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u0418\u0437\u0447\u0438\u0441\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e",
+"Subscript": "\u0414\u043e\u043b\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",
+"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438",
+"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
+"Ok": "\u0414\u043e\u0431\u0440\u0435",
+"Bold": "\u0423\u0434\u0435\u0431\u0435\u043b\u0435\u043d (\u043f\u043e\u043b\u0443\u0447\u0435\u0440)",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d (\u043a\u0443\u0440\u0441\u0438\u0432)",
+"Align center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
+"Header 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",
+"Decrease indent": "\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
+"Header 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0435 \u0432 \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d \u0440\u0435\u0436\u0438\u043c. \u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u0449\u0435 \u0431\u044a\u0434\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e \u043a\u0430\u0442\u043e \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442, \u0434\u043e\u043a\u0430\u0442\u043e \u0438\u0437\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0442\u0430\u0437\u0438 \u043e\u043f\u0446\u0438\u044f.",
+"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d",
+"Cancel": "\u041e\u0442\u043a\u0430\u0437",
+"Justify": "\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
+"Inline": "\u041d\u0430 \u0435\u0434\u0438\u043d \u0440\u0435\u0434",
+"Copy": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435",
+"Align left": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u043b\u044f\u0432\u043e",
+"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0438 \u0431\u0435\u0437 \u043a\u0430\u043d\u0442\u043e\u0432\u0435 (\u0440\u0430\u043c\u043a\u0438)",
+"Lower Greek": "\u041c\u0430\u043b\u043a\u0438 \u0433\u0440\u044a\u0446\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Square": "\u0417\u0430\u043f\u044a\u043b\u043d\u0435\u043d\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
+"Default": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",
+"Lower Alpha": "\u041c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Circle": "\u041e\u043a\u0440\u044a\u0436\u043d\u043e\u0441\u0442\u0438",
+"Disc": "\u041a\u0440\u044a\u0433\u0447\u0435\u0442\u0430",
+"Upper Alpha": "\u0413\u043e\u043b\u0435\u043c\u0438 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Upper Roman": "\u0413\u043e\u043b\u0435\u043c\u0438 \u0440\u0438\u043c\u0441\u043a\u0438 \u0446\u0438\u0444\u0440\u0438",
+"Lower Roman": "\u041c\u0430\u043b\u043a\u0438 \u0440\u0438\u043c\u0441\u043a\u0438 \u0446\u0438\u0444\u0440\u0438",
+"Name": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
+"Anchor": "\u041a\u043e\u0442\u0432\u0430 (\u0432\u0440\u044a\u0437\u043a\u0430 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430)",
+"You have unsaved changes are you sure you want to navigate away?": "\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u043c\u0430 \u043d\u0435\u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u0438. \u0429\u0435 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u043b\u0438?",
+"Restore last draft": "\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u0430",
+"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0435\u043d \u0437\u043d\u0430\u043a",
+"Source code": "\u0418\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 HTML",
+"Right to left": "\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430\u043b\u044f\u0432\u043e",
+"Left to right": "\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430\u0434\u044f\u0441\u043d\u043e",
+"Emoticons": "\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438 \u043d\u0430 \u0443\u0435\u0431 \u0442\u044a\u0440\u0441\u0430\u0447\u043a\u0438",
+"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Title": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
+"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0438 \u0434\u0443\u043c\u0438",
+"Encoding": "\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0437\u043d\u0430\u0446\u0438\u0442\u0435",
+"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041d\u0430 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d",
+"Horizontal line": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u0447\u0435\u0440\u0442\u0430",
+"Horizontal space": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
+"Insert\/edit image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",
+"General": "\u041e\u0431\u0449\u043e",
+"Advanced": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e",
+"Source": "\u0410\u0434\u0440\u0435\u0441",
+"Border": "\u041a\u0430\u043d\u0442 (\u0440\u0430\u043c\u043a\u0430)",
+"Constrain proportions": "\u0417\u0430\u0432\u0430\u0437\u043d\u0430\u0432\u0435 \u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
+"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430",
+"Style": "\u0421\u0442\u0438\u043b",
+"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
+"Insert image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"Insert date\/time": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0434\u0430\u0442\u0430\/\u0447\u0430\u0441",
+"Remove link": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",
+"Url": "\u0410\u0434\u0440\u0435\u0441 (URL)",
+"Text to display": "\u0422\u0435\u043a\u0441\u0442",
+"Anchors": "\u041a\u043e\u0442\u0432\u0430 (\u0432\u0440\u044a\u0437\u043a\u0430 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430)",
+"Insert link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)",
+"New window": "\u0412 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 (\u043f\u043e\u0434\u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446)",
+"None": "\u0411\u0435\u0437",
+"Target": "\u0426\u0435\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Insert\/edit link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)",
+"Insert\/edit video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e",
+"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
+"Alternative source": "\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0430\u0434\u0440\u0435\u0441",
+"Paste your embed code below:": "\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043a\u043e\u0434\u0430 \u0437\u0430 \u0432\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0432 \u043f\u043e\u043b\u0435\u0442\u043e \u043f\u043e-\u0434\u043e\u043b\u0443:",
+"Insert video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e",
+"Embed": "\u0412\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435",
+"Nonbreaking space": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Page break": "\u041d\u043e\u0432\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
+"Paste as text": "\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0442\u0435\u043a\u0441\u0442",
+"Preview": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u0435\u043d \u0438\u0437\u0433\u043b\u0435\u0434",
+"Print": "\u041f\u0435\u0447\u0430\u0442",
+"Save": "\u0421\u044a\u0445\u0440\u0430\u043d\u044f\u0432\u0430\u043d\u0435",
+"Could not find the specified string.": "\u0422\u044a\u0440\u0441\u0435\u043d\u0438\u044f\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
+"Replace": "\u0417\u0430\u043c\u044f\u043d\u0430",
+"Next": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449",
+"Whole words": "\u0421\u0430\u043c\u043e \u0446\u0435\u043b\u0438 \u0434\u0443\u043c\u0438",
+"Find and replace": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0438 \u0437\u0430\u043c\u044f\u043d\u0430",
+"Replace with": "\u0417\u0430\u043c\u044f\u043d\u0430 \u0441",
+"Find": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0437\u0430",
+"Replace all": "\u0417\u0430\u043c\u044f\u043d\u0430 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0441\u0440\u0435\u0449\u0430\u043d\u0438\u044f",
+"Match case": "\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430 (\u043c\u0430\u043b\u043a\u0438\/\u0433\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438)",
+"Prev": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d",
+"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430",
+"Finish": "\u041a\u0440\u0430\u0439",
+"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u043e",
+"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435",
+"Insert row before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
+"Rows": "\u0420\u0435\u0434\u043e\u0432\u0435",
+"Height": "\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",
+"Paste row after": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
+"Alignment": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
+"Column group": "Column group",
+"Row": "\u0420\u0435\u0434",
+"Insert column before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u0438",
+"Split cell": "\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430",
+"Cell padding": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e",
+"Cell spacing": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
+"Row type": "\u0422\u0438\u043f \u043d\u0430 \u0440\u0435\u0434\u0430",
+"Insert table": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430",
+"Body": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 (body)",
+"Caption": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
+"Footer": "\u0414\u043e\u043b\u0435\u043d \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b (footer)",
+"Delete row": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434\u0430",
+"Paste row before": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
+"Scope": "\u041e\u0431\u0445\u0432\u0430\u0442",
+"Delete table": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
+"Header cell": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430 (\u0430\u043d\u0442\u0435\u0442\u043a\u0430)",
+"Column": "\u041a\u043e\u043b\u043e\u043d\u0430",
+"Cell": "\u041a\u043b\u0435\u0442\u043a\u0430",
+"Header": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0430 \u0430\u043d\u0442\u0435\u0442\u043a\u0430 (header)",
+"Cell type": "\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
+"Copy row": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434",
+"Row properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430",
+"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
+"Row group": "Row group",
+"Right": "\u0414\u044f\u0441\u043d\u043e",
+"Insert column after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u0441\u043b\u0435\u0434",
+"Cols": "\u041a\u043e\u043b\u043e\u043d\u0438",
+"Insert row after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
+"Left": "\u041b\u044f\u0432\u043e",
+"Cut row": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434",
+"Delete column": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430",
+"Center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
+"Merge cells": "\u0421\u043b\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
+"Insert template": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
+"Background color": "\u0424\u043e\u043d\u043e\u0432 \u0446\u0432\u044f\u0442",
+"Text color": "\u0426\u0432\u044f\u0442 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a\u043e\u0432\u0435\u0442\u0435",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u0435\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c\u0438 \u0437\u043d\u0430\u0446\u0438",
+"Words: {0}": "\u0411\u0440\u043e\u0439 \u0434\u0443\u043c\u0438: {0}",
+"Insert": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041f\u043e\u043b\u0435 \u0437\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 Alt+F9 \u0437\u0430 \u043c\u0435\u043d\u044e; Alt+F10 \u0437\u0430 \u043b\u0435\u043d\u0442\u0430 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438; Alt+0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449.",
+"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
+"View": "\u0418\u0437\u0433\u043b\u0435\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/bs.js b/framework/Web/Javascripts/source/tinymce-405/langs/bs.js
new file mode 100755
index 00000000..77b8000f
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/bs.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('bs',{
+"Cut": "Izre\u017ei",
+"Header 2": "Zaglavlje 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 browser ne podr\u017eava direktan pristup me\u0111umemoriji. Molimo vas da koristite pre\u010dice Ctrl+X\/C\/V na tastaturi.",
+"Div": "Div",
+"Paste": "Zalijepi",
+"Close": "Zatvori",
+"Pre": "Pre",
+"Align right": "Poravnaj desno",
+"New document": "Novi dokument",
+"Blockquote": "Blok citat",
+"Numbered list": "Numerisana lista",
+"Increase indent": "Pove\u0107aj uvlaku",
+"Formats": "Formati",
+"Headers": "Zaglavlja",
+"Select all": "Ozna\u010di sve",
+"Header 3": "Zaglavlje 3",
+"Blocks": "Blokovi",
+"Undo": "Nazad",
+"Strikethrough": "Precrtano",
+"Bullet list": "Bullet lista",
+"Header 1": "Zaglavlje 1",
+"Superscript": "Eksponent",
+"Clear formatting": "Poni\u0161ti formatiranje",
+"Subscript": "Indeks",
+"Header 6": "Zaglavlje 6",
+"Redo": "Naprijed",
+"Paragraph": "Paragraf",
+"Ok": "U redu",
+"Bold": "Podebljano",
+"Code": "Kod",
+"Italic": "Nakrivljen",
+"Align center": "Centriraj",
+"Header 5": "Zaglavlje 5",
+"Decrease indent": "Smanji uvlaku",
+"Header 4": "Zaglavlje 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lijepljenje je sada u modu obi\u010dnog teksta. Sadr\u017eaj \u0107e sada biti zalijepljen kao obi\u010dni tekst sve dok ovu opciju ne ugasite.",
+"Underline": "Podvu\u010deno",
+"Cancel": "Otka\u017ei",
+"Justify": "Obostrano poravnanje",
+"Inline": "U liniji",
+"Copy": "Kopiraj",
+"Align left": "Poravnaj lijevo",
+"Visual aids": "Vizualna pomo\u0107",
+"Lower Greek": "Mala gr\u010dka slova",
+"Square": "Kvadrat",
+"Default": "Po\u010detno",
+"Lower Alpha": "Mala slova",
+"Circle": "Krug",
+"Disc": "Disk",
+"Upper Alpha": "Velika slova",
+"Upper Roman": "Velika rimska slova",
+"Lower Roman": "Mala rimska slova",
+"Name": "Ime",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "Niste sa\u010duvali izmjene. Jeste li sigurni da \u017eelite napustiti stranicu?",
+"Restore last draft": "Vrati posljednju skicu",
+"Special character": "Specijalni znak",
+"Source code": "Izvorni kod",
+"Right to left": "S desna na lijevo",
+"Left to right": "S lijeva na desno",
+"Emoticons": "Smajliji",
+"Robots": "Roboti",
+"Document properties": "Svojstva dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne rije\u010di",
+"Encoding": "Kodiranje",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Cijeli ekran",
+"Horizontal line": "Vodoravna linija",
+"Horizontal space": "Horizontalni razmak",
+"Insert\/edit image": "Umetni\/uredi sliku",
+"General": "Op\u0107enito",
+"Advanced": "Napredno",
+"Source": "Izvor",
+"Border": "Okvir",
+"Constrain proportions": "Ograni\u010di proporcije",
+"Vertical space": "Vertikalni razmak",
+"Image description": "Opis slike",
+"Style": "Stil",
+"Dimensions": "Dimenzije",
+"Insert image": "Umetni sliku",
+"Insert date\/time": "Umetni datum\/vrijeme",
+"Remove link": "Ukloni link",
+"Url": "URL",
+"Text to display": "Tekst za prikaz",
+"Anchors": "Anchori",
+"Insert link": "Umetni link",
+"New window": "Novi prozor",
+"None": "Ni\u0161ta",
+"Target": "Odredi\u0161te",
+"Insert\/edit link": "Umetni\/uredi link",
+"Insert\/edit video": "Umetni\/uredi video",
+"Poster": "Objavio",
+"Alternative source": "Alternativni izvor",
+"Paste your embed code below:": "Zalijepite va\u0161 ugradbeni kod ispod:",
+"Insert video": "Umetni video",
+"Embed": "Ugradi",
+"Nonbreaking space": "Neprijelomni razmak",
+"Page break": "Prijelom stranice",
+"Paste as text": "Zalijepi kao tekst",
+"Preview": "Pregled",
+"Print": "\u0160tampaj",
+"Save": "Sa\u010duvaj",
+"Could not find the specified string.": "Tra\u017eeni string nije prona\u0111en.",
+"Replace": "Zamijeni",
+"Next": "Sljede\u0107e",
+"Whole words": "Cijele rije\u010di",
+"Find and replace": "Prona\u0111i i zamijeni",
+"Replace with": "Zamijena sa",
+"Find": "Prona\u0111i",
+"Replace all": "Zamijeni sve",
+"Match case": "Razlikuj mala i velika slova",
+"Prev": "Prethodno",
+"Spellcheck": "Provjera pravopisa",
+"Finish": "Zavr\u0161i",
+"Ignore all": "Zanemari sve",
+"Ignore": "Zanemari",
+"Insert row before": "Umetni red iznad",
+"Rows": "Redovi",
+"Height": "Visina",
+"Paste row after": "Zalijepi red iznad",
+"Alignment": "Poravnanje",
+"Column group": "Grupa kolone",
+"Row": "Red",
+"Insert column before": "Umetni kolonu iznad",
+"Split cell": "Podijeli \u0107eliju",
+"Cell padding": "Ispunjenje \u0107elije",
+"Cell spacing": "Razmak \u0107elija",
+"Row type": "Vrsta reda",
+"Insert table": "Umetni tabelu",
+"Body": "Tijelo",
+"Caption": "Natpis",
+"Footer": "Podno\u017eje",
+"Delete row": "Obri\u0161i red",
+"Paste row before": "Zalijepi red ispod",
+"Scope": "Opseg",
+"Delete table": "Obri\u0161i tabelu",
+"Header cell": "\u0106elija zaglavlja",
+"Column": "Kolona",
+"Cell": "\u0106elija",
+"Header": "Zaglavlje",
+"Cell type": "Vrsta \u0107elije",
+"Copy row": "Kopiraj red",
+"Row properties": "Svojstva reda",
+"Table properties": "Svojstva tabele",
+"Row group": "Grupa reda",
+"Right": "Desno",
+"Insert column after": "Umetni kolonu ispod",
+"Cols": "Kolone",
+"Insert row after": "Umetni red ispod",
+"Width": "\u0160irina",
+"Cell properties": "Svojstva \u0107elije",
+"Left": "Lijevo",
+"Cut row": "Izre\u017ei red",
+"Delete column": "Obri\u0161i kolonu",
+"Center": "Centrirano",
+"Merge cells": "Spoji \u0107elije",
+"Insert template": "Umetni predlo\u017eak",
+"Templates": "Predlo\u0161ci",
+"Background color": "Boja pozadine",
+"Text color": "Boja tekst",
+"Show blocks": "Prika\u017ei blokove",
+"Show invisible characters": "Prika\u017ei nevidljive znakove",
+"Words: {0}": "Rije\u010di: {0}",
+"Insert": "Umetni",
+"File": "Datoteka",
+"Edit": "Uredi",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Oblast za ure\u0111ivanje teksta. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za prikaz alatne trake. Pritisnite ALT-0 za pomo\u0107.",
+"Tools": "Alati",
+"View": "Pregled",
+"Table": "Tabela",
+"Format": "Formatiranje"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ca.js b/framework/Web/Javascripts/source/tinymce-405/langs/ca.js
new file mode 100755
index 00000000..110b0109
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ca.js
@@ -0,0 +1,118 @@
+tinymce.addI18n('ca',{
+"Cut": "Retalla",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "El vostre navegador no suporta l'acc\u00e9s directe al portaobjectes. Si us plau, feu servir les dreceres de teclat Ctrl+X\/C\/V en el seu lloc",
+"Paste": "Pega",
+"Close": "Tanca",
+"Align right": "Aliniat a la dreta",
+"New document": "Nou document",
+"Numbered list": "Llista enumerada",
+"Increase indent": "Augmentar sagnat",
+"Formats": "Formats",
+"Select all": "Seleccionar-ho tot",
+"Undo": "Desfer",
+"Strikethrough": "Ratllat",
+"Bullet list": "Llista no ordenada",
+"Superscript": "Super\u00edndex",
+"Clear formatting": "Eliminar format",
+"Subscript": "Sub\u00edndex",
+"Redo": "Refer",
+"Ok": "Acceptar",
+"Bold": "Negreta",
+"Italic": "Cursiva",
+"Align center": "Centrat",
+"Decrease indent": "Disminuir sagnat",
+"Underline": "Subratllat",
+"Cancel": "Cancel\u00b7la",
+"Justify": "Justificat",
+"Copy": "Copia",
+"Align left": "Aliniat a l'esquerra",
+"Visual aids": "Assist\u00e8ncia visual",
+"Lower Greek": "Grec menor",
+"Square": "Quadrat",
+"Default": "Per defecte",
+"Lower Alpha": "Alfa menor",
+"Circle": "Cercle",
+"Disc": "Disc",
+"Upper Alpha": "Alfa major",
+"Upper Roman": "Roman major",
+"Lower Roman": "Roman menor",
+"Name": "Nom",
+"Anchor": "\u00c0ncora",
+"You have unsaved changes are you sure you want to navigate away?": "Teniu canvis sense desar, esteu segur que voleu deixar-ho ara?",
+"Restore last draft": "Restaurar l'\u00faltim esborrany",
+"Special character": "Car\u00e0cter especial",
+"Source code": "Codi font",
+"Right to left": "De dreta a esquerra",
+"Left to right": "D'esquerra a dreta",
+"Emoticons": "Emoticones",
+"Robots": "Robots",
+"Document properties": "Propietats del document",
+"Title": "T\u00edtol",
+"Keywords": "Paraules clau",
+"Encoding": "Codificaci\u00f3",
+"Description": "Descripci\u00f3",
+"Author": "Autor",
+"Fullscreen": "Pantalla completa",
+"Horizontal line": "L\u00ednia horitzontal",
+"Horizontal space": "Espai horitzontal",
+"Insert\/edit image": "Inserir\/editar imatge",
+"General": "General",
+"Advanced": "Avan\u00e7at",
+"Source": "Font",
+"Border": "Vora",
+"Constrain proportions": "Mantenir proporcions",
+"Vertical space": "Espai vertical",
+"Image description": "Descripci\u00f3 de la imatge",
+"Style": "Estil",
+"Dimensions": "Dimensions",
+"Insert image": "Inserir imatge",
+"Insert date\/time": "Inserir data\/hora",
+"Remove link": "Treure enlla\u00e7",
+"Url": "URL",
+"Text to display": "Text per mostrar",
+"Insert link": "Inserir enlla\u00e7",
+"New window": "Finestra nova",
+"None": "Cap",
+"Target": "Dest\u00ed",
+"Insert\/edit link": "Inserir\/editar enlla\u00e7",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "P\u00f3ster",
+"Alternative source": "Font alternativa",
+"Paste your embed code below:": "Enganxau el codi a sota:",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Incloure",
+"Nonbreaking space": "Espai fixe",
+"Page break": "Salt de p\u00e0gina",
+"Preview": "Previsualitzaci\u00f3",
+"Print": "Imprimir",
+"Save": "Desa",
+"Could not find the specified string.": "No es pot trobar el text especificat.",
+"Replace": "Rempla\u00e7ar",
+"Next": "Seg\u00fcent",
+"Whole words": "Paraules senceres",
+"Find and replace": "Buscar i rempla\u00e7ar",
+"Replace with": "Rempla\u00e7ar amb",
+"Find": "Buscar",
+"Replace all": "Rempla\u00e7ar-ho tot",
+"Match case": "Coincidir maj\u00fascules",
+"Prev": "Ant",
+"Spellcheck": "Comprovar ortrografia",
+"Finish": "Finalitzar",
+"Ignore all": "Ignorar tots",
+"Ignore": "Ignorar",
+"Insert template": "Inserir plantilla",
+"Templates": "Plantilles",
+"Background color": "Color del fons",
+"Text color": "Color del text",
+"Show blocks": "Mostrar blocs",
+"Show invisible characters": "Mostrar car\u00e0cters invisibles",
+"Words: {0}": "Paraules: {0}",
+"Insert": "Inserir",
+"File": "Arxiu",
+"Edit": "Edici\u00f3",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c0rea de text amb format. Premeu ALT-F9 per mostrar el men\u00fa, ALT F10 per la barra d'eines i ALT-0 per ajuda.",
+"Tools": "Eines",
+"View": "Veure",
+"Table": "Taula",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/cs.js b/framework/Web/Javascripts/source/tinymce-405/langs/cs.js
new file mode 100755
index 00000000..9ab436c3
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/cs.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('cs',{
+"Cut": "Vyjmout",
+"Header 2": "Nadpis 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prohl\u00ed\u017ee\u010d nepodporuje p\u0159\u00edm\u00fd p\u0159\u00edstup do schr\u00e1nky. Pou\u017eijte pros\u00edm kl\u00e1vesov\u00e9 zkratky Ctrl+X\/C\/V.",
+"Div": "Div (blok)",
+"Paste": "Vlo\u017eit",
+"Close": "Zav\u0159\u00edt",
+"Pre": "Pre (p\u0159edform\u00e1tov\u00e1no)",
+"Align right": "Zarovnat vpravo",
+"New document": "Nov\u00fd dokument",
+"Blockquote": "Citace",
+"Numbered list": "\u010c\u00edslov\u00e1n\u00ed",
+"Increase indent": "Zv\u011bt\u0161it odsazen\u00ed",
+"Formats": "Form\u00e1ty",
+"Headers": "Nadpisy",
+"Select all": "Vybrat v\u0161e",
+"Header 3": "Nadpis 3",
+"Blocks": "Blokov\u00e9 zobrazen\u00ed (block)",
+"Undo": "Zp\u011bt",
+"Strikethrough": "P\u0159e\u0161rktnut\u00e9",
+"Bullet list": "Odr\u00e1\u017eky",
+"Header 1": "Nadpis 1",
+"Superscript": "Horn\u00ed index",
+"Clear formatting": "Vymazat form\u00e1tov\u00e1n\u00ed",
+"Subscript": "Doln\u00ed index",
+"Header 6": "Nadpis 6",
+"Redo": "Znovu",
+"Paragraph": "Odstavec",
+"Ok": "OK",
+"Bold": "Tu\u010dn\u00e9",
+"Code": "Code (k\u00f3d)",
+"Italic": "Kurz\u00edva",
+"Align center": "Zarovnat na st\u0159ed",
+"Header 5": "Nadpis 5",
+"Decrease indent": "Zmen\u0161it odsazen\u00ed",
+"Header 4": "Nadpis 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Je zapnuto vkl\u00e1d\u00e1n\u00ed \u010dist\u00e9ho textu. Dokud nebude tato volba vypnuta, bude ve\u0161ker\u00fd obsah vlo\u017een jako \u010dist\u00fd text.",
+"Underline": "Podtr\u017een\u00e9",
+"Cancel": "Zru\u0161it",
+"Justify": "Zarovnat do bloku",
+"Inline": "\u0158\u00e1dkov\u00e9 zobrazen\u00ed (inline)",
+"Copy": "Kop\u00edrovat",
+"Align left": "Zarovnat vlevo",
+"Visual aids": "Vizu\u00e1ln\u00ed pom\u016fcky",
+"Lower Greek": "Mal\u00e9 p\u00edsmenkov\u00e1n\u00ed",
+"Square": "\u010ctvere\u010dek",
+"Default": "V\u00fdchoz\u00ed",
+"Lower Alpha": "Norm\u00e1ln\u00ed \u010d\u00edslov\u00e1n\u00ed",
+"Circle": "Kole\u010dko",
+"Disc": "Punt\u00edk",
+"Upper Alpha": "velk\u00e9 p\u00edsmenkov\u00e1n\u00ed",
+"Upper Roman": "\u0158\u00edmsk\u00e9 \u010d\u00edslice",
+"Lower Roman": "Mal\u00e9 \u0159\u00edmsk\u00e9 \u010d\u00edslice",
+"Name": "N\u00e1zev",
+"Anchor": "Kotva",
+"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zm\u011bny. Opravdu chcete opustit str\u00e1nku?",
+"Restore last draft": "Obnovit posledn\u00ed koncept",
+"Special character": "Speci\u00e1ln\u00ed znak",
+"Source code": "Zdrojov\u00fd k\u00f3d",
+"Right to left": "Zprava doleva",
+"Left to right": "Zleva doprava",
+"Emoticons": "Emotikony",
+"Robots": "Roboti",
+"Document properties": "Vlastnosti dokumentu",
+"Title": "Titulek",
+"Keywords": "Kl\u00ed\u010dov\u00e1 slova",
+"Encoding": "K\u00f3dov\u00e1n\u00ed",
+"Description": "Popis",
+"Author": "Autor",
+"Fullscreen": "Na celou obrazovku",
+"Horizontal line": "Vodorovn\u00e1 \u010d\u00e1ra",
+"Horizontal space": "Horizont\u00e1ln\u00ed mezera",
+"Insert\/edit image": "Vlo\u017eit \/ upravit obr\u00e1zek",
+"General": "Obecn\u00e9",
+"Advanced": "Pokro\u010dil\u00e9",
+"Source": "Zdroj",
+"Border": "R\u00e1me\u010dek",
+"Constrain proportions": "Zachovat proporce",
+"Vertical space": "Vertik\u00e1ln\u00ed mezera",
+"Image description": "Popis obr\u00e1zku",
+"Style": "Styl",
+"Dimensions": "Rozm\u011bry",
+"Insert image": "Vlo\u017eit obr\u00e1zek",
+"Insert date\/time": "Vlo\u017eit datum \/ \u010das",
+"Remove link": "Odstranit odkaz",
+"Url": "Odkaz",
+"Text to display": "Text k zobrazen\u00ed",
+"Anchors": "Kotvy",
+"Insert link": "Vlo\u017eit odkaz",
+"New window": "Nov\u00e9 okno",
+"None": "\u017d\u00e1dn\u00e9",
+"Target": "C\u00edl",
+"Insert\/edit link": "Vlo\u017eit \/ upravit odkaz",
+"Insert\/edit video": "Vlo\u017eit \/ upravit video",
+"Poster": "N\u00e1hled",
+"Alternative source": "Alternativn\u00ed zdroj",
+"Paste your embed code below:": "Vlo\u017ete k\u00f3d pro vlo\u017een\u00ed n\u00ed\u017ee:",
+"Insert video": "Vlo\u017eit video",
+"Embed": "Vlo\u017eit",
+"Nonbreaking space": "Pevn\u00e1 mezera",
+"Page break": "Konec str\u00e1nky",
+"Paste as text": "Vlo\u017eit jako text",
+"Preview": "N\u00e1hled",
+"Print": "Tisk",
+"Save": "Ulo\u017eit",
+"Could not find the specified string.": "Zadan\u00fd \u0159et\u011bzec nebyl nalezen.",
+"Replace": "Nahradit",
+"Next": "Dal\u0161\u00ed",
+"Whole words": "Cel\u00e1 slova",
+"Find and replace": "Naj\u00edt a nahradit",
+"Replace with": "Nahradit za",
+"Find": "Naj\u00edt",
+"Replace all": "Nahradit v\u0161e",
+"Match case": "Rozli\u0161ovat velikost",
+"Prev": "P\u0159edchoz\u00ed",
+"Spellcheck": "Kontrola pravopisu",
+"Finish": "Ukon\u010dit",
+"Ignore all": "Ignorovat v\u0161e",
+"Ignore": "Ignorovat",
+"Insert row before": "Vlo\u017eit \u0159\u00e1dek nad",
+"Rows": "\u0158\u00e1dek",
+"Height": "V\u00fd\u0161ka",
+"Paste row after": "Vlo\u017eit \u0159\u00e1dek pod",
+"Alignment": "Zarovn\u00e1n\u00ed",
+"Column group": "Skupina sloupc\u016f",
+"Row": "\u0158\u00e1dek",
+"Insert column before": "Vlo\u017eit sloupec vlevo",
+"Split cell": "Rozd\u011blit bu\u0148ky",
+"Cell padding": "Vnit\u0159n\u00ed okraj bun\u011bk",
+"Cell spacing": "Vn\u011bj\u0161\u00ed okraj bun\u011bk",
+"Row type": "Typ \u0159\u00e1dku",
+"Insert table": "Vlo\u017eit tabulku",
+"Body": "T\u011blo",
+"Caption": "Nadpis",
+"Footer": "Pati\u010dka",
+"Delete row": "Smazat \u0159\u00e1dek",
+"Paste row before": "Vlo\u017eit \u0159\u00e1dek nad",
+"Scope": "Rozsah",
+"Delete table": "Smazat tabulku",
+"Header cell": "Hlavi\u010dkov\u00e1 bu\u0148ka",
+"Column": "Sloupec",
+"Cell": "Bu\u0148ka",
+"Header": "Hlavi\u010dka",
+"Cell type": "Typ bu\u0148ky",
+"Copy row": "Kop\u00edrovat \u0159\u00e1dek",
+"Row properties": "Vlastnosti \u0159\u00e1dku",
+"Table properties": "Vlastnosti tabulky",
+"Row group": "Skupina \u0159\u00e1dk\u016f",
+"Right": "Vpravo",
+"Insert column after": "Vlo\u017eit sloupec vpravo",
+"Cols": "Sloupc\u016f",
+"Insert row after": "Vlo\u017eit \u0159\u00e1dek pod",
+"Width": "\u0160\u00ed\u0159ka",
+"Cell properties": "Vlastnosti bu\u0148ky",
+"Left": "Vlevo",
+"Cut row": "Vyjmout \u0159\u00e1dek",
+"Delete column": "Smazat sloupec",
+"Center": "Na st\u0159ed",
+"Merge cells": "Slou\u010dit bu\u0148ky",
+"Insert template": "Vlo\u017eit \u0161ablonu",
+"Templates": "\u0160ablony",
+"Background color": "Barva pozad\u00ed",
+"Text color": "Barva p\u00edsma",
+"Show blocks": "Uk\u00e1zat bloky",
+"Show invisible characters": "Zobrazit speci\u00e1ln\u00ed znaky",
+"Words: {0}": "Po\u010det slov: {0}",
+"Insert": "Vlo\u017eit",
+"File": "Soubor",
+"Edit": "\u00dapravy",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Editor. Stiskn\u011bte ALT-F9 pro menu, ALT-F10 pro n\u00e1strojovou li\u0161tu a ALT-0 pro n\u00e1pov\u011bdu.",
+"Tools": "N\u00e1stroje",
+"View": "Zobrazit",
+"Table": "Tabulka",
+"Format": "Form\u00e1t"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/cy.js b/framework/Web/Javascripts/source/tinymce-405/langs/cy.js
new file mode 100755
index 00000000..23e3fb50
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/cy.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('cy',{
+"Cut": "Torri",
+"Header 2": "Pennawd 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Dyw eich porwr ddim yn cynnal mynediad uniongyrchol i'r clipfwrdd. Defnyddiwch yr allweddau llwybr brys Ctrl+X\/C\/V yn lle 'ny.",
+"Div": "Div",
+"Paste": "Gludo",
+"Close": "Cau",
+"Pre": "Pre",
+"Align right": "Aliniad dde",
+"New document": "Dogfen newydd",
+"Blockquote": "Dyfyniad bloc",
+"Numbered list": "Rhestr rifol",
+"Increase indent": "Cynyddu mewnoliad",
+"Formats": "Fformatiau",
+"Headers": "Penawdau",
+"Select all": "Dewis popeth",
+"Header 3": "Pennawd 3",
+"Blocks": "Blociau",
+"Undo": "Dadwneud",
+"Strikethrough": "Llinell drwodd",
+"Bullet list": "Rhestr fwled",
+"Header 1": "Pennawd 1",
+"Superscript": "Uwchsgript",
+"Clear formatting": "Clirio fformatio",
+"Subscript": "Is-sgript",
+"Header 6": "Pennawd 6",
+"Redo": "AIlwneud",
+"Paragraph": "Paragraff",
+"Ok": "Iawn",
+"Bold": "Bras",
+"Code": "Cod",
+"Italic": "Italig",
+"Align center": "Aliniad canol",
+"Header 5": "Pennawd 5",
+"Decrease indent": "Lleinhau mewnoliad",
+"Header 4": "Pennawd 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Mae gludo o fewn modd testun plaen. Caiff y cynnwys ei ludo ar ffurf destun plaen tan gaiff yr opsiwn ei doglo bant.",
+"Underline": "Tanlinellu",
+"Cancel": "Canslo",
+"Justify": "Unioni",
+"Inline": "Mewn llinell",
+"Copy": "Cop\u00efo",
+"Align left": "Aliniad chwith",
+"Visual aids": "Cymorth gweledol",
+"Lower Greek": "Groeg Is",
+"Square": "Sgw\u00e2r",
+"Default": "Diofyn",
+"Lower Alpha": "Alffa Is",
+"Circle": "Cylch",
+"Disc": "Disg",
+"Upper Alpha": "Alffa Uwch",
+"Upper Roman": "Rhufeinig Uwch",
+"Lower Roman": "Rhufeinig Is",
+"Name": "Enw",
+"Anchor": "Angor",
+"You have unsaved changes are you sure you want to navigate away?": "Mae newidiadau heb eu cadw - ydych chi wir am symud i ffwrdd?",
+"Restore last draft": "Adfer y drafft olaf",
+"Special character": "Nod arbennig",
+"Source code": "Cod gwreiddiol",
+"Right to left": "Dde i'r chwith",
+"Left to right": "Chwith i'r dde",
+"Emoticons": "Gwenogluniau",
+"Robots": "Robotiaid",
+"Document properties": "Priodweddau'r ddogfen",
+"Title": "Teitl",
+"Keywords": "Allweddeiriau",
+"Encoding": "Amgodiad",
+"Description": "Disgrifiad",
+"Author": "Awdur",
+"Fullscreen": "Sgrin llawn",
+"Horizontal line": "Llinell lorweddol",
+"Horizontal space": "Gofod llorweddol",
+"Insert\/edit image": "Mewnosod\/golygu delwedd",
+"General": "Cyffredinol",
+"Advanced": "Uwch",
+"Source": "Ffynhonnell",
+"Border": "Ymyl",
+"Constrain proportions": "Gorfodi cyfrannedd",
+"Vertical space": "Gofod fertigol",
+"Image description": "Disgrifiad y ddelwedd",
+"Style": "Arddull",
+"Dimensions": "Dimensiynau",
+"Insert image": "Mewnosod delwedd",
+"Insert date\/time": "Mewnosod dyddiad\/amser",
+"Remove link": "Tynnu dolen",
+"Url": "Url",
+"Text to display": "Testun i'w ddangos",
+"Anchors": "Angorau",
+"Insert link": "Mewnosod dolen",
+"New window": "Ffenest newydd",
+"None": "Dim",
+"Target": "Targed",
+"Insert\/edit link": "Mewnosod\/golygu dolen",
+"Insert\/edit video": "Mewnosod\/golygu fideo",
+"Poster": "Poster",
+"Alternative source": "Ffynhonnell amgen",
+"Paste your embed code below:": "Gludwch eich cod mewnosod isod:",
+"Insert video": "Mewnosod fideo",
+"Embed": "Mewnosod",
+"Nonbreaking space": "Bwlch heb dorri",
+"Page break": "Toriad tudalen",
+"Paste as text": "Gludo fel testun",
+"Preview": "Rhagolwg",
+"Print": "Argraffu",
+"Save": "Cadw",
+"Could not find the specified string.": "Methu ffeindio'r llinyn hwnnw.",
+"Replace": "Amnewid",
+"Next": "Nesaf",
+"Whole words": "Geiriau cyfan",
+"Find and replace": "Chwilio ac amnewid",
+"Replace with": "Amnewid gyda",
+"Find": "Chwilio",
+"Replace all": "Amnewid pob",
+"Match case": "Cydweddu'r un c\u00eas",
+"Prev": "Cynt",
+"Spellcheck": "Sillafydd",
+"Finish": "Gorffen",
+"Ignore all": "Amwybyddu pob",
+"Ignore": "Anwybyddu",
+"Insert row before": "Mewnosod rhes cyn",
+"Rows": "Rhesi",
+"Height": "Uchder",
+"Paste row after": "Gludo rhes ar \u00f4l",
+"Alignment": "Aliniad",
+"Column group": "Gr\u0175p colofn",
+"Row": "Rhes",
+"Insert column before": "Mewnosod colofn cyn",
+"Split cell": "Hollti celloedd",
+"Cell padding": "Padio cell",
+"Cell spacing": "Bylchiau cell",
+"Row type": "Math y rhes",
+"Insert table": "Mewnosod tabl",
+"Body": "Corff",
+"Caption": "Pennawd",
+"Footer": "Troedyn",
+"Delete row": "Dileu rhes",
+"Paste row before": "Gludo rhes cyn",
+"Scope": "Sgop",
+"Delete table": "Dileu'r tabl",
+"Header cell": "Cell bennawd",
+"Column": "Colofn",
+"Cell": "Cell",
+"Header": "Pennyn",
+"Cell type": "Math y gell",
+"Copy row": "Cop\u00efo rhes",
+"Row properties": "Priodweddau rhes",
+"Table properties": "Priodweddau tabl",
+"Row group": "Gr\u0175p rhes",
+"Right": "Dde",
+"Insert column after": "Mewnosod colofn ar \u00f4l",
+"Cols": "Col'u",
+"Insert row after": "Mewnosod rhes ar \u00f4l",
+"Width": "Lled",
+"Cell properties": "Priodweddau'r gell",
+"Left": "Chwith",
+"Cut row": "Torri rhes",
+"Delete column": "Dileu colofn",
+"Center": "Canol",
+"Merge cells": "Cyfuno celloedd",
+"Insert template": "Mewnosod templed",
+"Templates": "Templedi",
+"Background color": "Lliw cefndir",
+"Text color": "Lliw testun",
+"Show blocks": "Dangos blociau",
+"Show invisible characters": "Dangos nodau anweledig",
+"Words: {0}": "Geiriau: {0}",
+"Insert": "Mewnosod",
+"File": "Ffeil",
+"Edit": "Golygu",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Ardal Testun Uwch. Pwyswch ALT-F9 ar gyfer y ddewislen, Pwyswch ALT-F10 ar gyfer y bar offer. Pwyswch ALT-0 am gymorth",
+"Tools": "Offer",
+"View": "Dangos",
+"Table": "Tabl",
+"Format": "Fformat"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/da.js b/framework/Web/Javascripts/source/tinymce-405/langs/da.js
new file mode 100755
index 00000000..3cf7acb5
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/da.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('da',{
+"Cut": "Klip",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser underst\u00f8tter ikke direkte adgang til clipboard. Benyt Ctrl+X\/C\/ keybord shortcuts i stedet for.",
+"Paste": "Inds\u00e6t",
+"Close": "Luk",
+"Align right": "H\u00f8jrejusteret",
+"New document": "Nyt dokument",
+"Numbered list": "Nummerering",
+"Increase indent": "For\u00f8g indrykning",
+"Formats": "Formater",
+"Select all": "V\u00e6lg alle",
+"Undo": "Fortryd",
+"Strikethrough": "Gennemstreg",
+"Bullet list": "Punkt tegn",
+"Superscript": "Superscript",
+"Clear formatting": "Nulstil formattering",
+"Subscript": "Subscript",
+"Redo": "Genopret",
+"Ok": "Ok",
+"Bold": "Fed",
+"Italic": "Kursiv",
+"Align center": "Centreret",
+"Decrease indent": "Formindsk indrykning",
+"Underline": "Understreg",
+"Cancel": "Fortryd",
+"Justify": "Justering",
+"Copy": "Kopier",
+"Align left": "Venstrejusteret",
+"Visual aids": "Visuel hj\u00e6lp",
+"Lower Greek": "Lower Gr\u00e6sk",
+"Square": "Kvadrat",
+"Default": "Standard",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Cirkel",
+"Disc": "Disk",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lavere Roman",
+"Name": "Navn",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "Du har ikke gemte \u00e6ndringer. Er du sikker p\u00e5 at du vil forts\u00e6tte?",
+"Restore last draft": "Genopret sidste kladde",
+"Special character": "Specielle tegn",
+"Source code": "Kildekode",
+"Right to left": "H\u00f8jre til venstre",
+"Left to right": "Venstre til h\u00f8jre",
+"Emoticons": "Emoticons",
+"Robots": "Robotter",
+"Document properties": "Dokument egenskaber",
+"Title": "Titel",
+"Keywords": "S\u00f8geord",
+"Encoding": "Kodning",
+"Description": "Beskrivelse",
+"Author": "Forfatter",
+"Fullscreen": "Fuldsk\u00e6rm",
+"Horizontal line": "Vandret linie",
+"Horizontal space": "Vandret afstand",
+"Insert\/edit image": "Inds\u00e6t\/ret billede",
+"General": "Generet",
+"Advanced": "Avanceret",
+"Source": "Kilde",
+"Border": "Kant",
+"Constrain proportions": "Behold propertioner",
+"Vertical space": "Lodret afstand",
+"Image description": "Billede beskrivelse",
+"Style": "Stil",
+"Dimensions": "Dimensioner",
+"Insert date\/time": "Inds\u00e6t dato\/klokkeslet",
+"Url": "Url",
+"Text to display": "Vis tekst",
+"Insert link": "Inds\u00e6t link",
+"New window": "Nyt vindue",
+"None": "Ingen",
+"Target": "Target",
+"Insert\/edit link": "Inds\u00e6t\/ret link",
+"Insert\/edit video": "Inds\u00e6t\/ret video",
+"Poster": "Poster",
+"Alternative source": "Alternativ kilde",
+"Paste your embed code below:": "Inds\u00e6t din embed kode herunder:",
+"Insert video": "Inds\u00e6t video",
+"Embed": "Integrer",
+"Nonbreaking space": "H\u00e5rd mellemrum",
+"Page break": "Sideskift",
+"Preview": "Forh\u00e5ndsvisning",
+"Print": "Udskriv",
+"Save": "Gem",
+"Could not find the specified string.": "Kunne ikke finde s\u00f8getekst",
+"Replace": "Erstat",
+"Next": "N\u00e6ste",
+"Whole words": "Hele ord",
+"Find and replace": "Find og erstat",
+"Replace with": "Erstat med",
+"Find": "Find",
+"Replace all": "Erstat alt",
+"Match case": "STORE og sm\u00e5 bogstaver",
+"Prev": "Forrige",
+"Spellcheck": "Stavekontrol",
+"Finish": "F\u00e6rdig",
+"Ignore all": "Ignorer alt",
+"Ignore": "Ignorer",
+"Insert row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
+"Rows": "R\u00e6kker",
+"Height": "H\u00f8jde",
+"Paste row after": "Inds\u00e6t r\u00e6kke efter",
+"Alignment": "Tilpasning",
+"Column group": "Kolonne gruppe",
+"Row": "R\u00e6kke",
+"Insert column before": "Inds\u00e6t kolonne f\u00f8r",
+"Split cell": "Split celle",
+"Cell padding": "Celle padding",
+"Cell spacing": "Celle afstand",
+"Row type": "R\u00e6kke type",
+"Insert table": "Inds\u00e6t tabel",
+"Body": "Krop",
+"Caption": "Tekst",
+"Footer": "Sidefod",
+"Delete row": "Slet r\u00e6kke",
+"Paste row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
+"Scope": "Anvendelsesomr\u00e5de",
+"Delete table": "Slet tabel",
+"Header cell": "Header celle",
+"Column": "Kolonne",
+"Cell": "Celle",
+"Header": "Overskrift",
+"Cell type": "Celle type",
+"Copy row": "Kopier r\u00e6kke",
+"Row properties": "R\u00e6kke egenskaber",
+"Table properties": "Tabel egenskaber",
+"Row group": "R\u00e6kke gruppe",
+"Right": "H\u00f8jre",
+"Insert column after": "Inds\u00e6t kolonne efter",
+"Cols": "Kolonne",
+"Insert row after": "Inds\u00e6t r\u00e6kke efter",
+"Width": "Bredde",
+"Cell properties": "Celle egenskaber",
+"Left": "Venstre",
+"Cut row": "Klip r\u00e6kke",
+"Delete column": "Slet kolonne",
+"Center": "Centrering",
+"Merge cells": "Flet celler",
+"Insert template": "Inds\u00e6t skabelon",
+"Templates": "Skabeloner",
+"Background color": "Baggrunds farve",
+"Text color": "Tekst farve",
+"Show blocks": "Vis klokke",
+"Show invisible characters": "Vis usynlige tegn",
+"Words: {0}": "Ord: {0}",
+"Insert": "Inds\u00e6t",
+"File": "Fil",
+"Edit": "\u00c6ndre",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text omr\u00e5de. Tryk ALT-F9 for menu. Tryk ALT-F10 for toolbar. Tryk ALT-0 for hj\u00e6lp",
+"Tools": "V\u00e6rkt\u00f8j",
+"View": "Vis",
+"Table": "Tabel",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/de.js b/framework/Web/Javascripts/source/tinymce-405/langs/de.js
new file mode 100755
index 00000000..5f2dc750
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/de.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('de',{
+"Cut": "Ausschneiden",
+"Header 2": "\u00dcberschrift 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V Tastenkombinationen.",
+"Div": "Textblock",
+"Paste": "Einf\u00fcgen",
+"Close": "Schlie\u00dfen",
+"Pre": "Vorformatierter Text",
+"Align right": "Rechts ausrichten ",
+"New document": "Neues Dokument",
+"Blockquote": "Zitat",
+"Numbered list": "Alphabetische Sortierung",
+"Increase indent": "Einr\u00fcckung vergr\u00f6\u00dfern",
+"Formats": "Formate",
+"Headers": "\u00dcberschriften",
+"Select all": "Alles ausw\u00e4hlen",
+"Header 3": "\u00dcberschrift 3",
+"Blocks": "Absatzformate",
+"Undo": "R\u00fcckg\u00e4ngig",
+"Strikethrough": "Durchgestrichen",
+"Bullet list": "Aufz\u00e4hlungszeichen",
+"Header 1": "\u00dcberschrift 1",
+"Superscript": "Hochgestellt",
+"Clear formatting": "Formatierung entfernen",
+"Subscript": "Tiefgestellt",
+"Header 6": "\u00dcberschrift 6",
+"Redo": "Wiederholen",
+"Paragraph": "Absatz",
+"Ok": "Ok",
+"Bold": "Fett",
+"Code": "Quelltext",
+"Italic": "Kursiv",
+"Align center": "Zentriert ausrichten",
+"Header 5": "\u00dcberschrift 5",
+"Decrease indent": "Einzug verringern",
+"Header 4": "\u00dcberschrift 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgungen erfolgen bis zum Abschalten dieses Modus als unformatierter Text.",
+"Underline": "Unterstrichen",
+"Cancel": "Abbrechen",
+"Justify": "Blockausrichtung",
+"Inline": "Zeichenformate",
+"Copy": "Kopieren",
+"Align left": "Ausrichtung nach links",
+"Visual aids": "Visuelle Hilfen",
+"Lower Greek": "Lower Greek",
+"Square": "Quadrat",
+"Default": "Standard",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Kreis",
+"Disc": "Disc",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Name",
+"Anchor": "Textmarke",
+"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
+"Restore last draft": "Zur\u00fcckholen den letzten Entwurf",
+"Special character": "Sonderzeichen",
+"Source code": "Quelltext",
+"Right to left": "Von rechts nach links",
+"Left to right": "Rechts nach Links",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Dokumenteigenschaften",
+"Title": "Titel",
+"Keywords": "Sch\u00fcsselw\u00f6rter",
+"Encoding": "Enkodieren",
+"Description": "Beschreibung",
+"Author": "Verfasser",
+"Fullscreen": "Vollbild",
+"Horizontal line": "Horizontale Linie",
+"Horizontal space": "Horizontaler Abstand",
+"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
+"General": "Allgemein",
+"Advanced": "Erweitert",
+"Source": "Quelle",
+"Border": "Grenze",
+"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
+"Vertical space": "Vertikaler Abstand",
+"Image description": "Bildbeschreibung",
+"Style": "Stil",
+"Dimensions": "Abmessungen",
+"Insert image": "Bild einf\u00fcgen",
+"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
+"Remove link": "Link entfernen",
+"Url": "URL",
+"Text to display": "Anzuzeigender Text",
+"Anchors": "Textmarken",
+"Insert link": "Link einf\u00fcgen",
+"New window": "Neues Fenster",
+"None": "Nichts",
+"Target": "Ziel",
+"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
+"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
+"Poster": "Poster",
+"Alternative source": "Alternative Quelle",
+"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
+"Insert video": "Video einf\u00fcgen",
+"Embed": "Einbetten",
+"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
+"Page break": "Seitenumbruch",
+"Paste as text": "Als Text einf\u00fcgen",
+"Preview": "Vorschau",
+"Print": "Drucken",
+"Save": "Speichern",
+"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
+"Replace": "Ersetzen",
+"Next": "N\u00e4chstes",
+"Whole words": "Ganze W\u00f6rter",
+"Find and replace": "Finden und ersetzen",
+"Replace with": "Ersetzen mit",
+"Find": "Finden",
+"Replace all": "Alles ersetzen",
+"Match case": "Gro\u00df-\/Kleinschreibung beachten",
+"Prev": "Vor",
+"Spellcheck": "Rechtschreibpr\u00fcfung",
+"Finish": "Ende",
+"Ignore all": "Alles Ignorieren",
+"Ignore": "Ignorieren",
+"Insert row before": "Zeile einf\u00fcgen bevor ",
+"Rows": "Zeilen",
+"Height": "H\u00f6he",
+"Paste row after": "Zelle danach einf\u00fcgen",
+"Alignment": "Ausrichtung ",
+"Column group": "Spalten gruppen",
+"Row": "Zeile",
+"Insert column before": "Spalte einf\u00fcgen bevor ",
+"Split cell": "Zellen splitten",
+"Cell padding": "Zellauff\u00fcllung ",
+"Cell spacing": "Zellenabstand",
+"Row type": "Zellentypen",
+"Insert table": "Tabelle einf\u00fcgen",
+"Body": "K\u00f6rper",
+"Caption": "Titel",
+"Footer": "Fu\u00dfzeile",
+"Delete row": "Zelle l\u00f6schen",
+"Paste row before": "Zelle bevor einf\u00fcgen",
+"Scope": "Rahmen",
+"Delete table": "Tabelle l\u00f6schen",
+"Header cell": "Kopfzelle ",
+"Column": "Spalte",
+"Cell": "Zelle",
+"Header": "Kopfzeile",
+"Cell type": "Zellentyp",
+"Copy row": "Zelle Kopieren",
+"Row properties": "Zelle Proportionen",
+"Table properties": "Tabelleneigenschaften",
+"Row group": "Zellen gruppen",
+"Right": "Rechts",
+"Insert column after": "Spalte danach einf\u00fcgen",
+"Cols": "Cols",
+"Insert row after": "Zelle danach einf\u00fcgen",
+"Width": "Breite",
+"Cell properties": "Zellenproportionen",
+"Left": "Links",
+"Cut row": "Zelle schneiden",
+"Delete column": "Spalte l\u00f6schen",
+"Center": "Zentrum",
+"Merge cells": "Zellen verbinden",
+"Insert template": "Vorlage einf\u00fcgen ",
+"Templates": "Vorlagen",
+"Background color": "Hintergrundfarbe",
+"Text color": "Textfarbe",
+"Show blocks": " Bl\u00f6cke anzeigen",
+"Show invisible characters": "Unsichtbare Zeichen anzeigen",
+"Words: {0}": "W\u00f6rter: {0}",
+"Insert": "Einf\u00fcgen",
+"File": "Datei",
+"Edit": "Bearbeiten",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
+"Tools": "Werkzeuge",
+"View": "Ansicht",
+"Table": "Tabelle",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/de_AT.js b/framework/Web/Javascripts/source/tinymce-405/langs/de_AT.js
new file mode 100755
index 00000000..d41ab6b3
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/de_AT.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('de_AT',{
+"Cut": "Ausschneiden",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt keinen direkten Zugriff auf die Zwischenablage. Bitte nutzen Sie die Tastaturk\u00fcrzel Strg+X\/C\/V stattdessen.",
+"Paste": "Einf\u00fcgen",
+"Close": "Schlie\u00dfen",
+"Align right": "Rechtsb\u00fcndig",
+"New document": "Neues Dokument",
+"Numbered list": "Sortierte Liste",
+"Increase indent": "Einr\u00fccken",
+"Formats": "Formate",
+"Select all": "Alles ausw\u00e4hlen",
+"Undo": "Wiederholen",
+"Strikethrough": "Durchgestrichen",
+"Bullet list": "Unsortierte Liste",
+"Superscript": "Hochgestellt",
+"Clear formatting": "Formatierungen zur\u00fccksetzen",
+"Subscript": "Tiefgestellt",
+"Redo": "R\u00fcckg\u00e4ngig",
+"Ok": "Ok",
+"Bold": "Fett",
+"Italic": "Kursiv",
+"Align center": "Zentriert",
+"Decrease indent": "Ausr\u00fccken",
+"Underline": "Unterstrichen",
+"Cancel": "Abbrechen",
+"Justify": "Blocksatz",
+"Copy": "Kopieren",
+"Align left": "Linksb\u00fcndig",
+"Visual aids": "Hilfslinien und unsichtbare Elemente einblenden",
+"Lower Greek": "Griechische Kleinbuchstaben",
+"Square": "Quadrat",
+"Default": "Standard",
+"Lower Alpha": "Kleinbuchstaben",
+"Circle": "Kreis",
+"Disc": "Scheibe",
+"Upper Alpha": "Griechische Gro\u00dfbuchstaben",
+"Upper Roman": "R\u00f6mische Gro\u00dfbuchstaben",
+"Lower Roman": "R\u00f6mische Kleinbuchstaben",
+"Name": "Name",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "Sie haben ungespeicherte \u00c4nderungen. Sind Sie sicher, dass Sie die Seite verlassen wollen?",
+"Restore last draft": "Letzten Entwurf speichern.",
+"Special character": "Sonderzeichen",
+"Source code": "Quelltext",
+"Right to left": "Rechts nach links",
+"Left to right": "Links nach rechts",
+"Emoticons": "Emoticons",
+"Robots": "Suchmaschinen",
+"Document properties": "Dokumenteigenschaften",
+"Title": "Titel",
+"Keywords": "Schl\u00fcsselw\u00f6rter",
+"Encoding": "Encoding",
+"Description": "Beschreibung",
+"Author": "Author",
+"Fullscreen": "Vollbild",
+"Horizontal line": "Horizontale Trennlinie",
+"Horizontal space": "Horizontaler Abstand",
+"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
+"General": "Allgemein",
+"Advanced": "Erweitert",
+"Source": "Adresse",
+"Border": "Rahmen",
+"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
+"Vertical space": "Vertikaler Abstand",
+"Image description": "Bildbeschreibung",
+"Style": "Format",
+"Dimensions": "Ausma\u00dfe",
+"Insert date\/time": "Zeit\/Datum einf\u00fcgen",
+"Url": "Url",
+"Text to display": "Angezeigter Text",
+"Insert link": "Link einf\u00fcgen",
+"New window": "Neues Fenster",
+"None": "Keine",
+"Target": "Ziel",
+"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
+"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
+"Poster": "Poster",
+"Alternative source": "Alternative Quelle",
+"Paste your embed code below:": "F\u00fcgen unten Sie Ihren Quellcode zum einbetten ein",
+"Insert video": "Video einf\u00fcgen",
+"Embed": "Einbetten",
+"Nonbreaking space": "gesch\u00fctztes Leerzeichen",
+"Page break": "Seitenumbruch",
+"Preview": "Vorschau",
+"Print": "Drucken",
+"Save": "Speichern",
+"Could not find the specified string.": "Keine \u00dcbereinstimmung gefunden",
+"Replace": "Ersetzen",
+"Next": "N\u00e4chstes",
+"Whole words": "Vollst\u00e4ndige W\u00f6rter",
+"Find and replace": "Suchen und ersetzen",
+"Replace with": "Ersetzen mit",
+"Find": "Suchen",
+"Replace all": "Alle ersetzen",
+"Match case": "Gro\u00df-\/Kleinschreibung beachten",
+"Prev": "Vorheriges",
+"Spellcheck": "Rechtschreibung \u00fcberpr\u00fcfen",
+"Finish": "Fertig",
+"Ignore all": "Alle ignorieren",
+"Ignore": "Ignorieren",
+"Insert row before": "Neue Zeile oberhalb einf\u00fcgen",
+"Rows": "Zeilen",
+"Height": "H\u00f6he",
+"Paste row after": "Zeile unterhalb einf\u00fcgen",
+"Alignment": "Ausrichtung",
+"Column group": "Spaltengruppe",
+"Row": "Zeile",
+"Insert column before": "Neue Spalte links einf\u00fcgen",
+"Split cell": "Verbundene Zellen trennen",
+"Cell padding": "Abstand innerhalb der Zellen",
+"Cell spacing": "Zellenabstand",
+"Row type": "Zeilentyp",
+"Insert table": "Tabelle einf\u00fcgen",
+"Body": "Tabellenk\u00f6rper",
+"Caption": "Beschriftung der Tabelle",
+"Footer": "Tabellenfu\u00df",
+"Delete row": "Zeile l\u00f6schen",
+"Paste row before": "Zeile oberhalb einf\u00fcgen",
+"Scope": "Geltungsbereich",
+"Delete table": "Tabelle l\u00f6schen",
+"Header cell": "\u00dcberschrift",
+"Column": "Spalte",
+"Cell": "Zelle",
+"Header": "\u00dcberschrift",
+"Cell type": "Zellentyp",
+"Copy row": "Zeile kopieren",
+"Row properties": "Zeileneigenschaften",
+"Table properties": "Tabelleneigenschaften",
+"Row group": "Zeilengruppe",
+"Right": "Rechts",
+"Insert column after": "Neue Spalte rechts einf\u00fcgen",
+"Cols": "Spalten",
+"Insert row after": "Neue Zeile unterhalb einf\u00fcgen",
+"Width": "Breite",
+"Cell properties": "Zelleneigenschaften",
+"Left": "Links",
+"Cut row": "Zeile ausschneiden",
+"Delete column": "Spalte l\u00f6schen",
+"Center": "Zentriert",
+"Merge cells": "Zellen vereinen",
+"Insert template": "Vorlage einf\u00fcgen",
+"Templates": "Vorlagen",
+"Background color": "Hintergrundfarbe",
+"Text color": "Textfarbe",
+"Show blocks": "Blockelemente einblenden",
+"Show invisible characters": "Unsichtbare Zeichen einblenden",
+"Words: {0}": "W\u00f6rter: {0}",
+"Insert": "Einf\u00fcgen",
+"File": "Datei",
+"Edit": "Bearbeiten",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr die Werkzeugleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
+"Tools": "Extras",
+"View": "Ansicht",
+"Table": "Tabelle",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/el.js b/framework/Web/Javascripts/source/tinymce-405/langs/el.js
new file mode 100755
index 00000000..9ccd9ec3
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/el.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('el',{
+"Cut": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae",
+"Header 2": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u039f \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03c4\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9 \u03ac\u03bc\u03b5\u03c3\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c7\u03b5\u03b9\u03c1\u03bf. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03bd\u03c4\u03bf\u03bc\u03b5\u03cd\u03c3\u03b5\u03b9\u03c2 \u03c0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03af\u03bf\u03c5 Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7",
+"Close": "\u039a\u03bb\u03b5\u03b9\u03c3\u03b9\u03bc\u03bf",
+"Pre": "Pre",
+"Align right": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b4\u03b5\u03be\u03b9\u03ac",
+"New document": "\u039d\u03ad\u03bf \u03ad\u03b3\u03b3\u03c1\u03b1\u03c6\u03bf",
+"Blockquote": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03c0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2",
+"Numbered list": "\u0391\u03c1\u03b9\u03b8\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1",
+"Increase indent": "\u0391\u03cd\u03be\u03b7\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
+"Formats": "\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
+"Headers": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b5\u03c2",
+"Select all": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03b7 \u03bf\u03bb\u03c9\u03bd",
+"Header 3": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",
+"Blocks": "\u03a4\u03bc\u03ae\u03bc\u03b1\u03c4\u03b1",
+"Undo": "\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7",
+"Strikethrough": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03ae \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
+"Bullet list": "\u039b\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03ba\u03bf\u03c5\u03ba\u03ba\u03af\u03b4\u03b5\u03c2",
+"Header 1": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",
+"Superscript": "\u0395\u03ba\u03b8\u03ad\u03c4\u03b7\u03c2",
+"Clear formatting": "\u0391\u03c0\u03b1\u03bb\u03bf\u03b9\u03c6\u03ae \u03bc\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2",
+"Subscript": "\u0394\u03b5\u03af\u03ba\u03c4\u03b7\u03c2",
+"Header 6": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",
+"Redo": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac",
+"Paragraph": "\u03a0\u03b1\u03c1\u03ac\u03b3\u03c1\u03b1\u03c6\u03bf\u03c2",
+"Ok": "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9",
+"Bold": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b7",
+"Code": "\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
+"Italic": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1",
+"Align center": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03c3\u03c4\u03bf \u03ba\u03ad\u03bd\u03c4\u03c1\u03bf",
+"Header 5": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",
+"Decrease indent": "\u039c\u03b5\u03af\u03c9\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
+"Header 4": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0397 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03ce\u03c1\u03b1 \u03c3\u03b5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bb\u03bf\u03cd \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u03a4\u03b1 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1 \u03c3\u03b5 \u03bc\u03af\u03b1 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b8\u03b1 \u03b5\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03c9\u03c2 \u03b1\u03c0\u03bb\u03cc \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03cc\u03c3\u03bf \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c5\u03c4\u03ae \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03bd\u03b5\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae.",
+"Underline": "\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7",
+"Cancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
+"Justify": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
+"Inline": "\u0395\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b5\u03c2",
+"Copy": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
+"Align left": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
+"Visual aids": "\u0392\u03bf\u03b7\u03b8\u03ae\u03bc\u03b1\u03c4\u03b1 \u03c7\u03b1\u03bc\u03b7\u03bb\u03ae\u03c2 \u03cc\u03c1\u03b1\u03c3\u03b7\u03c2",
+"Lower Greek": "\u039c\u03b9\u03ba\u03c1\u03ac \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
+"Square": "\u03a4\u03b5\u03c4\u03c1\u03ac\u03b3\u03c9\u03bd\u03bf",
+"Default": "\u03a0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf",
+"Lower Alpha": "\u039c\u03b9\u03ba\u03c1\u03ac \u039b\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
+"Circle": "\u039a\u03cd\u03ba\u03bb\u03bf\u03c2",
+"Disc": "\u0394\u03af\u03c3\u03ba\u03bf\u03c2",
+"Upper Alpha": "\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1 \u039b\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
+"Upper Roman": "\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1 \u03a1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
+"Lower Roman": "\u039c\u03b9\u03ba\u03c1\u03ac \u03a1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
+"Name": "\u039f\u03bd\u03bf\u03bc\u03b1",
+"Anchor": "\u0386\u03b3\u03ba\u03c5\u03c1\u03b1 ",
+"You have unsaved changes are you sure you want to navigate away?": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03bc\u03b7 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c6\u03cd\u03b3\u03b5\u03c4\u03b5?",
+"Restore last draft": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c5 \u03c3\u03c7\u03ad\u03b4\u03b9\u03bf\u03c5",
+"Special character": "\u0395\u03b9\u03b4\u03b9\u03ba\u03bf\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03b7\u03c1\u03b1\u03c2",
+"Source code": "\u03a0\u03b7\u03b3\u03b1\u03af\u03bf\u03c2 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
+"Right to left": "\u0391\u03c0\u03bf \u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03b1",
+"Left to right": "\u0391\u03c0\u03cc \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac ",
+"Emoticons": "\u03a6\u03b1\u03c4\u03c3\u03bf\u03cd\u03bb\u03b5\u03c2",
+"Robots": "Robots",
+"Document properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03bd\u03c4\u03bf\u03ba\u03bf\u03c5\u03bc\u03b5\u03bd\u03c4\u03bf\u03c5",
+"Title": "\u03a4\u03b9\u03c4\u03bb\u03bf\u03c2",
+"Keywords": "\u039b\u03b5\u03be\u03b5\u03b9\u03c2 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03b1",
+"Encoding": "\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
+"Description": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
+"Author": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03bf\u03c2",
+"Fullscreen": "\u039f\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03b7 \u03bf\u03b8\u03bf\u03bd\u03b7",
+"Horizontal line": "\u039f\u03c1\u03b9\u03b6\u03bf\u03bd\u03c4\u03b9\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03b7",
+"Horizontal space": "\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03bf \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
+"Insert\/edit image": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
+"General": "\u0393\u03b5\u03bd\u03b9\u03ba\u03b1",
+"Advanced": "\u0393\u03b9\u03b1 \u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",
+"Source": "\u03a0\u03b7\u03b3\u03ae",
+"Border": "\u03a3\u03cd\u03bd\u03bf\u03c1\u03bf",
+"Constrain proportions": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03b9\u03ce\u03bd",
+"Vertical space": "\u039a\u03ac\u03b8\u03b5\u03c4\u03bf \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
+"Image description": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
+"Style": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
+"Dimensions": "\u039c\u03b5\u03b3\u03b5\u03b8\u03bf\u03b9",
+"Insert image": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
+"Insert date\/time": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03b7 \u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03b9\u03b1\u03c2\/\u03c9\u03c1\u03b1\u03c2",
+"Remove link": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
+"Url": "Url",
+"Text to display": "\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03b3\u03b9\u03b1 \u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
+"Anchors": "\u0386\u03b3\u03ba\u03c5\u03c1\u03b5\u03c2",
+"Insert link": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
+"New window": "\u039d\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",
+"None": "\u039a\u03b1\u03bc\u03af\u03b1",
+"Target": "\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",
+"Insert\/edit link": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
+"Insert\/edit video": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03b7\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03b9\u03b1 \u0392\u03b9\u03bd\u03c4\u03b5\u03bf",
+"Poster": "\u0391\u03c6\u03af\u03c3\u03b1",
+"Alternative source": "\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03c0\u03b7\u03b3\u03ae",
+"Paste your embed code below:": "\u0395\u03b9\u03c3\u03b1\u03b3\u03b5\u03c4\u03b5 \u03b5\u03b4\u03c9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf \u03c3\u03b1\u03c2:",
+"Insert video": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03b7 \u0392\u03b9\u03bd\u03c4\u03b5\u03bf",
+"Embed": "\u0395\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03b5\u03bd\u03b1",
+"Nonbreaking space": "\u039a\u03b5\u03bd\u03cc \u03c7\u03c9\u03c1\u03af\u03c2 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae",
+"Page break": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2",
+"Paste as text": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03c9\u03c2 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",
+"Preview": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03bf\u03c0\u03b7\u03c3\u03b7",
+"Print": "\u0395\u03ba\u03c4\u03cd\u03c0\u03c9\u03c3\u03b7",
+"Save": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03c3\u03b7",
+"Could not find the specified string.": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c5 string.",
+"Replace": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03c3\u03b7",
+"Next": "\u0395\u03c0\u03bf\u03bc\u03b5\u03bd\u03bf",
+"Whole words": "\u039f\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bb\u03b5\u03be\u03b5\u03b9\u03c2",
+"Find and replace": "\u0395\u03c5\u03c1\u03b5\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03c3\u03b7",
+"Replace with": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bc\u03b5",
+"Find": "\u0395\u03c5\u03c1\u03b5\u03c3\u03b7",
+"Replace all": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03bb\u03c9\u03bd",
+"Match case": "\u03a0\u03b5\u03c1\u03af\u03c0\u03c4\u03c9\u03c3\u03b7 ",
+"Prev": "\u03a0\u03c1\u03bf",
+"Spellcheck": "\u039f\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 ",
+"Finish": "\u03a4\u03b5\u03bb\u03bf\u03c2",
+"Ignore all": "\u0391\u03b3\u03bd\u03bf\u03b7\u03c3\u03b7 \u03bf\u03bb\u03c9\u03bd",
+"Ignore": "\u0391\u03b3\u03bd\u03bf\u03b7\u03c3\u03b7",
+"Insert row before": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03c1\u03b9\u03bd",
+"Rows": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",
+"Height": "\u038e\u03c8\u03bf\u03c2",
+"Paste row after": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03bc\u03b5\u03c4\u03ac",
+"Alignment": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
+"Column group": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03c3\u03c4\u03b7\u03bb\u03ce\u03bd",
+"Row": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ae",
+"Insert column before": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03c0\u03c1\u03b9\u03bd",
+"Split cell": "\u0394\u03b9\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
+"Cell padding": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03b1 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
+"Cell spacing": "\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
+"Row type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Insert table": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
+"Body": "\u03a3\u03ce\u03bc\u03b1",
+"Caption": "\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
+"Footer": "\u03a5\u03c0\u03bf\u03c3\u03ad\u03bb\u03b9\u03b4\u03bf",
+"Delete row": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Paste row before": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03c1\u03b9\u03bd",
+"Scope": "\u0388\u03ba\u03c4\u03b1\u03c3\u03b7",
+"Delete table": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
+"Header cell": "\u039a\u03b5\u03bb\u03af-\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
+"Column": "\u03a3\u03c4\u03ae\u03bb\u03b7",
+"Cell": "\u039a\u03b5\u03bb\u03af",
+"Header": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
+"Cell type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
+"Copy row": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Row properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Table properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
+"Row group": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd",
+"Right": "\u0394\u03b5\u03be\u03b9\u03ac",
+"Insert column after": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03bc\u03b5\u03c4\u03ac",
+"Cols": "\u03a3\u03c4\u03ae\u03bb\u03b5\u03c2",
+"Insert row after": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03bc\u03b5\u03c4\u03ac",
+"Width": "\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",
+"Cell properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
+"Left": "\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
+"Cut row": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Delete column": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2",
+"Center": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b1\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7",
+"Merge cells": "\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
+"Insert template": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03c1\u03bf\u03c4\u03cd\u03c0\u03bf\u03c5 ",
+"Templates": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03b1",
+"Background color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",
+"Text color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 ",
+"Show blocks": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c4\u03bc\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd",
+"Show invisible characters": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b1\u03cc\u03c1\u03b1\u03c4\u03bf\u03bd \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd",
+"Words: {0}": "\u039b\u03b5\u03be\u03b5\u03b9\u03c2: {0}",
+"Insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03b7",
+"File": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf",
+"Edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03b9\u03b1",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. \u03a0\u03b1\u03c4\u03b7\u03c3\u03c4\u03b5 ALT-F9 \u03b3\u03b9\u03b1 \u03bc\u03b5\u03bd\u03bf\u03c5. \u03a0\u03b1\u03c4\u03b7\u03c3\u03c4\u03b5 ALT-F10 \u03b3\u03b9\u03b1 toolbar. \u03a0\u03b1\u03c4\u03b7\u03c3\u03c4\u03b5 ALT-0 \u03b3\u03b9\u03b1 \u03b2\u03bf\u03b7\u03b8\u03b5\u03b9\u03b1",
+"Tools": "\u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03b9\u03b1",
+"View": "\u0395\u03bc\u03c6\u03b1\u03bd\u03b9\u03c3\u03b7",
+"Table": "\u03a4\u03b1\u03bc\u03c0\u03b5\u03bb\u03b1",
+"Format": "\u03a4\u03c5\u03c0\u03bf\u03c2"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/es.js b/framework/Web/Javascripts/source/tinymce-405/langs/es.js
new file mode 100755
index 00000000..a7696176
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/es.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('es',{
+"Cut": "Cortar",
+"Header 2": "Header 2 ",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tu navegador no soporta acceso directo al portapapeles. Por favor usa las teclas Crtl+X\/C\/V de tu teclado",
+"Div": "Capa",
+"Paste": "Pegar",
+"Close": "Cerrar",
+"Pre": "Pre",
+"Align right": "Alinear a la derecha",
+"New document": "Nuevo documento",
+"Blockquote": "Bloque de cita",
+"Numbered list": "Lista numerada",
+"Increase indent": "Incrementar sangr\u00eda",
+"Formats": "Formatos",
+"Headers": "Headers",
+"Select all": "Seleccionar todo",
+"Header 3": "Header 3",
+"Blocks": "Bloques",
+"Undo": "Deshacer",
+"Strikethrough": "Tachado",
+"Bullet list": "Lista de vi\u00f1etas",
+"Header 1": "Header 1",
+"Superscript": "Super\u00edndice",
+"Clear formatting": "Limpiar formato",
+"Subscript": "Sub\u00edndice",
+"Header 6": "Header 6",
+"Redo": "Rehacer",
+"Paragraph": "P\u00e1rrafo",
+"Ok": "Ok",
+"Bold": "Negrita",
+"Code": "C\u00f3digo",
+"Italic": "It\u00e1lica",
+"Align center": "Alinear al centro",
+"Header 5": "Header 5 ",
+"Decrease indent": "Disminuir sangr\u00eda",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Pegar est\u00e1 ahora en modo de texto plano. El contenido se pegar\u00e1 como texto plano hasta que desactive esta opci\u00f3n.",
+"Underline": "Subrayado",
+"Cancel": "Cancelar",
+"Justify": "Justificar",
+"Inline": "en l\u00ednea",
+"Copy": "Copiar",
+"Align left": "Alinear a la izquierda",
+"Visual aids": "Ayudas visuales",
+"Lower Greek": "Inferior Griega",
+"Square": "Cuadrado",
+"Default": "Por defecto",
+"Lower Alpha": "Inferior Alfa",
+"Circle": "C\u00edrculo",
+"Disc": "Disco",
+"Upper Alpha": "Superior Alfa",
+"Upper Roman": "Superior Romana",
+"Lower Roman": "Inferior Romana",
+"Name": "Nombre",
+"Anchor": "Ancla",
+"You have unsaved changes are you sure you want to navigate away?": "Tiene cambios sin guardar. \u00bfEst\u00e1 seguro de que quiere salir fuera?",
+"Restore last draft": "Restaurar el \u00faltimo borrador",
+"Special character": "Car\u00e1cter especial",
+"Source code": "C\u00f3digo fuente",
+"Right to left": "De derecha a izquierda",
+"Left to right": "De izquierda a derecha",
+"Emoticons": "Emoticonos",
+"Robots": "Robots",
+"Document properties": "Propiedades del documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palabras clave",
+"Encoding": "Codificaci\u00f3n",
+"Description": "Descripci\u00f3n",
+"Author": "Autor",
+"Fullscreen": "Pantalla completa",
+"Horizontal line": "L\u00ednea horizontal",
+"Horizontal space": "Espacio horizontal",
+"Insert\/edit image": "Insertar\/editar imagen",
+"General": "General",
+"Advanced": "Avanzado",
+"Source": "Origen",
+"Border": "Borde",
+"Constrain proportions": "Restringir proporciones",
+"Vertical space": "Espacio vertical",
+"Image description": "Descripci\u00f3n de la imagen",
+"Style": "Estilo",
+"Dimensions": "Dimensiones",
+"Insert image": "Insertar imagen",
+"Insert date\/time": "Insertar fecha\/hora",
+"Remove link": "Quitar enlace",
+"Url": "Url",
+"Text to display": "Texto para mostrar",
+"Anchors": "Anclas",
+"Insert link": "Insertar enlace",
+"New window": "Nueva ventana",
+"None": "Ninguno",
+"Target": "Destino",
+"Insert\/edit link": "Insertar\/editar enlace",
+"Insert\/edit video": "Insertar\/editar video",
+"Poster": "Miniatura",
+"Alternative source": "Fuente alternativa",
+"Paste your embed code below:": "Pega tu c\u00f3digo embebido debajo",
+"Insert video": "Insertar video",
+"Embed": "Incrustado",
+"Nonbreaking space": "Espacio fijo",
+"Page break": "Salto de p\u00e1gina",
+"Paste as text": "Pegar como texto",
+"Preview": "Previsualizar",
+"Print": "Imprimir",
+"Save": "Guardar",
+"Could not find the specified string.": "No se encuentra la cadena de texto especificada",
+"Replace": "Reemplazar",
+"Next": "Siguiente",
+"Whole words": "Palabras completas",
+"Find and replace": "Buscar y reemplazar",
+"Replace with": "Reemplazar con",
+"Find": "Buscar",
+"Replace all": "Reemplazar todo",
+"Match case": "Coincidencia exacta",
+"Prev": "Anterior",
+"Spellcheck": "Corrector ortogr\u00e1fico",
+"Finish": "Finalizar",
+"Ignore all": "Ignorar todos",
+"Ignore": "Ignorar",
+"Insert row before": "Insertar fila antes",
+"Rows": "Filas",
+"Height": "Alto",
+"Paste row after": "Pegar la fila despu\u00e9s",
+"Alignment": "Alineaci\u00f3n",
+"Column group": "Grupo de columnas",
+"Row": "Fila",
+"Insert column before": "Insertar columna antes",
+"Split cell": "Dividir celdas",
+"Cell padding": "Relleno de celda",
+"Cell spacing": "Espacio entre celdas",
+"Row type": "Tipo de fila",
+"Insert table": "Insertar tabla",
+"Body": "Cuerpo",
+"Caption": "Subt\u00edtulo",
+"Footer": "Pie de p\u00e1gina",
+"Delete row": "Eliminar fila",
+"Paste row before": "Pegar la fila antes",
+"Scope": "\u00c1mbito",
+"Delete table": "Eliminar tabla",
+"Header cell": "Celda de la cebecera",
+"Column": "Columna",
+"Cell": "Celda",
+"Header": "Cabecera",
+"Cell type": "Tipo de celda",
+"Copy row": "Copiar fila",
+"Row properties": "Propiedades de la fila",
+"Table properties": "Propiedades de la tabla",
+"Row group": "Grupo de filas",
+"Right": "Derecha",
+"Insert column after": "Insertar columna despu\u00e9s",
+"Cols": "Columnas",
+"Insert row after": "Insertar fila despu\u00e9s ",
+"Width": "Ancho",
+"Cell properties": "Propiedades de la celda",
+"Left": "Izquierda",
+"Cut row": "Cortar fila",
+"Delete column": "Eliminar columna",
+"Center": "Centrado",
+"Merge cells": "Combinar celdas",
+"Insert template": "Insertar plantilla",
+"Templates": "Plantillas",
+"Background color": "Color de fondo",
+"Text color": "Color del texto",
+"Show blocks": "Mostrar bloques",
+"Show invisible characters": "Mostrar caracteres invisibles",
+"Words: {0}": "Palabras: {0}",
+"Insert": "Insertar",
+"File": "Archivo",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto enriquecido. Pulse ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para ayuda",
+"Tools": "Herramientas",
+"View": "Ver",
+"Table": "Tabla",
+"Format": "Formato"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/et.js b/framework/Web/Javascripts/source/tinymce-405/langs/et.js
new file mode 100755
index 00000000..d7f9f07c
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/et.js
@@ -0,0 +1,173 @@
+tinymce.addI18n('et',{
+"Cut": "L\u00f5ika",
+"Header 2": "Pealkiri 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Sinu veebilehitseja ei toeta otsest ligip\u00e4\u00e4su l\u00f5ikelauale. Palun kasuta selle asemel klaviatuuri kiirk\u00e4sklusi Ctrl+X\/C\/V.",
+"Div": "Sektsioon",
+"Paste": "Kleebi",
+"Close": "Sulge",
+"Pre": "Eelvormindatud",
+"Align right": "Joonda paremale",
+"New document": "Uus dokument",
+"Blockquote": "Plokktsitaat",
+"Numbered list": "J\u00e4rjestatud loend",
+"Increase indent": "Suurenda taanet",
+"Formats": "Vormingud",
+"Headers": "P\u00e4ised",
+"Select all": "Vali k\u00f5ik",
+"Header 3": "Pealkiri 3",
+"Blocks": "Plokid",
+"Undo": "V\u00f5ta tagasi",
+"Strikethrough": "L\u00e4bikriipsutatud",
+"Bullet list": "J\u00e4rjestamata loend",
+"Header 1": "Pealkiri 1",
+"Superscript": "\u00dclaindeks",
+"Clear formatting": "Puhasta vorming",
+"Subscript": "Alaindeks",
+"Header 6": "Pealkiri 6",
+"Redo": "Tee uuesti",
+"Paragraph": "L\u00f5ik",
+"Ok": "Ok",
+"Bold": "Rasvane",
+"Code": "Kood",
+"Italic": "Kaldkiri",
+"Align center": "Joonda keskele",
+"Header 5": "Pealkiri 5",
+"Decrease indent": "V\u00e4henda taanet",
+"Header 4": "Pealkiri 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Kleepimine on n\u00fc\u00fcd lihtteksti re\u017eiimis. Sisu kleebitakse lihttekstina seni, kuni Sa selle valiku v\u00e4lja l\u00fclitad.",
+"Underline": "Allakriipsutatud",
+"Cancel": "Katkesta",
+"Justify": "Joonda r\u00f6\u00f6pselt",
+"Inline": "Reasisene",
+"Copy": "Kopeeri",
+"Align left": "Joonda vasakule",
+"Visual aids": "N\u00e4itevahendid",
+"Lower Greek": "Kreeka v\u00e4iket\u00e4hed (\u03b1, \u03b2, \u03b3)",
+"Square": "Ruut",
+"Default": "Vaikimisi",
+"Lower Alpha": "V\u00e4iket\u00e4hed (a, b, c)",
+"Circle": "Ring",
+"Disc": "Ketas",
+"Upper Alpha": "Suurt\u00e4hed (A, B, C)",
+"Upper Roman": "Rooma suurt\u00e4hed (I, II, III)",
+"Lower Roman": "Rooma v\u00e4iket\u00e4hed (i, ii, iii)",
+"Name": "Nimi",
+"Anchor": "Ankur",
+"You have unsaved changes are you sure you want to navigate away?": "Sul on salvestamata muudatusi. Oled Sa kindel, et soovid mujale navigeeruda?",
+"Restore last draft": "Taasta viimane mustand",
+"Special character": "Erim\u00e4rk",
+"Source code": "L\u00e4htekood",
+"Right to left": "Paremalt vasakule",
+"Left to right": "Vasakult paremale",
+"Emoticons": "Emotikonid",
+"Robots": "Robotid",
+"Document properties": "Dokumendi omadused",
+"Title": "Pealkiri",
+"Keywords": "M\u00e4rks\u00f5nad",
+"Encoding": "M\u00e4rgistik",
+"Description": "Kirjeldus",
+"Author": "Autor",
+"Fullscreen": "T\u00e4isekraan",
+"Horizontal line": "Horisontaaljoon",
+"Horizontal space": "Reavahe",
+"Insert\/edit image": "Lisa\/muuda pilt",
+"General": "\u00dcldine",
+"Advanced": "T\u00e4iendavad seaded",
+"Source": "Allikas",
+"Border": "\u00c4\u00e4ris",
+"Constrain proportions": "S\u00e4ilita kuvasuhe",
+"Vertical space": "P\u00fcstine vahe",
+"Image description": "Pildi kirjeldus",
+"Style": "Stiil",
+"Dimensions": "M\u00f5\u00f5tmed",
+"Insert image": "Lisa pilt",
+"Insert date\/time": "Lisa kuup\u00e4ev\/kellaaeg",
+"Remove link": "Eemalda link",
+"Url": "Viide (url)",
+"Text to display": "Kuvatav tekst",
+"Insert link": "Lisa link",
+"New window": "Uus aken",
+"None": "Puudub",
+"Target": "Sihtm\u00e4rk",
+"Insert\/edit link": "Lisa\/muuda link",
+"Insert\/edit video": "Lisa\/muuda video",
+"Poster": "Lisaja",
+"Alternative source": "Teine allikas",
+"Paste your embed code below:": "Kleebi oma manustamiskood siia alla:",
+"Insert video": "Lisa video",
+"Embed": "Manusta",
+"Nonbreaking space": "T\u00fchim\u00e4rk (nbsp)",
+"Page break": "Lehevahetus",
+"Preview": "Eelvaade",
+"Print": "Tr\u00fcki",
+"Save": "Salvesta",
+"Could not find the specified string.": "Ei suutnud leida etteantud s\u00f5net.",
+"Replace": "Asenda",
+"Next": "J\u00e4rg",
+"Whole words": "Terviks\u00f5nad",
+"Find and replace": "Otsi ja asenda",
+"Replace with": "Asendus",
+"Find": "Otsi",
+"Replace all": "Asenda k\u00f5ik",
+"Match case": "Erista suur- ja v\u00e4iket\u00e4hti",
+"Prev": "Eelm",
+"Spellcheck": "\u00d5igekirja kontroll",
+"Finish": "L\u00f5peta",
+"Ignore all": "Eira k\u00f5iki",
+"Ignore": "Eira",
+"Insert row before": "Lisa rida enne",
+"Rows": "Read",
+"Height": "K\u00f5rgus",
+"Paste row after": "Kleebi rida j\u00e4rele",
+"Alignment": "Joondus",
+"Column group": "Veergude r\u00fchm",
+"Row": "Rida",
+"Insert column before": "Lisa tulp enne",
+"Split cell": "T\u00fckelda lahter",
+"Cell padding": "Lahtri sisu ja tabeli \u00e4\u00e4rise vahe",
+"Cell spacing": "Lahtrivahe",
+"Row type": "Rea t\u00fc\u00fcp",
+"Insert table": "Lisa tabel",
+"Body": "P\u00f5hiosa",
+"Caption": "Alapealkiri",
+"Footer": "Jalus",
+"Delete row": "Kustuta rida",
+"Paste row before": "Kleebi rida enne",
+"Scope": "Ulatus",
+"Delete table": "Kustuta tabel",
+"Header cell": "P\u00e4islahter",
+"Column": "Tulp",
+"Cell": "Lahter",
+"Header": "P\u00e4is",
+"Cell type": "Lahtri t\u00fc\u00fcp",
+"Copy row": "Kopeeri rida",
+"Row properties": "Rea omadused",
+"Table properties": "Tabeli omadused",
+"Row group": "Ridade r\u00fchm",
+"Right": "Paremal",
+"Insert column after": "Lisa tulp j\u00e4rele",
+"Cols": "Veerud",
+"Insert row after": "Lisa rida j\u00e4rele",
+"Width": "Laius",
+"Cell properties": "Lahtri omadused",
+"Left": "Vasakul",
+"Cut row": "L\u00f5ika rida",
+"Delete column": "Kustuta tulp",
+"Center": "Keskel",
+"Merge cells": "\u00dchenda lahtrid",
+"Insert template": "Lisa mall",
+"Templates": "Mallid",
+"Background color": "Tausta v\u00e4rv",
+"Text color": "Teksti v\u00e4rv",
+"Show blocks": "N\u00e4ita plokke",
+"Show invisible characters": "N\u00e4ita peidetud m\u00e4rke",
+"Words: {0}": "S\u00f5nu: {0}",
+"Insert": "Sisesta",
+"File": "Fail",
+"Edit": "Muuda",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastatud teksti ala. Men\u00fc\u00fc jaoks vajuta ALT-F9. T\u00f6\u00f6riistariba jaoks vajuta ALT-F10. Abi saamiseks vajuta ALT-0.",
+"Tools": "T\u00f6\u00f6riistad",
+"View": "Vaade",
+"Table": "Tabel",
+"Format": "Vorming"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/eu.js b/framework/Web/Javascripts/source/tinymce-405/langs/eu.js
new file mode 100755
index 00000000..3985de09
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/eu.js
@@ -0,0 +1,174 @@
+tinymce.addI18n('eu',{
+"Cut": "Ebaki",
+"Header 2": "2 Goiburua",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Zure nabigatzaileak ez du arbela zuzenean erabiltzeko euskarririk. Mesedez erabili CTRL+X\/C\/V teklatuko lasterbideak.",
+"Div": "Div",
+"Paste": "Itsatsi",
+"Close": "Itxi",
+"Pre": "Pre",
+"Align right": "Lerrokatu eskuinean",
+"New document": "Dokumentu berria",
+"Blockquote": "Blockquote",
+"Numbered list": "Zerrenda zenbatua",
+"Increase indent": "Handitu koska",
+"Formats": "Formatuak",
+"Headers": "Goiburuak",
+"Select all": "Hautatu dena",
+"Header 3": "3 Goiburua",
+"Blocks": "Blokeak",
+"Undo": "Desegin",
+"Strikethrough": "Marratua",
+"Bullet list": "Bulet zerrenda",
+"Header 1": "1 Goiburua",
+"Superscript": "Goi-indize",
+"Clear formatting": "Garbitu formatua",
+"Subscript": "Azpiindize",
+"Header 6": "6 Goiburua",
+"Redo": "Berregin",
+"Paragraph": "Parrafoa",
+"Ok": "Ondo",
+"Bold": "Lodia",
+"Code": "Kodea",
+"Italic": "Etzana",
+"Align center": "Lerrokatu horizontalki erdian",
+"Header 5": "5 Goiburua",
+"Decrease indent": "Txikitu koska",
+"Header 4": "4 Goiburua",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Txertatzea testu formatu arruntean dago. Orain edukiak testu arrunt moduan txertatuko dira aukera hau kendu bitartean.",
+"Underline": "Azpimarratua",
+"Cancel": "Ezeztatu",
+"Justify": "Justifikatuta",
+"Inline": "Lerroan",
+"Copy": "Kopiatu",
+"Align left": "Lerrokatu ezkerrean",
+"Visual aids": "Laguntza bisualak",
+"Lower Greek": "Behe grekoa",
+"Square": "Karratua",
+"Default": "Lehenetstia",
+"Lower Alpha": "Behe alfa",
+"Circle": "Zirkulua",
+"Disc": "Diskoa",
+"Upper Alpha": "Goi alfa",
+"Upper Roman": "Goi erromatarra",
+"Lower Roman": "Behe erromatarra",
+"Name": "Izena",
+"Anchor": "Esteka",
+"You have unsaved changes are you sure you want to navigate away?": "Gorde gabeko aldaketak dituzu, zihur zaude hemendik irten nahi duzula?",
+"Restore last draft": "Leheneratu azken zirriborroa",
+"Special character": "Karaktere bereziak",
+"Source code": "Iturburu-kodea",
+"Right to left": "Eskuinetik ezkerrera",
+"Left to right": "Eskerretik eskuinera",
+"Emoticons": "Irrifartxoak",
+"Robots": "Robotak",
+"Document properties": "Dokumentuaren propietateak",
+"Title": "Titulua",
+"Keywords": "Hitz gakoak",
+"Encoding": "Encoding",
+"Description": "Deskribapena",
+"Author": "Egilea",
+"Fullscreen": "Pantaila osoa",
+"Horizontal line": "Marra horizontala",
+"Horizontal space": "Hutsune horizontala",
+"Insert\/edit image": "Irudia txertatu\/editatu",
+"General": "Orokorra",
+"Advanced": "Aurreratua",
+"Source": "Iturburua",
+"Border": "Bordea",
+"Constrain proportions": "Zerraditu proportzioak",
+"Vertical space": "Hutsune bertikala",
+"Image description": "Irudiaren deskribapena",
+"Style": "Estiloa",
+"Dimensions": "Neurriak",
+"Insert image": "Irudia txertatu",
+"Insert date\/time": "Data\/ordua txertatu",
+"Remove link": "Kendu esteka",
+"Url": "Url",
+"Text to display": "Bistaratzeko testua",
+"Anchors": "Estekak",
+"Insert link": "Esteka txertatu",
+"New window": "Lehio berria",
+"None": "Bat ere ez",
+"Target": "Target",
+"Insert\/edit link": "Esteka txertatu\/editatu",
+"Insert\/edit video": "Bideoa txertatu\/editatu",
+"Poster": "Poster-a",
+"Alternative source": "Iturburu alternatiboa",
+"Paste your embed code below:": "Itsatsi hemen zure enkapsulatzeko kodea:",
+"Insert video": "Bideoa txertatu",
+"Embed": "Kapsulatu",
+"Nonbreaking space": "Zuriune zatiezina",
+"Page break": "Orrialde-jauzia",
+"Preview": "Aurrebista",
+"Print": "Inprimatu",
+"Save": "Gorde",
+"Could not find the specified string.": "Ezin izan da zehaztutako katea aurkitu.",
+"Replace": "Ordeztu",
+"Next": "Hurrengoa",
+"Whole words": "hitz osoak",
+"Find and replace": "Bilatu eta ordeztu",
+"Replace with": "Honekin ordeztu",
+"Find": "Bilatu",
+"Replace all": "Ordeztu dena",
+"Match case": "Maiuskula\/minuskula",
+"Prev": "Aurrekoa",
+"Spellcheck": "Egiaztapenak",
+"Finish": "Amaitu",
+"Ignore all": "Ez ikusi guztia",
+"Ignore": "Ez ikusi",
+"Insert row before": "Txertatu errenkada aurretik",
+"Rows": "Errenkadak",
+"Height": "Altuera",
+"Paste row after": "Itsatsi errenkada ostean",
+"Alignment": "Lerrokatzea",
+"Column group": "Zutabe taldea",
+"Row": "Errenkada",
+"Insert column before": "Txertatu zutabe aurretik",
+"Split cell": "Gelaxkak banatu",
+"Cell padding": "Gelaxken betegarria",
+"Cell spacing": "Gelaxka arteko tartea",
+"Row type": "Lerro mota",
+"Insert table": "Txertatu taula",
+"Body": "Gorputza",
+"Caption": "Epigrafea",
+"Footer": "Oina",
+"Delete row": "Ezabatu errenkada",
+"Paste row before": "Itsatsi errenkada aurretik",
+"Scope": "Esparrua",
+"Delete table": "Taula ezabatu",
+"Header cell": "Goiburuko gelaxka",
+"Column": "Zutabea",
+"Cell": "Gelaxka",
+"Header": "Goiburua",
+"Cell type": "Gelaxka mota",
+"Copy row": "Kopiatu errenkada",
+"Row properties": "Errenkadaren propietateak",
+"Table properties": "Taularen propietateak",
+"Row group": "Lerro taldea",
+"Right": "Eskuma",
+"Insert column after": "Txertatu zutabea ostean",
+"Cols": "Zutabeak",
+"Insert row after": "Txertatu errenkada ostean",
+"Width": "Zabalera",
+"Cell properties": "Gelaxkaren propietateak",
+"Left": "Ezkerra",
+"Cut row": "Ebaki errenkada",
+"Delete column": "Ezabatu zutabea",
+"Center": "Erdia",
+"Merge cells": "Gelaxkak batu",
+"Insert template": "Txertatu txantiloia",
+"Templates": "Txantiloiak",
+"Background color": "Atzeko kolorea",
+"Text color": "Testuaren kolorea",
+"Show blocks": "Erakutsi blokeak",
+"Show invisible characters": "Erakutsi karaktere izkutuak",
+"Words: {0}": "Hitzak: {0}",
+"Insert": "Sartu",
+"File": "Fitxategia",
+"Edit": "Editatu",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Testu aberastuko area. Sakatu ALT-F9 menurako. Sakatu ALT-F10 tresna-barrarako. Sakatu ALT-0 laguntzarako",
+"Tools": "Tresnak",
+"View": "Ikusi",
+"Table": "Taula",
+"Format": "Formatua"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/fa.js b/framework/Web/Javascripts/source/tinymce-405/langs/fa.js
new file mode 100755
index 00000000..a8fd76b2
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/fa.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('fa',{
+"Cut": "\u0628\u0631\u062f\u0627\u0634\u062a\u0646",
+"Header 2": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 \u06f2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u06a9\u067e\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0644\u0637\u0641\u0627 \u0627\u0632 \u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc Ctrl+X\/C\/V \u062f\u0631 \u06a9\u06cc\u0628\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.",
+"Div": "\u062a\u06af Div - \u0628\u062e\u0634",
+"Paste": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646",
+"Close": "\u0628\u0633\u062a\u0646",
+"Pre": "\u062a\u06af Pre",
+"Align right": "\u0631\u0627\u0633\u062a \u0686\u06cc\u0646",
+"New document": "\u0633\u0646\u062f \u062c\u062f\u06cc\u062f",
+"Blockquote": "\u062a\u06af \u0646\u0642\u0644 \u0642\u0648\u0644 - Blockquote",
+"Numbered list": "\u0644\u06cc\u0633\u062a \u0634\u0645\u0627\u0631\u0647 \u0627\u06cc",
+"Increase indent": "\u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc",
+"Formats": "\u0642\u0627\u0644\u0628",
+"Headers": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647\u200c\u0647\u0627",
+"Select all": "\u0627\u0646\u062a\u062e\u0627\u0628 \u0647\u0645\u0647",
+"Header 3": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 \u06f3",
+"Blocks": "\u0628\u0644\u0648\u06a9",
+"Undo": "\t\n\u0628\u0627\u0637\u0644 \u06a9\u0631\u062f\u0646",
+"Strikethrough": "\u062e\u0637 \u062e\u0648\u0631\u062f\u0647",
+"Bullet list": "\u0644\u06cc\u0633\u062a \u062f\u0627\u06cc\u0631\u0647 \u0627\u06cc",
+"Header 1": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 \u06f1",
+"Superscript": "\u0628\u0627\u0644\u0627\u0646\u0648\u06cc\u0633 - \u062d\u0627\u0644\u062a \u062a\u0648\u0627\u0646",
+"Clear formatting": "\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc",
+"Subscript": "\u0632\u06cc\u0631 \u0646\u0648\u06cc\u0633 - \u062d\u0627\u0644\u062a \u0627\u0646\u062f\u06cc\u0633",
+"Header 6": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 \u06f6",
+"Redo": "\u0627\u0646\u062c\u0627\u0645 \u062f\u0648\u0628\u0627\u0631\u0647",
+"Paragraph": "\u062a\u06af \u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641 - Paragraph",
+"Ok": "\u0628\u0627\u0634\u0647",
+"Bold": "\u062f\u0631\u0634\u062a",
+"Code": "\u062a\u06af Code",
+"Italic": "\u062e\u0637 \u06a9\u062c",
+"Align center": "\u0648\u0633\u0637 \u0686\u06cc\u0646",
+"Header 5": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 \u06f5",
+"Decrease indent": "\u06a9\u0627\u0647\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc",
+"Header 4": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 \u06f4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0631\u0627 \u063a\u06cc\u0631\u200c\u0641\u0639\u0627\u0644 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u062a\u0648\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.",
+"Underline": "\u062e\u0637 \u0632\u06cc\u0631",
+"Cancel": "\u0644\u063a\u0648",
+"Justify": "\u0645\u0633\u0627\u0648\u06cc \u0627\u0632 \u0637\u0631\u0641\u06cc\u0646",
+"Inline": "\u062e\u0637\u06cc",
+"Copy": "\u06a9\u067e\u06cc",
+"Align left": "\u0686\u067e \u0686\u06cc\u0646",
+"Visual aids": "\u06a9\u0645\u06a9 \u0647\u0627\u06cc \u0628\u0635\u0631\u06cc",
+"Lower Greek": "\u06cc\u0648\u0646\u0627\u0646\u06cc \u06a9\u0648\u0686\u06a9",
+"Square": "\u0645\u0631\u0628\u0639",
+"Default": "\u067e\u06cc\u0634\u0641\u0631\u0636",
+"Lower Alpha": "\u0622\u0644\u0641\u0627\u0621 \u06a9\u0648\u0686\u06a9",
+"Circle": "\u062f\u0627\u06cc\u0631\u0647",
+"Disc": "\u062f\u06cc\u0633\u06a9",
+"Upper Alpha": "\u0622\u0644\u0641\u0627\u0621 \u0628\u0632\u0631\u06af",
+"Upper Roman": "\u0631\u0648\u0645\u06cc \u0628\u0632\u0631\u06af",
+"Lower Roman": "\u0631\u0648\u0645\u06cc \u06a9\u0648\u0686\u06a9",
+"Name": "\u0646\u0627\u0645",
+"Anchor": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9",
+"You have unsaved changes are you sure you want to navigate away?": "\u0634\u0645\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f\u0647 \u0627\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631\u0648\u06cc\u062f\u061f",
+"Restore last draft": "\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0622\u062e\u0631\u06cc\u0646 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633",
+"Special character": "\u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0647\u0627\u06cc \u062e\u0627\u0635",
+"Source code": "\u06a9\u062f \u0645\u0646\u0628\u0639",
+"Right to left": "\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",
+"Left to right": "\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",
+"Emoticons": "\u0634\u06a9\u0644\u06a9\u200c\u0647\u0627",
+"Robots": "\u0631\u0628\u0627\u062a \u0647\u0627",
+"Document properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0646\u062f",
+"Title": "\u0639\u0646\u0648\u0627\u0646",
+"Keywords": "\u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc",
+"Encoding": "\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc",
+"Description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a",
+"Author": "\u0646\u0648\u06cc\u0633\u0646\u062f\u0647",
+"Fullscreen": "\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647",
+"Horizontal line": "\u062e\u0637 \u0627\u0641\u0642\u06cc",
+"Horizontal space": "\u0641\u0636\u0627\u06cc \u0627\u0641\u0642\u06cc",
+"Insert\/edit image": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
+"General": "\u06a9\u0644\u06cc",
+"Advanced": "\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",
+"Source": "\u0645\u0646\u0628\u0639",
+"Border": "\u062d\u0627\u0634\u06cc\u0647",
+"Constrain proportions": "\u062a\u0646\u0627\u0633\u0628",
+"Vertical space": "\u0641\u0636\u0627\u06cc \u0639\u0645\u0648\u062f\u06cc",
+"Image description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0639\u06a9\u0633",
+"Style": "\u0633\u0628\u06a9",
+"Dimensions": "\u0627\u0628\u0639\u0627\u062f",
+"Insert image": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
+"Insert date\/time": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646",
+"Remove link": "\u062d\u0630\u0641 \u0644\u06cc\u0646\u06a9",
+"Url": "\u0627\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9",
+"Text to display": "\u0645\u062a\u0646 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634",
+"Anchors": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9 \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647",
+"Insert link": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
+"New window": "\u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f",
+"None": "\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",
+"Target": "\u0646\u062d\u0648\u0647 \u0628\u0627\u0632 \u0634\u062f\u0646 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631",
+"Insert\/edit link": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
+"Insert\/edit video": "\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0646\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc",
+"Poster": "\u067e\u0648\u0633\u062a\u0631",
+"Alternative source": "\u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631",
+"Paste your embed code below:": "\u06a9\u062f \u062c\u0627 \u062f\u0627\u062f\u0646 - embed - \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0632\u06cc\u0631 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:",
+"Insert video": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc",
+"Embed": "\u062c\u0627 \u062f\u0627\u062f\u0646",
+"Nonbreaking space": "\u0641\u0636\u0627\u06cc \u063a\u06cc\u0631 \u0634\u06a9\u0633\u062a\u0646",
+"Page break": "\u0634\u06a9\u0633\u062a\u0646 \u0635\u0641\u062d\u0647",
+"Paste as text": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u0646",
+"Preview": "\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",
+"Print": "\u0686\u0627\u067e",
+"Save": "\u0630\u062e\u06cc\u0631\u0647",
+"Could not find the specified string.": "\u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f.",
+"Replace": "\u062c\u0627 \u0628\u0647 \u062c\u0627 \u06a9\u0631\u062f\u0646",
+"Next": "\u0628\u0639\u062f\u06cc",
+"Whole words": "\u0647\u0645\u0647 \u06a9\u0644\u0645\u0647 \u0647\u0627",
+"Find and replace": "\u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0648 \u062c\u0627 \u0628\u0647 \u062c\u0627 \u06a9\u0631\u062f\u0646",
+"Replace with": "\u062c\u0627 \u0628\u0647 \u062c\u0627 \u06a9\u0631\u062f\u0646 \u0628\u0627",
+"Find": "\u062c\u0633\u062a \u0648 \u062c\u0648",
+"Replace all": "\u062c\u0627 \u0628\u0647 \u062c\u0627 \u06a9\u0631\u062f\u0646 \u0647\u0645\u0647",
+"Match case": "\u0645\u0648\u0627\u0631\u062f \u067e\u06cc\u062f\u0627 \u0634\u062f\u0647",
+"Prev": "\u0642\u0628\u0644\u06cc",
+"Spellcheck": "\u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627\u06cc\u06cc",
+"Finish": "\u067e\u0627\u06cc\u0627\u0646",
+"Ignore all": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u0647\u0645\u0647",
+"Ignore": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646",
+"Insert row before": "\u0633\u0637\u0631 \u062c\u062f\u06cc\u062f\u060c \u067e\u06cc\u0634 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Rows": "\u062a\u0639\u062f\u0627\u062f \u0633\u0637\u0631",
+"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
+"Paste row after": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Alignment": "\u0631\u062f\u06cc\u0641 \u0628\u0646\u062f\u06cc \u0646\u0648\u0634\u062a\u0647",
+"Column group": "\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646",
+"Row": "\u0633\u0637\u0631",
+"Insert column before": "\u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646",
+"Split cell": "\u062a\u0642\u0633\u06cc\u0645 \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644",
+"Cell padding": "\u062d\u0627\u0634\u06cc\u0647 \u0633\u0644\u0648\u0644\u0647\u0627",
+"Cell spacing": "\u0641\u0627\u0635\u0644\u0647\u200c\u06cc \u0628\u06cc\u0646 \u0633\u0644\u0648\u0644\u0647\u0627",
+"Row type": "\u0646\u0648\u0639 \u0633\u0637\u0631",
+"Insert table": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062c\u062f\u0648\u0644",
+"Body": "\u0628\u062f\u0646\u0647",
+"Caption": "\u0639\u0646\u0648\u0627\u0646",
+"Footer": "\u067e\u0627\u0646\u0648\u06cc\u0633",
+"Delete row": "\u062d\u0630\u0641 \u0633\u0637\u0631",
+"Paste row before": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Scope": "\u0645\u062d\u062f\u0648\u062f\u0647\u200c\u06cc \u0639\u0646\u0648\u0627\u0646",
+"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
+"Header cell": "\u0633\u0631\u0622\u06cc\u0646\u062f \u0633\u0644\u0648\u0644",
+"Column": "\u0633\u062a\u0648\u0646",
+"Cell": "\u0633\u0644\u0648\u0644",
+"Header": "\u0633\u0631\u0622\u06cc\u0646\u062f",
+"Cell type": "\u0646\u0648\u0639 \u0633\u0644\u0648\u0644",
+"Copy row": "\u06a9\u067e\u06cc \u0633\u0637\u0631",
+"Row properties": "\u0648\u06cc\u0698\u06af\u06cc\u0647\u0627\u06cc \u0633\u0637\u0631",
+"Table properties": "\u0648\u06cc\u0698\u06af\u06cc\u0647\u0627\u06cc \u062c\u062f\u0648\u0644",
+"Row group": "\u06af\u0631\u0648\u0647 \u0633\u0637\u0631",
+"Right": "\u0631\u0627\u0633\u062a",
+"Insert column after": "\u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646",
+"Cols": "\u062a\u0639\u062f\u0627\u062f \u0633\u062a\u0648\u0646",
+"Insert row after": "\u0633\u0637\u0631 \u062c\u062f\u06cc\u062f\u060c \u067e\u0633 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Width": "\u0639\u0631\u0636",
+"Cell properties": "\u0648\u06cc\u0698\u06af\u06cc\u0647\u0627\u06cc \u0633\u0644\u0648\u0644",
+"Left": "\u0686\u067e",
+"Cut row": "\u0628\u0631\u062f\u0627\u0634\u062a\u0646 \u0633\u0637\u0631",
+"Delete column": "\u062d\u0630\u0641 \u0633\u062a\u0648\u0646",
+"Center": "\u0645\u0631\u06a9\u0632",
+"Merge cells": "\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644\u0647\u0627",
+"Insert template": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u0644\u06af\u0648",
+"Templates": "\u0627\u0644\u06af\u0648\u200c\u0647\u0627",
+"Background color": "\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647 \u0645\u062a\u0646",
+"Text color": "\u0631\u0646\u06af \u0645\u062a\u0646",
+"Show blocks": "\u0646\u0645\u0627\u06cc\u0634 \u0628\u062e\u0634\u200c\u0647\u0627",
+"Show invisible characters": "\u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0686\u0627\u067e",
+"Words: {0}": "\u06a9\u0644\u0645\u0627\u062a : {0}",
+"Insert": "\u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646",
+"File": "\u067e\u0631\u0648\u0646\u062f\u0647",
+"Edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u06cc \u0645\u062a\u0646. \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-F9\u060c \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 ALT-F10 \u0648 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u06cc \u0631\u0627\u0647\u0646\u0645\u0627 ALT-0 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
+"Tools": "\u0627\u0628\u0632\u0627\u0631\u0647\u0627",
+"View": "\u0646\u0645\u0627\u06cc\u0634",
+"Table": "\u062c\u062f\u0648\u0644",
+"Format": "\u0642\u0627\u0644\u0628"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/fi.js b/framework/Web/Javascripts/source/tinymce-405/langs/fi.js
new file mode 100755
index 00000000..d5565d39
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/fi.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('fi',{
+"Cut": "Leikkaa",
+"Header 2": "Otsikko 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Selaimesi ei tue leikekirjan suoraa k\u00e4ytt\u00e4mist\u00e4. Ole hyv\u00e4 ja k\u00e4yt\u00e4 n\u00e4pp\u00e4imist\u00f6n Ctrl+X ja Ctrl+V n\u00e4pp\u00e4inyhdistelmi\u00e4.",
+"Div": "Div",
+"Paste": "Liit\u00e4",
+"Close": "Sulje",
+"Pre": "Esimuotoiltu",
+"Align right": "Tasaa oikealle",
+"New document": "Uusi dokumentti",
+"Blockquote": "Lainauslogko",
+"Numbered list": "J\u00e4rjestetty lista",
+"Increase indent": "Loitonna",
+"Formats": "Muotoilut",
+"Headers": "Otsikot",
+"Select all": "Valitse kaikki",
+"Header 3": "Otsikko 3",
+"Blocks": "Lohkot",
+"Undo": "Peru",
+"Strikethrough": "Yliviivaus",
+"Bullet list": "J\u00e4rjest\u00e4m\u00e4t\u00f6n lista",
+"Header 1": "Otsikko 1",
+"Superscript": "Yl\u00e4indeksi",
+"Clear formatting": "Poista muotoilu",
+"Subscript": "Alaindeksi",
+"Header 6": "Otsikko 6",
+"Redo": "Tee uudelleen",
+"Paragraph": "Kappale",
+"Ok": "Ok",
+"Bold": "Lihavointi",
+"Code": "Koodi",
+"Italic": "Kursivointi",
+"Align center": "Keskit\u00e4",
+"Header 5": "Otsikko 5",
+"Decrease indent": "Sisenn\u00e4",
+"Header 4": "Otsikko 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Liitt\u00e4minen on nyt pelk\u00e4n tekstin -tilassa. Sis\u00e4ll\u00f6t liitet\u00e4\u00e4n nyt pelkk\u00e4n\u00e4 tekstin\u00e4, kunnes otat vaihtoehdon pois k\u00e4yt\u00f6st\u00e4.",
+"Underline": "Alleviivaus",
+"Cancel": "Peruuta",
+"Justify": "Tasaa",
+"Inline": "Samalla rivill\u00e4",
+"Copy": "Kopioi",
+"Align left": "Tasaa vasemmalle",
+"Visual aids": "Visuaaliset neuvot",
+"Lower Greek": "pienet kirjaimet: \u03b1, \u03b2, \u03b3",
+"Square": "Neli\u00f6",
+"Default": "Oletus",
+"Lower Alpha": "pienet kirjaimet: a, b, c",
+"Circle": "Pallo",
+"Disc": "Ympyr\u00e4",
+"Upper Alpha": "isot kirjaimet: A, B, C",
+"Upper Roman": "isot kirjaimet: I, II, III",
+"Lower Roman": "pienet kirjaimet: i, ii, iii",
+"Name": "Nimi",
+"Anchor": "Ankkuri",
+"You have unsaved changes are you sure you want to navigate away?": "Sinulla on tallentamattomia muutoksia, haluatko varmasti siirty\u00e4 toiselle sivulle?",
+"Restore last draft": "Palauta aiempi luonnos",
+"Special character": "Erikoismerkki",
+"Source code": "L\u00e4hdekoodi",
+"Right to left": "Oikealta vasemmalle",
+"Left to right": "Vasemmalta oikealle",
+"Emoticons": "Hymi\u00f6t",
+"Robots": "Robotit",
+"Document properties": "Dokumentin ominaisuudet",
+"Title": "Otsikko",
+"Keywords": "Avainsanat",
+"Encoding": "Merkist\u00f6",
+"Description": "Kuvaus",
+"Author": "Tekij\u00e4",
+"Fullscreen": "Koko ruutu",
+"Horizontal line": "Vaakasuora viiva",
+"Horizontal space": "Horisontaalinen tila",
+"Insert\/edit image": "Lis\u00e4\u00e4\/muokkaa kuva",
+"General": "Yleiset",
+"Advanced": "Lis\u00e4asetukset",
+"Source": "L\u00e4hde",
+"Border": "Reunus",
+"Constrain proportions": "S\u00e4ilyt\u00e4 mittasuhteet",
+"Vertical space": "Vertikaalinen tila",
+"Image description": "Kuvaus",
+"Style": "Tyyli",
+"Dimensions": "Mittasuhteet",
+"Insert image": "Lis\u00e4\u00e4 kuva",
+"Insert date\/time": "Lis\u00e4\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 tai aika",
+"Remove link": "Poista linkki",
+"Url": "Osoite",
+"Text to display": "N\u00e4ytett\u00e4v\u00e4 teksti",
+"Anchors": "Ankkurit",
+"Insert link": "Lis\u00e4\u00e4 linkki",
+"New window": "Uusi ikkuna",
+"None": "Ei mit\u00e4\u00e4n",
+"Target": "Kohde",
+"Insert\/edit link": "Lis\u00e4\u00e4 tai muokkaa linkki",
+"Insert\/edit video": "Lis\u00e4\u00e4 tai muokkaa video",
+"Poster": "L\u00e4hett\u00e4j\u00e4",
+"Alternative source": "Vaihtoehtoinen l\u00e4hde",
+"Paste your embed code below:": "Liit\u00e4 upotuskoodisi alapuolelle:",
+"Insert video": "Lis\u00e4\u00e4 video",
+"Embed": "Upota",
+"Nonbreaking space": "Tyhj\u00e4 merkki (nbsp)",
+"Page break": "Sivunvaihto",
+"Paste as text": "Liit\u00e4 tekstin\u00e4",
+"Preview": "Esikatselu",
+"Print": "Tulosta",
+"Save": "Tallenna",
+"Could not find the specified string.": "Haettua merkkijonoa ei l\u00f6ytynyt.",
+"Replace": "Korvaa",
+"Next": "Seur.",
+"Whole words": "Koko sanat",
+"Find and replace": "Etsi ja korvaa",
+"Replace with": "Korvaa",
+"Find": "Etsi",
+"Replace all": "Korvaa kaikki",
+"Match case": "Erota isot ja pienet kirjaimet",
+"Prev": "Edel.",
+"Spellcheck": "Oikolue",
+"Finish": "Lopeta",
+"Ignore all": "\u00c4l\u00e4 huomioi mit\u00e4\u00e4n",
+"Ignore": "\u00c4l\u00e4 huomioi",
+"Insert row before": "Lis\u00e4\u00e4 rivi ennen",
+"Rows": "Rivit",
+"Height": "Korkeus",
+"Paste row after": "Liit\u00e4 rivi j\u00e4lkeen",
+"Alignment": "Tasaus",
+"Column group": "Sarakeryhm\u00e4",
+"Row": "Rivi",
+"Insert column before": "Lis\u00e4\u00e4 rivi ennen",
+"Split cell": "Jaa solu",
+"Cell padding": "Solun tyhj\u00e4 tila",
+"Cell spacing": "Solun v\u00e4li",
+"Row type": "Rivityyppi",
+"Insert table": "Lis\u00e4\u00e4 taulukko",
+"Body": "Runko",
+"Caption": "Seloste",
+"Footer": "Alaosa",
+"Delete row": "Poista rivi",
+"Paste row before": "Liit\u00e4 rivi ennen",
+"Scope": "Laajuus",
+"Delete table": "Poista taulukko",
+"Header cell": "Otsikkosolu",
+"Column": "Sarake",
+"Cell": "Solu",
+"Header": "Otsikko",
+"Cell type": "Solun tyyppi",
+"Copy row": "Kopioi rivi",
+"Row properties": "Rivin ominaisuudet",
+"Table properties": "Taulukon ominaisuudet",
+"Row group": "Riviryhm\u00e4",
+"Right": "Oikea",
+"Insert column after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
+"Cols": "Sarakkeet",
+"Insert row after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
+"Width": "Leveys",
+"Cell properties": "Solun ominaisuudet",
+"Left": "Vasen",
+"Cut row": "Leikkaa rivi",
+"Delete column": "Poista sarake",
+"Center": "Keskell\u00e4",
+"Merge cells": "Yhdist\u00e4 solut",
+"Insert template": "Lis\u00e4\u00e4 pohja",
+"Templates": "Pohjat",
+"Background color": "Taustan v\u00e4ri",
+"Text color": "Tekstin v\u00e4ri",
+"Show blocks": "N\u00e4yt\u00e4 lohkot",
+"Show invisible characters": "N\u00e4yt\u00e4 n\u00e4kym\u00e4tt\u00f6m\u00e4t merkit",
+"Words: {0}": "Sanat: {0}",
+"Insert": "Lis\u00e4\u00e4",
+"File": "Tiedosto",
+"Edit": "Muokkaa",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastetun tekstin alue. Paina ALT-F9 valikkoon. Paina ALT-F10 ty\u00f6kaluriviin. Paina ALT-0 ohjeeseen.",
+"Tools": "Ty\u00f6kalut",
+"View": "N\u00e4yt\u00e4",
+"Table": "Taulukko",
+"Format": "Muotoilu"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/fo.js b/framework/Web/Javascripts/source/tinymce-405/langs/fo.js
new file mode 100755
index 00000000..c6fc5eb0
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/fo.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('fo',{
+"Cut": "Klipp",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "T\u00edn kagi hevur ikki beinlei\u00f0is atgongd til setibor\u00f0i\u00f0. Vinarliga br\u00faka CTRL+X\/C\/V snarvegirnar \u00edsta\u00f0in.",
+"Paste": "L\u00edma",
+"Close": "Lat aftur",
+"Align right": "H\u00f8gra stilla",
+"New document": "N\u00fdtt skjal",
+"Numbered list": "Tal listi",
+"Increase indent": "vaks inndr\u00e1tt",
+"Formats": "Sni\u00f0",
+"Select all": "Vel alt",
+"Undo": "Angra ger",
+"Strikethrough": "Strika \u00edgj\u00f8gnum",
+"Bullet list": "Punkt listi",
+"Superscript": "H\u00e1skrift",
+"Clear formatting": "Strika sni\u00f0",
+"Subscript": "L\u00e1gskrift",
+"Redo": "Ger aftur",
+"Ok": "Ok",
+"Bold": "Feit",
+"Italic": "Sk\u00e1ktekstur",
+"Align center": "Mi\u00f0set",
+"Decrease indent": "Minka inndr\u00e1tt",
+"Underline": "Undirstrika",
+"Cancel": "\u00d3gilda",
+"Justify": "L\u00edka breddar",
+"Copy": "Avrita",
+"Align left": "Vinstra stilla",
+"Visual aids": "Sj\u00f3nhj\u00e1lp",
+"Lower Greek": "L\u00edti Grikskt",
+"Square": "Fj\u00f3rhyrningur",
+"Default": "Forsettur",
+"Lower Alpha": "L\u00edti Alfa",
+"Circle": "Ringur",
+"Disc": "Skiva",
+"Upper Alpha": "St\u00f3rt Alfa",
+"Upper Roman": "St\u00f3rt R\u00f3mverskt",
+"Lower Roman": "L\u00edti R\u00f3mverskt",
+"Name": "Navn",
+"Anchor": "Akker",
+"You have unsaved changes are you sure you want to navigate away?": "T\u00fa hevur ikki goymdar broytingar. Ert t\u00fa v\u00edsur \u00ed at t\u00fa vilt halda fram?",
+"Restore last draft": "Endurskapa seinasta uppkast",
+"Special character": "Serst\u00f8k tekn",
+"Source code": "keldukoda",
+"Right to left": "H\u00f8gra til vinstra",
+"Left to right": "Vinstra til h\u00f8gra",
+"Emoticons": "Emotikonur",
+"Robots": "Robottar",
+"Document properties": "Skjal eginleikar",
+"Title": "Heiti",
+"Keywords": "Leitior\u00f0",
+"Encoding": "Koding",
+"Description": "L\u00fdsing",
+"Author": "H\u00f8vundur",
+"Fullscreen": "Fullan sk\u00edggja",
+"Horizontal line": "Vatnr\u00f8tt linja",
+"Horizontal space": "Vatnr\u00e6tt fr\u00e1st\u00f8\u00f0a",
+"Insert\/edit image": "Innset\/r\u00e6tta mynd",
+"General": "Vanligt",
+"Advanced": "Framkomi",
+"Source": "Kelda",
+"Border": "Rammi",
+"Constrain proportions": "Var\u00f0veit lutfall",
+"Vertical space": "Loddr\u00e6t fr\u00e1st\u00f8\u00f0a",
+"Image description": "L\u00fdsing av mynd",
+"Style": "St\u00edlur",
+"Dimensions": "St\u00f8dd",
+"Insert date\/time": "Innset dag\/t\u00ed\u00f0",
+"Url": "Url",
+"Text to display": "Tekstur at v\u00edsa",
+"Insert link": "Innset leinkju",
+"New window": "N\u00fdggjan glugga",
+"None": "Eingin",
+"Target": "M\u00e1l",
+"Insert\/edit link": "Innset\/r\u00e6tta leinkju",
+"Insert\/edit video": "Innset\/r\u00e6tta kykmynd",
+"Poster": "Uppslag",
+"Alternative source": "Onnur kelda",
+"Paste your embed code below:": "Innset ta\u00f0 kodu, sum skal leggjast inn \u00ed, ni\u00f0anfyri:",
+"Insert video": "Innset kykmynd",
+"Embed": "Legg inn \u00ed",
+"Nonbreaking space": "Hart millumr\u00fam",
+"Page break": "S\u00ed\u00f0uskift",
+"Preview": "V\u00eds frammanundan",
+"Print": "Prenta",
+"Save": "Goym",
+"Could not find the specified string.": "Kundi ikki finna leititekst",
+"Replace": "Set \u00edsta\u00f0in",
+"Next": "N\u00e6sta",
+"Whole words": "Heil or\u00f0",
+"Find and replace": "Finn og set \u00edsta\u00f0in",
+"Replace with": "Set hetta \u00edsta\u00f0in",
+"Find": "Finn",
+"Replace all": "Set \u00edsta\u00f0in fyri \u00f8ll",
+"Match case": "ST\u00d3RIR og l\u00edtlir b\u00f3kstavir",
+"Prev": "Fyrra",
+"Spellcheck": "R\u00e6ttstavari",
+"Finish": "Enda",
+"Ignore all": "Leyp alt um",
+"Ignore": "Leyp um",
+"Insert row before": "Innset ra\u00f0 \u00e1\u00f0renn",
+"Rows": "Ra\u00f0ir",
+"Height": "H\u00e6dd",
+"Paste row after": "L\u00edma ra\u00f0 aftan\u00e1",
+"Alignment": "Stilling",
+"Column group": "Teig b\u00f3lkur",
+"Row": "Ra\u00f0",
+"Insert column before": "Innset teig \u00e1\u00f0renn",
+"Split cell": "Syndra puntar",
+"Cell padding": "Punt fylling",
+"Cell spacing": "Punt fr\u00e1st\u00f8\u00f0a",
+"Row type": "Ra\u00f0 slag",
+"Insert table": "Innset talvu",
+"Body": "Likam",
+"Caption": "Tekstur",
+"Footer": "F\u00f3tur",
+"Delete row": "Skrika ra\u00f0",
+"Paste row before": "L\u00edma ra\u00f0 \u00e1\u00f0renn",
+"Scope": "N\u00fdtslu\u00f8ki",
+"Delete table": "Strika talvu",
+"Header cell": "H\u00f8vd puntur",
+"Column": "Teigur",
+"Cell": "Puntur",
+"Header": "H\u00f8vd",
+"Cell type": "Punt slag",
+"Copy row": "Avrita ra\u00f0",
+"Row properties": "Ra\u00f0 eginleikar",
+"Table properties": "Talvu eginleikar",
+"Row group": "Ra\u00f0 b\u00f3lkur",
+"Right": "H\u00f8gra",
+"Insert column after": "Innset teig aftan\u00e1",
+"Cols": "Teigar",
+"Insert row after": "Innset ra\u00f0 aftan\u00e1",
+"Width": "Breidd",
+"Cell properties": "Punt eginleikar",
+"Left": "Vinstra",
+"Cut row": "Klipp ra\u00f0",
+"Delete column": "Strika teig",
+"Center": "Mi\u00f0a",
+"Merge cells": "Fl\u00e6tta puntar",
+"Insert template": "Innset form",
+"Templates": "Formur",
+"Background color": "Bakgrundslitur",
+"Text color": "Tekst litur",
+"Show blocks": "V\u00eds blokkar",
+"Show invisible characters": "V\u00eds \u00f3sj\u00f3nlig tekn",
+"Words: {0}": "Or\u00f0: {0}",
+"Insert": "Innset",
+"File": "F\u00edla",
+"Edit": "Ritstj\u00f3rna",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "R\u00edkt Tekst \u00d8ki. Tr\u00fdst ALT-F9 fyri valmynd. Tr\u00fdst ALT-F10 fyri ambo\u00f0slinju. Tr\u00fdst ALT-0 fyri hj\u00e1lp",
+"Tools": "Ambo\u00f0",
+"View": "V\u00eds",
+"Table": "Talva",
+"Format": "Smi\u00f0"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/fr_FR.js b/framework/Web/Javascripts/source/tinymce-405/langs/fr_FR.js
new file mode 100755
index 00000000..b2978b86
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/fr_FR.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('fr_FR',{
+"Cut": "Couper",
+"Header 2": "En-t\u00eate 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "Coller",
+"Close": "Fermer",
+"Pre": "Pre",
+"Align right": "Aligner \u00e0 droite",
+"New document": "Nouveau document",
+"Blockquote": "Citation",
+"Numbered list": "Num\u00e9rotation",
+"Increase indent": "Augmenter le retrait",
+"Formats": "Formats",
+"Headers": "En-t\u00eates",
+"Select all": "Tout s\u00e9lectionner",
+"Header 3": "En-t\u00eate 3",
+"Blocks": "Blocs",
+"Undo": "Annuler",
+"Strikethrough": "Barr\u00e9",
+"Bullet list": "Puces",
+"Header 1": "En-t\u00eate 1",
+"Superscript": "Exposant",
+"Clear formatting": "Effacer la mise en forme",
+"Subscript": "Indice",
+"Header 6": "En-t\u00eate 6",
+"Redo": "R\u00e9tablir",
+"Paragraph": "Paragraphe",
+"Ok": "Ok",
+"Bold": "Gras",
+"Code": "Code",
+"Italic": "Italique",
+"Align center": "Aligner au centre",
+"Header 5": "En-t\u00eate 5",
+"Decrease indent": "Diminuer le retrait",
+"Header 4": "En-t\u00eate 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
+"Underline": "Soulign\u00e9",
+"Cancel": "Annuler",
+"Justify": "Justifi\u00e9",
+"Inline": "en place",
+"Copy": "Copier",
+"Align left": "Aligner \u00e0 gauche",
+"Visual aids": "Aides visuelle",
+"Lower Greek": "Grec minuscule",
+"Square": "Carr\u00e9",
+"Default": "Par d\u00e9faut",
+"Lower Alpha": "Alpha inf\u00e9rieure",
+"Circle": "Cercle",
+"Disc": "Disque",
+"Upper Alpha": "Alpha majuscule",
+"Upper Roman": "Romain majuscule",
+"Lower Roman": "Romain minuscule",
+"Name": "Nom",
+"Anchor": "Ancre",
+"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
+"Restore last draft": "Restaurer le dernier brouillon",
+"Special character": "Caract\u00e8res sp\u00e9ciaux",
+"Source code": "Code source",
+"Right to left": "Droite \u00e0 gauche",
+"Left to right": "Gauche \u00e0 droite",
+"Emoticons": "Emotic\u00f4nes",
+"Robots": "Robots",
+"Document properties": "Propri\u00e9t\u00e9 du document",
+"Title": "Titre",
+"Keywords": "Mots-cl\u00e9s",
+"Encoding": "Encodage",
+"Description": "Description",
+"Author": "Auteur",
+"Fullscreen": "Plein \u00e9cran",
+"Horizontal line": "Ligne horizontale",
+"Horizontal space": "Espacement horizontal",
+"Insert\/edit image": "Ins\u00e9rer\/\u00e9diter une image",
+"General": "G\u00e9n\u00e9ral",
+"Advanced": "Avanc\u00e9",
+"Source": "Source",
+"Border": "Bordure",
+"Constrain proportions": "Contraindre les proportions",
+"Vertical space": "Espacement vertical",
+"Image description": "Description de l'image",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Ins\u00e9rer une image",
+"Insert date\/time": "Ins\u00e9rer date\/heure",
+"Remove link": "Enlever le lien",
+"Url": "Url",
+"Text to display": "Texte \u00e0 afficher",
+"Anchors": "Ancre",
+"Insert link": "Ins\u00e9rer un lien",
+"New window": "Nouvelle fen\u00eatre",
+"None": "n\/a",
+"Target": "Cible",
+"Insert\/edit link": "Ins\u00e9rer\/\u00e9diter un lien",
+"Insert\/edit video": "Ins\u00e9rer\/\u00e9diter une vid\u00e9o",
+"Poster": "Afficher",
+"Alternative source": "Source alternative",
+"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
+"Insert video": "Ins\u00e9rer une vid\u00e9o",
+"Embed": "Int\u00e9grer",
+"Nonbreaking space": "Espace ins\u00e9cable",
+"Page break": "Saut de page",
+"Paste as text": "Coller comme texte",
+"Preview": "Pr\u00e9visualiser",
+"Print": "Imprimer",
+"Save": "Enregistrer",
+"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
+"Replace": "Remplacer",
+"Next": "Suiv",
+"Whole words": "Mots entiers",
+"Find and replace": "Trouver et remplacer",
+"Replace with": "Remplacer par",
+"Find": "Chercher",
+"Replace all": "Tout remplacer",
+"Match case": "Respecter la casse",
+"Prev": "Pr\u00e9c ",
+"Spellcheck": "V\u00e9rification orthographique",
+"Finish": "Finie",
+"Ignore all": "Tout ignorer",
+"Ignore": "Ignorer",
+"Insert row before": "Ins\u00e9rer une ligne avant",
+"Rows": "Lignes",
+"Height": "Hauteur",
+"Paste row after": "Coller la ligne apr\u00e8s",
+"Alignment": "Alignement",
+"Column group": "Groupe de colonnes",
+"Row": "Ligne",
+"Insert column before": "Ins\u00e9rer une colonne avant",
+"Split cell": "Diviser la cellule",
+"Cell padding": "Espacement interne cellule",
+"Cell spacing": "Espacement inter-cellulles",
+"Row type": "Type de ligne",
+"Insert table": "Ins\u00e9rer un tableau",
+"Body": "Corps",
+"Caption": "Titre",
+"Footer": "Pied",
+"Delete row": "Effacer la ligne",
+"Paste row before": "Coller la ligne avant",
+"Scope": "Etendue",
+"Delete table": "Supprimer le tableau",
+"Header cell": "Cellule d'en-t\u00eate",
+"Column": "Colonne",
+"Cell": "Cellule",
+"Header": "En-t\u00eate",
+"Cell type": "Type de cellule",
+"Copy row": "Copier la ligne",
+"Row properties": "Propri\u00e9t\u00e9s de la ligne",
+"Table properties": "Propri\u00e9t\u00e9s du tableau",
+"Row group": "Groupe de lignes",
+"Right": "Droite",
+"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
+"Cols": "Colonnes",
+"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
+"Width": "Largeur",
+"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
+"Left": "Gauche",
+"Cut row": "Couper la ligne",
+"Delete column": "Effacer la colonne",
+"Center": "Centr\u00e9",
+"Merge cells": "Fusionner les cellules",
+"Insert template": "Ajouter un th\u00e8me",
+"Templates": "Th\u00e8mes",
+"Background color": "Couleur d'arri\u00e8re-plan",
+"Text color": "Couleur du texte",
+"Show blocks": "Afficher les blocs",
+"Show invisible characters": "Afficher les caract\u00e8res invisibles",
+"Words: {0}": "Mots : {0}",
+"Insert": "Ins\u00e9rer",
+"File": "Fichier",
+"Edit": "Editer",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
+"Tools": "Outils",
+"View": "Voir",
+"Table": "Tableau",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/gl.js b/framework/Web/Javascripts/source/tinymce-405/langs/gl.js
new file mode 100755
index 00000000..8d7f7069
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/gl.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('gl',{
+"Cut": "Cortar",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu navegador non admite o acceso directo ao portapapeis. Empregue os atallos de teclado Crtl+X\/C\/V no seu canto.",
+"Paste": "Pegar",
+"Close": "Pechar",
+"Align right": "Ali\u00f1ar \u00e1 dereita",
+"New document": "Novo documento",
+"Numbered list": "Lista numerada",
+"Increase indent": "Aumentar a sangr\u00eda",
+"Formats": "Formatos",
+"Select all": "Seleccionar todo",
+"Undo": "Desfacer",
+"Strikethrough": "Riscado",
+"Bullet list": "Lista vi\u00f1etada",
+"Superscript": "Super\u00edndice",
+"Clear formatting": "Limpar o formato",
+"Subscript": "Sub\u00edndice",
+"Redo": "Refacer",
+"Ok": "Aceptar",
+"Bold": "Negra",
+"Italic": "Cursiva",
+"Align center": "Ali\u00f1ar ao centro",
+"Decrease indent": "Reducir a sangr\u00eda",
+"Underline": "Subli\u00f1ado",
+"Cancel": "Cancelar",
+"Justify": "Xustificar",
+"Copy": "Copiar",
+"Align left": "Ali\u00f1ar \u00e1 esquerda",
+"Visual aids": "Axudas visuais",
+"Lower Greek": "Inferior grega",
+"Square": "Cadrado",
+"Default": "Predeterminada",
+"Lower Alpha": "Inferior alfa",
+"Circle": "Circulo",
+"Disc": "Disco",
+"Upper Alpha": "Superior alfa",
+"Upper Roman": "Superior romana",
+"Lower Roman": "Inferior romana",
+"Name": "Nome",
+"Anchor": "Ancoraxe",
+"You have unsaved changes are you sure you want to navigate away?": "Ten cambios sen gardar. Confirma que quere sa\u00edr?",
+"Restore last draft": "Restaurar o \u00faltimo borrador",
+"Special character": "Car\u00e1cter especial",
+"Source code": "C\u00f3digo fonte",
+"Right to left": "De dereita a esquerda",
+"Left to right": "De esquerda a dereita",
+"Emoticons": "Emoticonas",
+"Robots": "Robots",
+"Document properties": "Propiedades do documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palabras clave",
+"Encoding": "Codificaci\u00f3n",
+"Description": "Descrici\u00f3n",
+"Author": "Autor",
+"Fullscreen": "Pantalla completa",
+"Horizontal line": "Li\u00f1a horizontal",
+"Horizontal space": "Espazo horizontal",
+"Insert\/edit image": "Inserir\/editar imaxe",
+"General": "Xeral",
+"Advanced": "Avanzado",
+"Source": "Orixe",
+"Border": "Bordo",
+"Constrain proportions": "Restrinxir as proporci\u00f3ns",
+"Vertical space": "Espazo vertical",
+"Image description": "Descrici\u00f3n da imaxe",
+"Style": "Estilo",
+"Dimensions": "Dimensi\u00f3ns",
+"Insert date\/time": "Inserir data\/hora",
+"Url": "URL",
+"Text to display": "Texto que amosar",
+"Insert link": "Inserir ligaz\u00f3n",
+"New window": "Nova xanela",
+"None": "Ning\u00fan",
+"Target": "Destino",
+"Insert\/edit link": "Inserir\/editar ligaz\u00f3n",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "Cartel",
+"Alternative source": "Orixe alternativa",
+"Paste your embed code below:": "Pegue embaixo o c\u00f3digo incrustado",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Incrustado",
+"Nonbreaking space": "Espazo irromp\u00edbel",
+"Page break": "Quebra de p\u00e1xina",
+"Preview": "Vista previa",
+"Print": "Imprimir",
+"Save": "Gardar",
+"Could not find the specified string.": "Non foi pos\u00edbel atopar a cadea de texto especificada.",
+"Replace": "Substitu\u00edr",
+"Next": "Seguinte",
+"Whole words": "Palabras completas",
+"Find and replace": "Buscar e substitu\u00edr",
+"Replace with": "Substitu\u00edr con",
+"Find": "Buscar",
+"Replace all": "Substitu\u00edr todo",
+"Match case": "Coincidencia exacta",
+"Prev": "Anterior",
+"Spellcheck": "Corrector ortogr\u00e1fico",
+"Finish": "Rematar",
+"Ignore all": "Ignorar todo",
+"Ignore": "Ignorar",
+"Insert row before": "Inserir unha fila enriba",
+"Rows": "Filas",
+"Height": "Alto",
+"Paste row after": "Pegar fila enriba",
+"Alignment": "Ali\u00f1amento",
+"Column group": "Grupo de columnas",
+"Row": "Fila",
+"Insert column before": "Inserir columna \u00e1 esquerda",
+"Split cell": "Dividir celas",
+"Cell padding": "Marxe interior da cela",
+"Cell spacing": "Marxe entre celas",
+"Row type": "Tipo de fia",
+"Insert table": "Inserir t\u00e1boa",
+"Body": "Corpo",
+"Caption": "Subt\u00edtulo",
+"Footer": "Rodap\u00e9",
+"Delete row": "Eliminar fila",
+"Paste row before": "Pegar fila embaixo",
+"Scope": "\u00c1mbito",
+"Delete table": "Eliminar t\u00e1boa",
+"Header cell": "Cela de cabeceira",
+"Column": "Columna",
+"Cell": "Cela",
+"Header": "Cabeceira",
+"Cell type": "Tipo de cela",
+"Copy row": "Copiar fila",
+"Row properties": "Propiedades das filas",
+"Table properties": "Propiedades da t\u00e1boa",
+"Row group": "Grupo de filas",
+"Right": "Dereita",
+"Insert column after": "Inserir columna \u00e1 dereita",
+"Cols": "Cols.",
+"Insert row after": "Inserir unha fila embaixo",
+"Width": "Largo",
+"Cell properties": "Propiedades da cela",
+"Left": "Esquerda",
+"Cut row": "Cortar fila",
+"Delete column": "Eliminar columna",
+"Center": "Centro",
+"Merge cells": "Combinar celas",
+"Insert template": "Inserir modelo",
+"Templates": "Modelos",
+"Background color": "Cor do fondo",
+"Text color": "Cor do texto",
+"Show blocks": "Amosar os bloques",
+"Show invisible characters": "Amosar caracteres invis\u00edbeis",
+"Words: {0}": "Palabras: {0}",
+"Insert": "Inserir",
+"File": "Ficheiro",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto mellorado. Prema ALT-F9 para o men\u00fa. Prema ALT-F10 para a barra de ferramentas. Prema ALT-0 para a axuda",
+"Tools": "Ferramentas",
+"View": "Ver",
+"Table": "T\u00e1boa",
+"Format": "Formato"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/he_IL.js b/framework/Web/Javascripts/source/tinymce-405/langs/he_IL.js
new file mode 100755
index 00000000..b80ffc63
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/he_IL.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('he_IL',{
+"Cut": "\u05d2\u05d6\u05d5\u05e8",
+"Header 2": "\u05db\u05d5\u05ea\u05e8\u05ea 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da \u05d0\u05d9\u05e0\u05d5 \u05de\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05d9\u05e9\u05d9\u05e8\u05d4 \u05dc\u05dc\u05d5\u05d7. \u05d0\u05e0\u05d0, \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05de\u05e7\u05e9\u05d9\u05dd Ctrl+X\/C\/V ",
+"Div": "\u05de\u05e7\u05d8\u05e2 \u05e7\u05d5\u05d3 Div",
+"Paste": "\u05d4\u05d3\u05d1\u05e7",
+"Close": "\u05e1\u05d2\u05d5\u05e8",
+"Pre": "\u05e7\u05d8\u05e2 \u05de\u05e7\u05d3\u05d9\u05dd Pre",
+"Align right": "\u05d9\u05d9\u05e9\u05e8 \u05dc\u05e9\u05de\u05d0\u05dc",
+"New document": "\u05de\u05e1\u05de\u05da \u05d7\u05d3\u05e9",
+"Blockquote": "\u05de\u05e7\u05d8\u05e2 \u05e6\u05d9\u05d8\u05d5\u05d8",
+"Numbered list": "\u05e8\u05e9\u05d9\u05de\u05d4 \u05de\u05de\u05d5\u05e1\u05e4\u05e8\u05ea",
+"Increase indent": "\u05d4\u05d2\u05d3\u05dc \u05d4\u05d6\u05d7\u05d4",
+"Formats": "\u05e4\u05d5\u05e8\u05de\u05d8\u05d9\u05dd",
+"Headers": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea",
+"Select all": "\u05d1\u05d7\u05e8 \u05d4\u05db\u05dc",
+"Header 3": "\u05db\u05d5\u05ea\u05e8\u05ea 3",
+"Blocks": "\u05de\u05d1\u05e0\u05d9\u05dd",
+"Undo": "\u05d1\u05d8\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4",
+"Strikethrough": "\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4",
+"Bullet list": "\u05e8\u05e9\u05d9\u05de\u05d4 \u05de\u05d5\u05d3\u05d2\u05e9\u05ea",
+"Header 1": "\u05db\u05d5\u05ea\u05e8\u05ea 1",
+"Superscript": "\u05db\u05ea\u05d1 \u05e2\u05d9\u05dc\u05d9",
+"Clear formatting": "\u05e0\u05e7\u05d4 \u05e4\u05d5\u05e8\u05de\u05d8\u05d9\u05dd",
+"Subscript": "\u05db\u05ea\u05d1 \u05ea\u05d7\u05ea\u05d9",
+"Header 6": "\u05db\u05d5\u05ea\u05e8\u05ea 6",
+"Redo": "\u05d1\u05e6\u05e2 \u05e9\u05d5\u05d1",
+"Paragraph": "\u05e4\u05d9\u05e1\u05e7\u05d4",
+"Ok": "\u05d1\u05e1\u05d3\u05e8",
+"Bold": "\u05de\u05d5\u05d3\u05d2\u05e9",
+"Code": "\u05e7\u05d5\u05d3",
+"Italic": "\u05e0\u05d8\u05d5\u05d9",
+"Align center": "\u05de\u05e8\u05db\u05d6",
+"Header 5": "\u05db\u05d5\u05ea\u05e8\u05ea 5",
+"Decrease indent": "\u05d4\u05e7\u05d8\u05df \u05d4\u05d6\u05d7\u05d4",
+"Header 4": "\u05db\u05d5\u05ea\u05e8\u05ea 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u05d4\u05d3\u05d1\u05e7\u05d4 \u05d1\u05de\u05e6\u05d1 \u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc. \u05ea\u05db\u05e0\u05d9\u05dd \u05d9\u05d5\u05d3\u05d1\u05e7\u05d5 \u05de\u05e2\u05ea\u05d4 \u05db\u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc \u05e2\u05d3 \u05e9\u05ea\u05db\u05d1\u05d4 \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5.",
+"Underline": "\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d5\u05df",
+"Cancel": "\u05d1\u05d8\u05dc",
+"Justify": "\u05d9\u05d9\u05e9\u05d5\u05e8",
+"Inline": "\u05d1\u05d2\u05d5\u05e3 \u05d4\u05d8\u05e7\u05e1\u05d8",
+"Copy": "\u05d4\u05e2\u05ea\u05e7",
+"Align left": "\u05d9\u05d9\u05e9\u05e8 \u05dc\u05e9\u05de\u05d0\u05dc",
+"Visual aids": "\u05e2\u05d6\u05e8\u05d9\u05dd \u05d7\u05d6\u05d5\u05ea\u05d9\u05d9\u05dd",
+"Lower Greek": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d9\u05d5\u05d5\u05e0\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
+"Square": "\u05e8\u05d9\u05d1\u05d5\u05e2",
+"Default": "\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",
+"Lower Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
+"Circle": "\u05e2\u05d9\u05d2\u05d5\u05dc",
+"Disc": "\u05d7\u05d9\u05e9\u05d5\u05e7",
+"Upper Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
+"Upper Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
+"Lower Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
+"Name": "\u05e9\u05dd",
+"Anchor": "\u05de\u05e7\u05d5\u05dd \u05e2\u05d9\u05d2\u05d5\u05df",
+"You have unsaved changes are you sure you want to navigate away?": "\u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e9\u05de\u05e8\u05d5. \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e6\u05d0\u05ea \u05de\u05d4\u05d3\u05e3?",
+"Restore last draft": "\u05e9\u05d7\u05d6\u05e8 \u05d8\u05d9\u05d5\u05d8\u05d4 \u05d0\u05d7\u05e8\u05d5\u05e0\u05d4",
+"Special character": "\u05ea\u05d5\u05d5\u05d9\u05dd \u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd",
+"Source code": "\u05e7\u05d5\u05d3 \u05de\u05e7\u05d5\u05e8",
+"Right to left": "\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",
+"Left to right": "\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",
+"Emoticons": "\u05de\u05d7\u05d5\u05d5\u05ea",
+"Robots": "\u05e8\u05d5\u05d1\u05d5\u05d8\u05d9\u05dd",
+"Document properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05de\u05e1\u05de\u05da",
+"Title": "\u05db\u05d5\u05ea\u05e8\u05ea",
+"Keywords": "\u05de\u05d9\u05dc\u05d5\u05ea \u05de\u05e4\u05ea\u05d7",
+"Encoding": "\u05e7\u05d9\u05d3\u05d5\u05d3",
+"Description": "\u05ea\u05d9\u05d0\u05d5\u05e8",
+"Author": "\u05de\u05d7\u05d1\u05e8",
+"Fullscreen": "\u05de\u05e1\u05da \u05de\u05dc\u05d0",
+"Horizontal line": "\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9",
+"Horizontal space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9",
+"Insert\/edit image": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05ea\u05de\u05d5\u05e0\u05d4",
+"General": "\u05db\u05dc\u05dc\u05d9",
+"Advanced": "\u05de\u05ea\u05e7\u05d3\u05dd",
+"Source": "\u05de\u05e7\u05d5\u05e8",
+"Border": "\u05de\u05e1\u05d2\u05e8\u05ea",
+"Constrain proportions": "\u05d4\u05d2\u05d1\u05dc\u05ea \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",
+"Vertical space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9",
+"Image description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",
+"Style": "\u05e1\u05d2\u05e0\u05d5\u05df",
+"Dimensions": "\u05de\u05d9\u05de\u05d3\u05d9\u05dd",
+"Insert image": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05de\u05d5\u05e0\u05d4",
+"Insert date\/time": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d0\u05e8\u05d9\u05da\/\u05e9\u05e2\u05d4",
+"Remove link": "\u05de\u05d7\u05e7 \u05e7\u05d9\u05e9\u05d5\u05e8",
+"Url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",
+"Text to display": "\u05d8\u05e7\u05e1\u05d8 \u05dc\u05d4\u05e6\u05d2\u05d4",
+"Anchors": "\u05e2\u05d5\u05d2\u05e0\u05d9\u05dd",
+"Insert link": "\u05d4\u05db\u05e0\u05e1 \u05e7\u05d9\u05e9\u05d5\u05e8",
+"New window": "\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9",
+"None": "\u05dc\u05dc\u05d0",
+"Target": "\u05de\u05d8\u05e8\u05d4",
+"Insert\/edit link": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e7\u05d9\u05e9\u05d5\u05e8",
+"Insert\/edit video": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e1\u05e8\u05d8\u05d5\u05df",
+"Poster": "\u05e4\u05d5\u05e1\u05d8\u05e8",
+"Alternative source": "\u05de\u05e7\u05d5\u05e8 \u05de\u05e9\u05e0\u05d9",
+"Paste your embed code below:": "\u05d4\u05d3\u05d1\u05e7 \u05e7\u05d5\u05d3 \u05d4\u05d8\u05de\u05e2\u05d4 \u05de\u05ea\u05d7\u05ea:",
+"Insert video": "\u05d4\u05db\u05e0\u05e1 \u05e1\u05e8\u05d8\u05d5\u05df",
+"Embed": "\u05de\u05d5\u05d8\u05de\u05e2",
+"Nonbreaking space": "\u05e8\u05d5\u05d5\u05d7 (\u05dc\u05dc\u05d0 \u05e9\u05d1\u05d9\u05e8\u05ea \u05e9\u05d5\u05e8\u05d4)",
+"Page break": "\u05d3\u05e3 \u05d7\u05d3\u05e9",
+"Paste as text": "\u05d4\u05d3\u05d1\u05e7 \u05db\u05d8\u05e7\u05e1\u05d8",
+"Preview": "\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",
+"Print": "\u05d4\u05d3\u05e4\u05e1",
+"Save": "\u05e9\u05de\u05d9\u05e8\u05d4",
+"Could not find the specified string.": "\u05de\u05d7\u05e8\u05d5\u05d6\u05ea \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4",
+"Replace": "\u05d4\u05d7\u05dc\u05e3",
+"Next": "\u05d4\u05d1\u05d0",
+"Whole words": "\u05de\u05d9\u05dc\u05d4 \u05e9\u05dc\u05de\u05d4",
+"Find and replace": "\u05d7\u05e4\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e3",
+"Replace with": "\u05d4\u05d7\u05dc\u05e3 \u05d1",
+"Find": "\u05d7\u05e4\u05e9",
+"Replace all": "\u05d4\u05d7\u05dc\u05e3 \u05d4\u05db\u05dc",
+"Match case": "\u05d4\u05d1\u05d7\u05df \u05d1\u05d9\u05df \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea \u05dc\u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
+"Prev": "\u05e7\u05d5\u05d3\u05dd",
+"Spellcheck": "\u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea",
+"Finish": "\u05e1\u05d9\u05d9\u05dd",
+"Ignore all": "\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05db\u05dc",
+"Ignore": "\u05d4\u05ea\u05e2\u05dc\u05dd",
+"Insert row before": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
+"Rows": "\u05e9\u05d5\u05e8\u05d5\u05ea",
+"Height": "\u05d2\u05d5\u05d1\u05d4",
+"Paste row after": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
+"Alignment": "\u05d9\u05d9\u05e9\u05d5\u05e8",
+"Column group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
+"Row": "\u05e9\u05d5\u05e8\u05d4",
+"Insert column before": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05dc\u05e4\u05e0\u05d9",
+"Split cell": "\u05e4\u05e6\u05dc \u05ea\u05d0",
+"Cell padding": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e4\u05e0\u05d9\u05de\u05d9\u05d9\u05dd \u05dc\u05ea\u05d0",
+"Cell spacing": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9\u05dd \u05dc\u05ea\u05d0",
+"Row type": "\u05e1\u05d5\u05d2 \u05e9\u05d5\u05e8\u05d4",
+"Insert table": "\u05d4\u05db\u05e0\u05e1 \u05d8\u05d1\u05dc\u05d4",
+"Body": "\u05d2\u05d5\u05e3 \u05d4\u05d8\u05d1\u05dc\u05d0",
+"Caption": "\u05db\u05d9\u05ea\u05d5\u05d1",
+"Footer": "\u05db\u05d5\u05ea\u05e8\u05ea \u05ea\u05d7\u05ea\u05d5\u05e0\u05d4",
+"Delete row": "\u05de\u05d7\u05e7 \u05e9\u05d5\u05e8\u05d4",
+"Paste row before": "\u05d4\u05d3\u05d1\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
+"Scope": "\u05d4\u05d9\u05e7\u05e3",
+"Delete table": "\u05de\u05d7\u05e7 \u05d8\u05d1\u05dc\u05d4",
+"Header cell": "\u05db\u05d5\u05ea\u05e8\u05ea \u05dc\u05ea\u05d0",
+"Column": "\u05e2\u05de\u05d5\u05d3\u05d4",
+"Cell": "\u05ea\u05d0",
+"Header": "\u05db\u05d5\u05ea\u05e8\u05ea",
+"Cell type": "\u05e1\u05d5\u05d2 \u05ea\u05d0",
+"Copy row": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4",
+"Row properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e9\u05d5\u05e8\u05d4",
+"Table properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05d8\u05d1\u05dc\u05d4",
+"Row group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e9\u05d5\u05e8\u05d5\u05ea",
+"Right": "\u05d9\u05de\u05d9\u05df",
+"Insert column after": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05d0\u05d7\u05e8\u05d9",
+"Cols": "\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
+"Insert row after": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
+"Width": "\u05e8\u05d5\u05d7\u05d1",
+"Cell properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05ea\u05d0",
+"Left": "\u05e9\u05de\u05d0\u05dc",
+"Cut row": "\u05d2\u05d6\u05d5\u05e8 \u05e9\u05d5\u05e8\u05d4",
+"Delete column": "\u05de\u05d7\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4",
+"Center": "\u05de\u05e8\u05db\u05d6",
+"Merge cells": "\u05de\u05d6\u05d2 \u05ea\u05d0\u05d9\u05dd",
+"Insert template": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d1\u05e0\u05d9\u05ea",
+"Templates": "\u05ea\u05d1\u05e0\u05d9\u05d5\u05ea",
+"Background color": "\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",
+"Text color": "\u05e6\u05d1\u05e2 \u05d4\u05db\u05ea\u05d1",
+"Show blocks": "\u05d4\u05e6\u05d2 \u05ea\u05d9\u05d1\u05d5\u05ea",
+"Show invisible characters": "\u05d4\u05e6\u05d2 \u05ea\u05d5\u05d5\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e8\u05d0\u05d9\u05dd",
+"Words: {0}": "\u05de\u05d9\u05dc\u05d9\u05dd: {0}",
+"Insert": "\u05d4\u05d5\u05e1\u05e3",
+"File": "\u05e7\u05d5\u05d1\u05e5",
+"Edit": "\u05e2\u05e8\u05d5\u05da",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u05ea\u05d9\u05d1\u05ea \u05e2\u05e8\u05d9\u05db\u05d4 \u05d7\u05db\u05de\u05d4. \u05dc\u05d7\u05e5 Alt-F9 \u05dc\u05ea\u05e4\u05e8\u05d9\u05d8. Alt-F10 \u05dc\u05ea\u05e6\u05d5\u05d2\u05ea \u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd, Alt-0 \u05dc\u05e2\u05d6\u05e8\u05d4",
+"Tools": "\u05db\u05dc\u05d9\u05dd",
+"View": "\u05ea\u05e6\u05d5\u05d2\u05d4",
+"Table": "\u05d8\u05d1\u05dc\u05d4",
+"Format": "\u05e4\u05d5\u05e8\u05de\u05d8"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/hr.js b/framework/Web/Javascripts/source/tinymce-405/langs/hr.js
new file mode 100755
index 00000000..81924b36
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/hr.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('hr',{
+"Cut": "Izre\u017ei",
+"Header 2": "Zaglavlje 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 preglednik ne podr\u017eava direktan pristup me\u0111uspremniku. Molimo Vas da umjesto toga koristite tipkovni\u010dke kratice Ctrl+X\/C\/V.",
+"Div": "DIV",
+"Paste": "Zalijepi",
+"Close": "Zatvori",
+"Pre": "PRE",
+"Align right": "Poravnaj desno",
+"New document": "Novi dokument",
+"Blockquote": "BLOCKQUOTE",
+"Numbered list": "Numerirana lista",
+"Increase indent": "Pove\u0107aj uvla\u010denje",
+"Formats": "Formati",
+"Headers": "Zaglavlja",
+"Select all": "Ozna\u010di sve",
+"Header 3": "Zaglavlje 3",
+"Blocks": "Blokovi",
+"Undo": "Poni\u0161ti",
+"Strikethrough": "Crta kroz sredinu",
+"Bullet list": "Lista",
+"Header 1": "Zaglavlje 1",
+"Superscript": "Natpis",
+"Clear formatting": "Ukloni oblikovanje",
+"Subscript": "Potpis",
+"Header 6": "Zaglavlje 6",
+"Redo": "Vrati",
+"Paragraph": "Paragraf",
+"Ok": "Uredu",
+"Bold": "Masna",
+"Code": "CODE oznaka",
+"Italic": "Kurziv",
+"Align center": "Poravnaj po sredini",
+"Header 5": "Zaglavlje 5",
+"Decrease indent": "Smanji uvla\u010denje",
+"Header 4": "Zaglavlje 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Akcija zalijepi od sada lijepi \u010disti tekst. Sadr\u017eaj \u0107e biti zaljepljen kao \u010disti tekst sve dok ne isklju\u010dite ovu opciju.",
+"Underline": "Crta ispod",
+"Cancel": "Odustani",
+"Justify": "Obostrano poravnanje",
+"Inline": "Unutarnje",
+"Copy": "Kopiraj",
+"Align left": "Poravnaj lijevo",
+"Visual aids": "Vizualna pomo\u0107",
+"Lower Greek": "Mala gr\u010dka slova",
+"Square": "Kvadrat",
+"Default": "Zadano",
+"Lower Alpha": "Mala slova",
+"Circle": "Krug",
+"Disc": "To\u010dka",
+"Upper Alpha": "Velika slova",
+"Upper Roman": "Velika rimska slova",
+"Lower Roman": "Mala rimska slova",
+"Name": "Ime",
+"Anchor": "Sidro",
+"You have unsaved changes are you sure you want to navigate away?": "Postoje ne pohranjene izmjene, jeste li sigurni da \u017eelite oti\u0107i?",
+"Restore last draft": "Vrati posljednju skicu",
+"Special character": "Poseban znak",
+"Source code": "Izvorni kod",
+"Right to left": "S desna na lijevo",
+"Left to right": "S lijeva na desno",
+"Emoticons": "Emotikoni",
+"Robots": "Roboti pretra\u017eiva\u010da",
+"Document properties": "Svojstva dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne rije\u010di",
+"Encoding": "Kodna stranica",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Cijeli ekran",
+"Horizontal line": "Horizontalna linija",
+"Horizontal space": "Horizontalan razmak",
+"Insert\/edit image": "Umetni\/izmijeni sliku",
+"General": "Op\u0107enito",
+"Advanced": "Napredno",
+"Source": "Izvor",
+"Border": "Rub",
+"Constrain proportions": "Zadr\u017ei proporcije",
+"Vertical space": "Okomit razmak",
+"Image description": "Opis slike",
+"Style": "Stil",
+"Dimensions": "Dimenzije",
+"Insert image": "Umetni sliku",
+"Insert date\/time": "Umetni datum\/vrijeme",
+"Remove link": "Ukloni poveznicu",
+"Url": "Url",
+"Text to display": "Tekst za prikaz",
+"Anchors": "Kra\u0107e poveznice",
+"Insert link": "Umetni poveznicu",
+"New window": "Novi prozor",
+"None": "Ni\u0161ta",
+"Target": "Meta",
+"Insert\/edit link": "Umetni\/izmijeni poveznicu",
+"Insert\/edit video": "Umetni\/izmijeni video",
+"Poster": "Poster",
+"Alternative source": "Alternativni izvor",
+"Paste your embed code below:": "Umetnite va\u0161 kod za ugradnju ispod:",
+"Insert video": "Umetni video",
+"Embed": "Ugradi",
+"Nonbreaking space": "Neprekidaju\u0107i razmak",
+"Page break": "Prijelom stranice",
+"Paste as text": "Zalijepi kao tekst",
+"Preview": "Pregled",
+"Print": "Ispis",
+"Save": "Spremi",
+"Could not find the specified string.": "Tra\u017eeni tekst nije prona\u0111en",
+"Replace": "Zamijeni",
+"Next": "Slijede\u0107i",
+"Whole words": "Cijele rije\u010di",
+"Find and replace": "Prona\u0111i i zamijeni",
+"Replace with": "Zamijeni s",
+"Find": "Tra\u017ei",
+"Replace all": "Zamijeni sve",
+"Match case": "Pazi na mala i velika slova",
+"Prev": "Prethodni",
+"Spellcheck": "Provjeri pravopis",
+"Finish": "Zavr\u0161i",
+"Ignore all": "Zanemari sve",
+"Ignore": "Zanemari",
+"Insert row before": "Umetni redak prije",
+"Rows": "Redci",
+"Height": "Visina",
+"Paste row after": "Zalijepi redak nakon",
+"Alignment": "Poravnanje",
+"Column group": "Grupirani stupci",
+"Row": "Redak",
+"Insert column before": "Umetni stupac prije",
+"Split cell": "Razdvoji polja",
+"Cell padding": "Razmak unutar polja",
+"Cell spacing": "Razmak izme\u0111u polja",
+"Row type": "Vrsta redka",
+"Insert table": "Umetni tablicu",
+"Body": "Sadr\u017eaj",
+"Caption": "Natpis",
+"Footer": "Podno\u017eje",
+"Delete row": "Izbri\u0161i redak",
+"Paste row before": "Zalijepi redak prije",
+"Scope": "Doseg",
+"Delete table": "Izbri\u0161i tablicu",
+"Header cell": "Polje zaglavlja",
+"Column": "Stupac",
+"Cell": "Polje",
+"Header": "Zaglavlje",
+"Cell type": "Vrsta polja",
+"Copy row": "Kopiraj redak",
+"Row properties": "Svojstva redka",
+"Table properties": "Svojstva tablice",
+"Row group": "Grupirani redci",
+"Right": "Desno",
+"Insert column after": "Umetni stupac nakon",
+"Cols": "Stupci",
+"Insert row after": "Umetni redak nakon",
+"Width": "\u0160irina",
+"Cell properties": "Svojstva polja",
+"Left": "Lijevo",
+"Cut row": "Izre\u017ei redak",
+"Delete column": "Izbri\u0161i stupac",
+"Center": "Sredina",
+"Merge cells": "Spoji polja",
+"Insert template": "Umetni predlo\u017eak",
+"Templates": "Predlo\u0161ci",
+"Background color": "Boja pozadine",
+"Text color": "Boja teksta",
+"Show blocks": "Prika\u017ei blokove",
+"Show invisible characters": "Prika\u017ei nevidljive znakove",
+"Words: {0}": "Rije\u010di: {0}",
+"Insert": "Umetni",
+"File": "Datoteka",
+"Edit": "Izmijeni",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Pritisni ALT-F9 za izbornik. Pritisni ALT-F10 za alatnu traku. Pritisni ALT-0 za pomo\u0107",
+"Tools": "Alati",
+"View": "Pogled",
+"Table": "Tablica",
+"Format": "Oblikuj"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/hu_HU.js b/framework/Web/Javascripts/source/tinymce-405/langs/hu_HU.js
new file mode 100755
index 00000000..e3705cae
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/hu_HU.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('hu_HU',{
+"Cut": "Kiv\u00e1g\u00e1s",
+"Header 2": "C\u00edmsor 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "A b\u00f6ng\u00e9sz\u0151d nem t\u00e1mogatja a k\u00f6zvetlen hozz\u00e1f\u00e9r\u00e9st a v\u00e1g\u00f3laphoz. K\u00e9rlek haszn\u00e1ld a Ctrl+X\/C\/V billenty\u0171ket.",
+"Div": "Div",
+"Paste": "Beilleszt\u00e9s",
+"Close": "Bez\u00e1r",
+"Pre": "El\u0151",
+"Align right": "Jobbra igaz\u00edt",
+"New document": "\u00daj dokumentum",
+"Blockquote": "Id\u00e9zetblokk",
+"Numbered list": "Sz\u00e1moz\u00e1s",
+"Increase indent": "Beh\u00faz\u00e1s n\u00f6vel\u00e9se",
+"Formats": "Form\u00e1tumok",
+"Headers": "C\u00edmsorok",
+"Select all": "Minden kijel\u00f6l\u00e9se",
+"Header 3": "C\u00edmsor 3",
+"Blocks": "Blokkok",
+"Undo": "Visszavon\u00e1s",
+"Strikethrough": "\u00c1th\u00fazott",
+"Bullet list": "Felsorol\u00e1s",
+"Header 1": "C\u00edmsor 1",
+"Superscript": "Fels\u0151 index",
+"Clear formatting": "Form\u00e1z\u00e1s t\u00f6rl\u00e9se",
+"Subscript": "Als\u00f3 index",
+"Header 6": "C\u00edmsor 6",
+"Redo": "Ism\u00e9t",
+"Paragraph": "Bekezd\u00e9s",
+"Ok": "Rendben",
+"Bold": "F\u00e9lk\u00f6v\u00e9r",
+"Code": "K\u00f3d",
+"Italic": "D\u0151lt",
+"Align center": "K\u00f6z\u00e9pre z\u00e1r",
+"Header 5": "C\u00edmsor 5",
+"Decrease indent": "Beh\u00faz\u00e1s cs\u00f6kkent\u00e9se",
+"Header 4": "C\u00edmsor 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Beilleszt\u00e9s mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban. A tartalmak mostant\u00f3l egyszer\u0171 sz\u00f6vegk\u00e9nt lesznek beillesztve, am\u00edg nem kapcsolod ki ezt az opci\u00f3t.",
+"Underline": "Al\u00e1h\u00fazott",
+"Cancel": "M\u00e9gse",
+"Justify": "Sorkiz\u00e1r\u00e1s",
+"Inline": "Vonalon bel\u00fcl",
+"Copy": "M\u00e1sol\u00e1s",
+"Align left": "Balra igaz\u00edt",
+"Visual aids": "Vizu\u00e1lis seg\u00e9deszk\u00f6z\u00f6k",
+"Lower Greek": "Kis g\u00f6r\u00f6g sz\u00e1m",
+"Square": "N\u00e9gyzet",
+"Default": "Alap\u00e9rtelmezett",
+"Lower Alpha": "Kisbet\u0171",
+"Circle": "K\u00f6r",
+"Disc": "Pont",
+"Upper Alpha": "Nagybet\u0171",
+"Upper Roman": "Nagy r\u00f3mai sz\u00e1m",
+"Lower Roman": "Kis r\u00f3mai sz\u00e1m",
+"Name": "N\u00e9v",
+"Anchor": "Horgony",
+"You have unsaved changes are you sure you want to navigate away?": "Nem mentett m\u00f3dos\u00edt\u00e1said vannak, biztos hogy el akarsz navig\u00e1lni?",
+"Restore last draft": "Utols\u00f3 piszkozat vissza\u00e1ll\u00edt\u00e1sa",
+"Special character": "Speci\u00e1lis karakter",
+"Source code": "Forr\u00e1sk\u00f3d",
+"Right to left": "Jobbr\u00f3l balra",
+"Left to right": "Balr\u00f3l jobbra",
+"Emoticons": "Mosolyok",
+"Robots": "Robotok",
+"Document properties": "Dokumentum tulajdons\u00e1gai",
+"Title": "C\u00edm",
+"Keywords": "Kulcsszavak",
+"Encoding": "K\u00f3dol\u00e1s",
+"Description": "Le\u00edr\u00e1s",
+"Author": "Szerz\u0151",
+"Fullscreen": "Teljes k\u00e9perny\u0151",
+"Horizontal line": "V\u00edzszintes vonal",
+"Horizontal space": "Horizont\u00e1lis hely",
+"Insert\/edit image": "K\u00e9p beilleszt\u00e9se\/szerkeszt\u00e9se",
+"General": "\u00c1ltal\u00e1nos",
+"Advanced": "Halad\u00f3",
+"Source": "Forr\u00e1s",
+"Border": "Szeg\u00e9ly",
+"Constrain proportions": "M\u00e9retar\u00e1ny",
+"Vertical space": "Vertik\u00e1lis hely",
+"Image description": "K\u00e9p le\u00edr\u00e1sa",
+"Style": "St\u00edlus",
+"Dimensions": "M\u00e9retek",
+"Insert image": "K\u00e9p besz\u00far\u00e1sa",
+"Insert date\/time": "D\u00e1tum\/id\u0151 beilleszt\u00e9se",
+"Remove link": "Hivatkoz\u00e1s t\u00f6rl\u00e9se",
+"Url": "Url",
+"Text to display": "Megjelen\u0151 sz\u00f6veg",
+"Anchors": "Horgonyok",
+"Insert link": "Link beilleszt\u00e9se",
+"New window": "\u00daj ablak",
+"None": "Nincs",
+"Target": "C\u00e9l",
+"Insert\/edit link": "Link beilleszt\u00e9se\/szerkeszt\u00e9se",
+"Insert\/edit video": "Vide\u00f3 beilleszt\u00e9se\/szerkeszt\u00e9se",
+"Poster": "El\u0151n\u00e9zeti k\u00e9p",
+"Alternative source": "Alternat\u00edv forr\u00e1s",
+"Paste your embed code below:": "Illeszd be a be\u00e1gyaz\u00f3 k\u00f3dot alulra:",
+"Insert video": "Vide\u00f3 beilleszt\u00e9se",
+"Embed": "Be\u00e1gyaz",
+"Nonbreaking space": "Nem t\u00f6rhet\u0151 hely",
+"Page break": "Oldalt\u00f6r\u00e9s",
+"Paste as text": "Beilleszt\u00e9s sz\u00f6vegk\u00e9nt",
+"Preview": "El\u0151n\u00e9zet",
+"Print": "Nyomtat\u00e1s",
+"Save": "Ment\u00e9s",
+"Could not find the specified string.": "A be\u00edrt kifejez\u00e9s nem tal\u00e1lhat\u00f3.",
+"Replace": "Csere",
+"Next": "K\u00f6vetkez\u0151",
+"Whole words": "Csak ha ez a teljes sz\u00f3",
+"Find and replace": "Keres\u00e9s \u00e9s csere",
+"Replace with": "Csere erre",
+"Find": "Keres\u00e9s",
+"Replace all": "Az \u00f6sszes cser\u00e9je",
+"Match case": "Teljes egyez\u00e9s",
+"Prev": "El\u0151z\u0151",
+"Spellcheck": "Helyes\u00edr\u00e1s ellen\u0151rz\u00e9s",
+"Finish": "Befejez\u00e9s",
+"Ignore all": "Mindent figyelmen k\u00edv\u00fcl hagy",
+"Ignore": "Figyelmen k\u00edv\u00fcl hagy",
+"Insert row before": "Sor besz\u00far\u00e1sa el\u00e9",
+"Rows": "Sorok",
+"Height": "Magass\u00e1g",
+"Paste row after": "Sor beilleszt\u00e9se m\u00f6g\u00e9",
+"Alignment": "Igaz\u00edt\u00e1s",
+"Column group": "Oszlop csoport",
+"Row": "Sor",
+"Insert column before": "Oszlop besz\u00far\u00e1sa el\u00e9",
+"Split cell": "Cell\u00e1k sz\u00e9tv\u00e1laszt\u00e1sa",
+"Cell padding": "Cella m\u00e9rete",
+"Cell spacing": "Cell\u00e1k t\u00e1vols\u00e1ga",
+"Row type": "Sor t\u00edpus",
+"Insert table": "T\u00e1bl\u00e1zat beilleszt\u00e9se",
+"Body": "Sz\u00f6vegt\u00f6rzs",
+"Caption": "Felirat",
+"Footer": "L\u00e1bl\u00e9c",
+"Delete row": "Sor t\u00f6rl\u00e9se",
+"Paste row before": "Sor beilleszt\u00e9se el\u00e9",
+"Scope": "Hat\u00f3k\u00f6r",
+"Delete table": "T\u00e1bl\u00e1zat t\u00f6rl\u00e9se",
+"Header cell": "Fejl\u00e9c cella",
+"Column": "Oszlop",
+"Cell": "Cella",
+"Header": "Fejl\u00e9c",
+"Cell type": "Cella t\u00edpusa",
+"Copy row": "Sor m\u00e1sol\u00e1sa",
+"Row properties": "Sor tulajdons\u00e1gai",
+"Table properties": "T\u00e1bl\u00e1zat tulajdons\u00e1gok",
+"Row group": "Sor csoport",
+"Right": "Jobb",
+"Insert column after": "Oszlop besz\u00far\u00e1sa m\u00f6g\u00e9",
+"Cols": "Oszlopok",
+"Insert row after": "Sor besz\u00far\u00e1sa m\u00f6g\u00e9",
+"Width": "Sz\u00e9less\u00e9g",
+"Cell properties": "Cella tulajdons\u00e1gok",
+"Left": "Bal",
+"Cut row": "Sor kiv\u00e1g\u00e1sa",
+"Delete column": "Oszlop t\u00f6rl\u00e9se",
+"Center": "K\u00f6z\u00e9p",
+"Merge cells": "Cell\u00e1k egyes\u00edt\u00e9se",
+"Insert template": "Sablon beilleszt\u00e9se",
+"Templates": "Sablonok",
+"Background color": "H\u00e1tt\u00e9r sz\u00edn",
+"Text color": "Sz\u00f6veg sz\u00edne",
+"Show blocks": "Blokkok mutat\u00e1sa",
+"Show invisible characters": "L\u00e1thatatlan karakterek mutat\u00e1sa",
+"Words: {0}": "Szavak: {0}",
+"Insert": "Beilleszt\u00e9s",
+"File": "F\u00e1jl",
+"Edit": "Szerkeszt\u00e9s",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text ter\u00fclet. Nyomj ALT-F9-et a men\u00fch\u00f6z. Nyomj ALT-F10-et az eszk\u00f6zt\u00e1rhoz. Nyomj ALT-0-t a s\u00fag\u00f3hoz",
+"Tools": "Eszk\u00f6z\u00f6k",
+"View": "N\u00e9zet",
+"Table": "T\u00e1bl\u00e1zat",
+"Format": "Form\u00e1tum"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/id.js b/framework/Web/Javascripts/source/tinymce-405/langs/id.js
new file mode 100755
index 00000000..c62179c4
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/id.js
@@ -0,0 +1,71 @@
+tinymce.addI18n('id',{
+"Cut": "Penggal",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Browser anda tidak mendukung akses langsung ke clipboard. Silahkan gunakan Ctrl+X\/C\/V dari keyboard.",
+"Div": "Div",
+"Paste": "Tempel",
+"Close": "Tutup",
+"Pre": "Pre",
+"Align right": "Rata kanan",
+"New document": "Dokumen baru",
+"Blockquote": "Kutipan",
+"Numbered list": "list nomor",
+"Increase indent": "Tambah inden",
+"Formats": "Format",
+"Headers": "Header",
+"Select all": "Pilih semua",
+"Header 3": "Header 3",
+"Blocks": "Blok",
+"Undo": "Batal",
+"Strikethrough": "Coret",
+"Bullet list": "list simbol",
+"Header 1": "Header 1",
+"Superscript": "Superskrip",
+"Clear formatting": "Hapus format",
+"Subscript": "Subskrip",
+"Header 6": "Header 6",
+"Redo": "Ulang",
+"Paragraph": "Paragraf",
+"Ok": "Ok",
+"Bold": "Tebal",
+"Code": "Code",
+"Italic": "Miring",
+"Align center": "Rate tengah",
+"Header 5": "Header 5",
+"Decrease indent": "Turunkan inden",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Aksi 'Tempel' sekarang ini dalam mode text. Konten akan 'ditempelkan' sebagai 'Plain Text' hingga anda mematikan opsi ini.",
+"Underline": "Garis bawah",
+"Cancel": "Batal",
+"Justify": "Justifi",
+"Inline": "Inline",
+"Copy": "Salin",
+"Align left": "Rate kiri",
+"Visual aids": "Alat bantu visual",
+"Lower Greek": "Lower Yunani",
+"Square": "Kotak",
+"Default": "Bawaan",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Lingkaran",
+"Disc": "Cakram",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Nama",
+"Anchor": "Anjar",
+"You have unsaved changes are you sure you want to navigate away?": "Anda memiliki perubahan yang belum disimpan, yakin ingin beralih ?",
+"Restore last draft": "Muat kembali draft sebelumnya",
+"Special character": "Spesial karakter",
+"Source code": "Kode sumber",
+"Right to left": "Kanan ke kiri",
+"Left to right": "Kiri ke kanan",
+"Emoticons": "Emotikon",
+"Robots": "Robot",
+"Document properties": "Properti dokumwn",
+"Title": "Judul",
+"Keywords": "Kata kunci",
+"Encoding": "Enkoding",
+"Description": "Deskripsi",
+"Author": "Penulis",
+"Fullscreen": "Layar penuh"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/it.js b/framework/Web/Javascripts/source/tinymce-405/langs/it.js
new file mode 100755
index 00000000..90a34df2
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/it.js
@@ -0,0 +1,174 @@
+tinymce.addI18n('it',{
+"Cut": "Taglia",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il tuo browser non supporta l'accesso diretto negli Appunti. Per favore usa i tasti di scelta rapida Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "Incolla",
+"Close": "Chiudi",
+"Pre": "Pre",
+"Align right": "Allinea a Destra",
+"New document": "Nuovo Documento",
+"Blockquote": "Blockquote",
+"Numbered list": "Elenchi Numerati",
+"Increase indent": "Aumenta Rientro",
+"Formats": "Formattazioni",
+"Headers": "Intestazioni",
+"Select all": "Seleziona Tutto",
+"Header 3": "Intestazione 3",
+"Blocks": "Blocchi",
+"Undo": "Indietro",
+"Strikethrough": "Barrato",
+"Bullet list": "Elenchi Puntati",
+"Header 1": "Intestazione 1",
+"Superscript": "Apice",
+"Clear formatting": "Cancella Formattazione",
+"Subscript": "Pedice",
+"Header 6": "Intestazione 6",
+"Redo": "Ripeti",
+"Paragraph": "Paragrafo",
+"Ok": "Ok",
+"Bold": "Grassetto",
+"Code": "Codice",
+"Italic": "Corsivo",
+"Align center": "Allinea al Cento",
+"Header 5": "Intestazione 5",
+"Decrease indent": "Riduci Rientro",
+"Header 4": "Intestazione 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Incolla \u00e8 in modalit\u00e0 testo normale. I contenuti sono incollati come testo normale se non disattivi l'opzione.",
+"Underline": "Sottolineato",
+"Cancel": "Cancella",
+"Justify": "Giustifica",
+"Inline": "Inlinea",
+"Copy": "Copia",
+"Align left": "Allinea a Sinistra",
+"Visual aids": "Elementi Visivi",
+"Lower Greek": "Greek Minore",
+"Square": "Quadrato",
+"Default": "Default",
+"Lower Alpha": "Alpha Minore",
+"Circle": "Cerchio",
+"Disc": "Disco",
+"Upper Alpha": "Alpha Superiore",
+"Upper Roman": "Roman Superiore",
+"Lower Roman": "Roman Minore",
+"Name": "Nome",
+"Anchor": "Fissa",
+"You have unsaved changes are you sure you want to navigate away?": "Non hai salvato delle modifiche, sei sicuro di andartene?",
+"Restore last draft": "Ripristina l'ultima bozza.",
+"Special character": "Carattere Speciale",
+"Source code": "Codice Sorgente",
+"Right to left": "Da Destra a Sinistra",
+"Left to right": "Da Sinistra a Destra",
+"Emoticons": "Emoction",
+"Robots": "Robot",
+"Document properties": "Propriet\u00e0 Documento",
+"Title": "Titolo",
+"Keywords": "Parola Chiave",
+"Encoding": "Codifica",
+"Description": "Descrizione",
+"Author": "Autore",
+"Fullscreen": "Schermo Intero",
+"Horizontal line": "Linea Orizzontale",
+"Horizontal space": "Spazio Orizzontale",
+"Insert\/edit image": "Aggiungi\/Modifica Immagine",
+"General": "Generale",
+"Advanced": "Avanzato",
+"Source": "Fonte",
+"Border": "Bordo",
+"Constrain proportions": "Mantieni Proporzioni",
+"Vertical space": "Spazio Verticale",
+"Image description": "Descrizione Immagine",
+"Style": "Stile",
+"Dimensions": "Dimenzioni",
+"Insert image": "Inserisci immagine",
+"Insert date\/time": "Inserisci Data\/Ora",
+"Remove link": "Rimuovi link",
+"Url": "Url",
+"Text to display": "Testo da Visualizzare",
+"Anchors": "Anchors",
+"Insert link": "Inserisci il Link",
+"New window": "Nuova Finestra",
+"None": "No",
+"Target": "Target",
+"Insert\/edit link": "Inserisci\/Modifica Link",
+"Insert\/edit video": "Inserisci\/Modifica Video",
+"Poster": "Anteprima",
+"Alternative source": "Alternativo",
+"Paste your embed code below:": "Incolla il codice d'incorporamento qui:",
+"Insert video": "Inserisci Video",
+"Embed": "Incorporare",
+"Nonbreaking space": "Spazio unificatore",
+"Paste as text": "incolla come testo",
+"Preview": "Anteprima",
+"Print": "Stampa",
+"Save": "Salva",
+"Could not find the specified string.": "Impossibile trovare la parola specifica.",
+"Replace": "Sostituisci",
+"Next": "Successivo",
+"Whole words": "Parole Sbagliate",
+"Find and replace": "Trova e Sostituisci",
+"Replace with": "Sostituisci Con",
+"Find": "Trova",
+"Replace all": "Sostituisci Tutto",
+"Match case": "Maiuscole\/Minuscole ",
+"Prev": "Precedente",
+"Spellcheck": "Controllo ortografico",
+"Finish": "Termina",
+"Ignore all": "Ignora Tutto",
+"Ignore": "Ignora",
+"Insert row before": "Inserisci una Riga Prima",
+"Rows": "Righe",
+"Height": "Altezza",
+"Paste row after": "Incolla una Riga Dopo",
+"Alignment": "Allineamento",
+"Column group": "Gruppo di Colonne",
+"Row": "Riga",
+"Insert column before": "Inserisci una Colonna Prima",
+"Split cell": "Dividi Cella",
+"Cell padding": "Padding della Cella",
+"Cell spacing": "Spaziatura della Cella",
+"Row type": "Tipo di Riga",
+"Insert table": "Inserisci Tabella",
+"Body": "Body",
+"Caption": "Didascalia",
+"Footer": "Footer",
+"Delete row": "Cancella Riga",
+"Paste row before": "Incolla una Riga Prima",
+"Scope": "Campo",
+"Delete table": "Cancella Tabella",
+"Header cell": "cella d'intestazione",
+"Column": "Colonna",
+"Cell": "Cella",
+"Header": "Header",
+"Cell type": "Tipo di Cella",
+"Copy row": "Copia Riga",
+"Row properties": "Propriet\u00e0 della Riga",
+"Table properties": "Propiet\u00e0 della Tabella",
+"Row group": "Gruppo di Righe",
+"Right": "Destra",
+"Insert column after": "Inserisci una Colonna Dopo",
+"Cols": "Colonne",
+"Insert row after": "Inserisci una Riga Dopo",
+"Width": "Larghezza",
+"Cell properties": "Propiet\u00e0 della Cella",
+"Left": "Sinistra",
+"Cut row": "Taglia Riga",
+"Delete column": "Cancella Colonna",
+"Center": "Centro",
+"Merge cells": "Unisci Cella",
+"Insert template": "Inserisci Template",
+"Templates": "Template",
+"Background color": "Colore Background",
+"Text color": "Colore Testo",
+"Show blocks": "Mostra Blocchi",
+"Show invisible characters": "Mostra Caratteri Invisibili",
+"Words: {0}": "Parole: {0}",
+"Insert": "Inserisci",
+"File": "File",
+"Edit": "Modifica",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Premi ALT-F9 per il men\u00f9. Premi ALT-F10 per la barra degli strumenti. Premi ALT-0 per l'aiuto.",
+"Tools": "Strumenti",
+"View": "Visualiza",
+"Table": "Tabella",
+"Format": "Formato"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ja.js b/framework/Web/Javascripts/source/tinymce-405/langs/ja.js
new file mode 100755
index 00000000..75a23c3b
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ja.js
@@ -0,0 +1,174 @@
+tinymce.addI18n('ja',{
+"Cut": "\u5207\u308a\u53d6\u308a",
+"Header 2": "\u30d8\u30c3\u30c0\u30fc 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\uff08Ctrl+X, Ctrl+C, Ctrl+V\uff09\u3092\u304a\u4f7f\u3044\u4e0b\u3055\u3044\u3002",
+"Div": "Div",
+"Paste": "\u8cbc\u308a\u4ed8\u3051",
+"Close": "\u9589\u3058\u308b",
+"Pre": "Pre",
+"Align right": "\u53f3\u5bc4\u305b",
+"New document": "\u65b0\u898f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",
+"Blockquote": "Blockquote",
+"Numbered list": "\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d",
+"Increase indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059",
+"Formats": "\u66f8\u5f0f",
+"Headers": "\u30d8\u30c3\u30c0\u30fc",
+"Select all": "\u5168\u3066\u3092\u9078\u629e",
+"Header 3": "\u30d8\u30c3\u30c0\u30fc 3",
+"Blocks": "\u30d6\u30ed\u30c3\u30af",
+"Undo": "\u5143\u306b\u623b\u3059",
+"Strikethrough": "\u53d6\u308a\u6d88\u3057\u7dda",
+"Bullet list": "\u7b87\u6761\u66f8\u304d",
+"Header 1": "\u30d8\u30c3\u30c0\u30fc 1",
+"Superscript": "\u4e0a\u4ed8\u304d\u6587\u5b57",
+"Clear formatting": "\u66f8\u5f0f\u3092\u30af\u30ea\u30a2",
+"Subscript": "\u4e0b\u4ed8\u304d\u6587\u5b57",
+"Header 6": "\u30d8\u30c3\u30c0\u30fc 6",
+"Redo": "\u3084\u308a\u76f4\u3059",
+"Paragraph": "\u6bb5\u843d",
+"Ok": "OK",
+"Bold": "\u592a\u5b57",
+"Code": "\u30b3\u30fc\u30c9",
+"Italic": "\u659c\u4f53",
+"Align center": "\u4e2d\u592e\u63c3\u3048",
+"Header 5": "\u30d8\u30c3\u30c0\u30fc 5",
+"Decrease indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059",
+"Header 4": "\u30d8\u30c3\u30c0\u30fc 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u8cbc\u308a\u4ed8\u3051\u306f\u73fe\u5728\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u3067\u3059\u3002\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30aa\u30d5\u306b\u3057\u306a\u3044\u9650\u308a\u5185\u5bb9\u306f\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002",
+"Underline": "\u4e0b\u7dda",
+"Cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb",
+"Justify": "\u4e21\u7aef\u63c3\u3048",
+"Inline": "\u30a4\u30f3\u30e9\u30a4\u30f3",
+"Copy": "\u30b3\u30d4\u30fc",
+"Align left": "\u5de6\u5bc4\u305b",
+"Visual aids": "\u8868\u306e\u67a0\u7dda\u3092\u70b9\u7dda\u3067\u8868\u793a",
+"Lower Greek": "\u5c0f\u6587\u5b57\u306e\u30ae\u30ea\u30b7\u30e3\u6587\u5b57",
+"Square": "\u56db\u89d2",
+"Default": "\u30c7\u30d5\u30a9\u30eb\u30c8",
+"Lower Alpha": "\u5c0f\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
+"Circle": "\u5186",
+"Disc": "\u70b9",
+"Upper Alpha": "\u5927\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
+"Upper Roman": "\u5927\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
+"Lower Roman": "\u5c0f\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
+"Name": "\u30a2\u30f3\u30ab\u30fc\u540d",
+"Anchor": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
+"You have unsaved changes are you sure you want to navigate away?": "\u307e\u3060\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5909\u66f4\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u672c\u5f53\u306b\u3053\u306e\u30da\u30fc\u30b8\u3092\u96e2\u308c\u307e\u3059\u304b\uff1f",
+"Restore last draft": "\u524d\u56de\u306e\u4e0b\u66f8\u304d\u3092\u5fa9\u6d3b\u3055\u305b\u308b",
+"Special character": "\u7279\u6b8a\u6587\u5b57",
+"Source code": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9",
+"Right to left": "\u53f3\u304b\u3089\u5de6",
+"Left to right": "\u5de6\u304b\u3089\u53f3",
+"Emoticons": "\u7d75\u6587\u5b57",
+"Robots": "\u30ed\u30dc\u30c3\u30c8",
+"Document properties": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3",
+"Title": "\u30bf\u30a4\u30c8\u30eb",
+"Keywords": "\u30ad\u30fc\u30ef\u30fc\u30c9",
+"Encoding": "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",
+"Description": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5185\u5bb9",
+"Author": "\u8457\u8005",
+"Fullscreen": "\u5168\u753b\u9762\u8868\u793a",
+"Horizontal line": "\u6c34\u5e73\u7f6b\u7dda",
+"Horizontal space": "\u6a2a\u65b9\u5411\u306e\u4f59\u767d",
+"Insert\/edit image": "\u753b\u50cf\u306e\u633f\u5165\u30fb\u7de8\u96c6",
+"General": "\u4e00\u822c",
+"Advanced": "\u8a73\u7d30\u8a2d\u5b9a",
+"Source": "\u753b\u50cf\u306e\u30bd\u30fc\u30b9",
+"Border": "\u67a0\u7dda",
+"Constrain proportions": "\u7e26\u6a2a\u6bd4\u3092\u4fdd\u6301\u3059\u308b",
+"Vertical space": "\u7e26\u65b9\u5411\u306e\u4f59\u767d",
+"Image description": "\u753b\u50cf\u306e\u8aac\u660e\u6587",
+"Style": "\u30b9\u30bf\u30a4\u30eb",
+"Dimensions": "\u753b\u50cf\u30b5\u30a4\u30ba\uff08\u6a2a\u30fb\u7e26\uff09",
+"Insert image": "\u753b\u50cf\u306e\u633f\u5165",
+"Insert date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b",
+"Remove link": "\u30ea\u30f3\u30af\u306e\u524a\u9664",
+"Url": "\u30ea\u30f3\u30af\u5148URL",
+"Text to display": "\u30ea\u30f3\u30af\u5143\u30c6\u30ad\u30b9\u30c8",
+"Anchors": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
+"Insert link": "\u30ea\u30f3\u30af",
+"New window": "\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6",
+"None": "\u306a\u3057",
+"Target": "\u30bf\u30fc\u30b2\u30c3\u30c8\u5c5e\u6027",
+"Insert\/edit link": "\u30ea\u30f3\u30af\u306e\u633f\u5165\u30fb\u7de8\u96c6",
+"Insert\/edit video": "\u52d5\u753b\u306e\u633f\u5165\u30fb\u7de8\u96c6",
+"Poster": "\u4ee3\u66ff\u753b\u50cf\u306e\u5834\u6240",
+"Alternative source": "\u4ee3\u66ff\u52d5\u753b\u306e\u5834\u6240",
+"Paste your embed code below:": "\u57cb\u3081\u8fbc\u307f\u7528\u30b3\u30fc\u30c9\u3092\u4e0b\u8a18\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002",
+"Insert video": "\u52d5\u753b",
+"Embed": "\u57cb\u3081\u8fbc\u307f",
+"Nonbreaking space": "\u56fa\u5b9a\u30b9\u30da\u30fc\u30b9\uff08&nbsp;\uff09",
+"Page break": "\u30da\u30fc\u30b8\u533a\u5207\u308a",
+"Preview": "\u30d7\u30ec\u30d3\u30e5\u30fc",
+"Print": "\u5370\u5237",
+"Save": "\u4fdd\u5b58",
+"Could not find the specified string.": "\u304a\u63a2\u3057\u306e\u6587\u5b57\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
+"Replace": "\u7f6e\u304d\u63db\u3048",
+"Next": "\u6b21",
+"Whole words": "\u5358\u8a9e\u5358\u4f4d\u3067\u691c\u7d22\u3059\u308b",
+"Find and replace": "\u691c\u7d22\u3068\u7f6e\u304d\u63db\u3048",
+"Replace with": "\u7f6e\u304d\u63db\u3048",
+"Find": "\u691c\u7d22\u3059\u308b\u6587\u5b57",
+"Replace all": "\u5168\u3066\u3092\u7f6e\u304d\u63db\u3048\u308b",
+"Match case": "\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b",
+"Prev": "\u524d",
+"Spellcheck": "\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af",
+"Finish": "\u7d42\u4e86",
+"Ignore all": "\u5168\u3066\u3092\u7121\u8996",
+"Ignore": "\u7121\u8996",
+"Insert row before": "\u4e0a\u5074\u306b\u884c\u3092\u633f\u5165",
+"Rows": "\u884c\u6570",
+"Height": "\u9ad8\u3055",
+"Paste row after": "\u4e0b\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
+"Alignment": "\u914d\u7f6e",
+"Column group": "\u5217\u30b0\u30eb\u30fc\u30d7",
+"Row": "\u884c",
+"Insert column before": "\u5de6\u5074\u306b\u5217\u3092\u633f\u5165",
+"Split cell": "\u30bb\u30eb\u306e\u5206\u5272",
+"Cell padding": "\u30bb\u30eb\u5185\u4f59\u767d\uff08\u30d1\u30c7\u30a3\u30f3\u30b0\uff09",
+"Cell spacing": "\u30bb\u30eb\u306e\u9593\u9694",
+"Row type": "\u884c\u30bf\u30a4\u30d7",
+"Insert table": "\u8868\u306e\u633f\u5165",
+"Body": "\u30dc\u30c7\u30a3\u30fc",
+"Caption": "\u8868\u984c",
+"Footer": "\u30d5\u30c3\u30bf\u30fc",
+"Delete row": "\u884c\u306e\u524a\u9664",
+"Paste row before": "\u4e0a\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
+"Scope": "\u30b9\u30b3\u30fc\u30d7",
+"Delete table": "\u8868\u306e\u524a\u9664",
+"Header cell": "\u30d8\u30c3\u30c0\u30fc\u30bb\u30eb",
+"Column": "\u5217",
+"Cell": "\u30bb\u30eb",
+"Header": "\u30d8\u30c3\u30c0\u30fc",
+"Cell type": "\u30bb\u30eb\u30bf\u30a4\u30d7",
+"Copy row": "\u884c\u306e\u30b3\u30d4\u30fc",
+"Row properties": "\u884c\u306e\u8a73\u7d30\u8a2d\u5b9a",
+"Table properties": "\u8868\u306e\u8a73\u7d30\u8a2d\u5b9a",
+"Row group": "\u884c\u30b0\u30eb\u30fc\u30d7",
+"Right": "\u53f3\u5bc4\u305b",
+"Insert column after": "\u53f3\u5074\u306b\u5217\u3092\u633f\u5165",
+"Cols": "\u5217\u6570",
+"Insert row after": "\u4e0b\u5074\u306b\u884c\u3092\u633f\u5165",
+"Width": "\u5e45",
+"Cell properties": "\u30bb\u30eb\u306e\u8a73\u7d30\u8a2d\u5b9a",
+"Left": "\u5de6\u5bc4\u305b",
+"Cut row": "\u884c\u306e\u5207\u308a\u53d6\u308a",
+"Delete column": "\u5217\u306e\u524a\u9664",
+"Center": "\u4e2d\u592e\u63c3\u3048",
+"Merge cells": "\u30bb\u30eb\u306e\u7d50\u5408",
+"Insert template": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165",
+"Templates": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4e00\u89a7",
+"Background color": "\u80cc\u666f\u8272",
+"Text color": "\u6587\u5b57\u306e\u8272",
+"Show blocks": "\u6587\u7ae0\u306e\u533a\u5207\u308a\u3092\u70b9\u7dda\u3067\u8868\u793a",
+"Show invisible characters": "\u4e0d\u53ef\u8996\u6587\u5b57\u3092\u8868\u793a",
+"Words: {0}": "\u5358\u8a9e\u6570: {0}",
+"Insert": "\u633f\u5165",
+"File": "\u30d5\u30a1\u30a4\u30eb",
+"Edit": "\u7de8\u96c6",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u66f8\u5f0f\u4ed8\u304d\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6\u753b\u9762\u3002ALT-F9\u3067\u30e1\u30cb\u30e5\u30fc\u3001ALT-F10\u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0\u3067\u30d8\u30eb\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002",
+"Tools": "\u30c4\u30fc\u30eb",
+"View": "\u8868\u793a",
+"Table": "\u8868",
+"Format": "\u66f8\u5f0f"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ka_GE.js b/framework/Web/Javascripts/source/tinymce-405/langs/ka_GE.js
new file mode 100755
index 00000000..5846773e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ka_GE.js
@@ -0,0 +1,172 @@
+tinymce.addI18n('ka_GE',{
+"Cut": "\u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
+"Header 2": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u10d7\u10e5\u10d5\u10d4\u10dc \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e1 \u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1 \u10d1\u10e3\u10e4\u10e0\u10e2\u10e8\u10d8 \u10e8\u10d4\u10ee\u10ec\u10d4\u10d5\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0. \u10d2\u10d7\u10ee\u10dd\u10d5\u10d7 \u10e1\u10d0\u10dc\u10d0\u10ea\u10d5\u10da\u10dd\u10d3 \u10d8\u10e1\u10d0\u10e0\u10d2\u10d4\u10d1\u10da\u10dd\u10d7 Ctrl+X\/C\/V \u10db\u10d0\u10da\u10e1\u10d0\u10ee\u10db\u10dd\u10d1\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d4\u10d1\u10d8\u10d7.",
+"Div": "\u10d2\u10d0\u10dc\u10d0\u10ec\u10d8\u10da\u10d4\u10d1\u10d0",
+"Paste": "\u10e9\u10d0\u10e1\u10db\u10d0",
+"Close": "\u10d3\u10d0\u10ee\u10e3\u10e0\u10d5\u10d0",
+"Pre": "\u10de\u10e0\u10d4\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8",
+"Align right": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
+"New document": "\u10d0\u10ee\u10d0\u10da\u10d8 \u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8",
+"Blockquote": "\u10d1\u10da\u10dd\u10d9\u10d8\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 \u10ea\u10d8\u10e2\u10d0\u10e2\u10d0",
+"Numbered list": "\u10d3\u10d0\u10dc\u10dd\u10db\u10e0\u10d8\u10da\u10d8 \u10e1\u10d8\u10d0",
+"Increase indent": "\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1 \u10d2\u10d0\u10d6\u10e0\u10d3\u10d0",
+"Formats": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8",
+"Headers": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d4\u10d1\u10d8",
+"Select all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10db\u10dd\u10e6\u10dc\u10d8\u10e8\u10d5\u10dc\u10d0",
+"Header 3": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 3",
+"Blocks": "\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8",
+"Undo": "\u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
+"Strikethrough": "\u10e8\u10e3\u10d0 \u10ee\u10d0\u10d6\u10d8",
+"Bullet list": "\u10d1\u10e3\u10da\u10d4\u10e2 \u10e1\u10d8\u10d0",
+"Header 1": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 1",
+"Superscript": "\u10d6\u10d4\u10d3\u10d0 \u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
+"Clear formatting": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e1\u10e3\u10e4\u10d7\u10d0\u10d5\u10d4\u10d1\u10d0",
+"Subscript": "\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
+"Header 6": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 6",
+"Redo": "\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Paragraph": "\u10de\u10d0\u10e0\u10d0\u10d2\u10e0\u10d0\u10e4\u10d8",
+"Ok": "\u10d9\u10d0\u10e0\u10d2\u10d8",
+"Bold": "\u10db\u10d9\u10d5\u10d4\u10d7\u10e0\u10d8",
+"Code": "\u10d9\u10dd\u10d3\u10d8",
+"Italic": "\u10d3\u10d0\u10ee\u10e0\u10d8\u10da\u10d8",
+"Align center": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
+"Header 5": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 5",
+"Decrease indent": "\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1 \u10e8\u10d4\u10db\u10ea\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Header 4": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u10d0\u10ee\u10da\u10d0 \u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0 \u10e9\u10d5\u10d4\u10e3\u10da\u10d4\u10d1\u10e0\u10d8\u10d5 \u10e0\u10d4\u10df\u10d8\u10db\u10e8\u10d8\u10d0. \u10e2\u10d4\u10e5\u10e1\u10e2\u10d8 \u10e9\u10d0\u10d8\u10e1\u10db\u10d4\u10d5\u10d0 \u10e3\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10dd\u10d7 \u10e1\u10d0\u10dc\u10d0\u10db \u10d0\u10db \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d0\u10e1 \u10d0\u10e0 \u10d2\u10d0\u10d7\u10d8\u10e8\u10d0\u10d5\u10d7.",
+"Underline": "\u10e5\u10d5\u10d4\u10d3\u10d0 \u10ee\u10d0\u10d6\u10d8",
+"Cancel": "\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0",
+"Justify": "\u10d2\u10d0\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d8",
+"Inline": "\u10ee\u10d0\u10d6\u10e8\u10d8\u10d3\u10d0",
+"Copy": "\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Align left": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
+"Visual aids": "\u10d5\u10d8\u10d6\u10e3\u10d0\u10da\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0",
+"Lower Greek": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10d1\u10d4\u10e0\u10eb\u10dc\u10e3\u10da\u10d8",
+"Square": "\u10d9\u10d5\u10d0\u10d3\u10e0\u10d0\u10e2\u10d8",
+"Default": "\u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8",
+"Lower Alpha": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10d0\u10da\u10e4\u10d0",
+"Circle": "\u10ec\u10e0\u10d4",
+"Disc": "\u10d3\u10d8\u10e1\u10d9\u10d8",
+"Upper Alpha": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8 \u10d0\u10da\u10e4\u10d0",
+"Upper Roman": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8 \u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
+"Lower Roman": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
+"Name": "\u10e1\u10d0\u10ee\u10d4\u10da\u10d8",
+"Anchor": "\u10e6\u10e3\u10d6\u10d0",
+"You have unsaved changes are you sure you want to navigate away?": "\u10d7\u10e5\u10d5\u10d4\u10dc \u10d2\u10d0\u10e5\u10d5\u10d7 \u10e8\u10d4\u10e3\u10dc\u10d0\u10ee\u10d0\u10d5\u10d8 \u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10d1\u10d8, \u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d4\u10d1\u10e3\u10da\u10d8 \u10ee\u10d0\u10d7 \u10e0\u10dd\u10db \u10e1\u10ee\u10d5\u10d0\u10d2\u10d0\u10dc \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0 \u10d2\u10e1\u10e3\u10e0\u10d7?",
+"Restore last draft": "\u10d1\u10dd\u10da\u10dd\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10e3\u10da\u10d8\u10e1 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d0",
+"Special character": "\u10e1\u10de\u10d4\u10ea\u10d8\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd",
+"Source code": "\u10ec\u10e7\u10d0\u10e0\u10dd\u10e1 \u10d9\u10dd\u10d3\u10d8",
+"Right to left": "\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
+"Left to right": "\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
+"Emoticons": "\u10e1\u10db\u10d0\u10d8\u10da\u10d8\u10d9\u10d4\u10d1\u10d8",
+"Robots": "\u10e0\u10dd\u10d1\u10dd\u10d4\u10d1\u10d8",
+"Document properties": "\u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Title": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",
+"Keywords": "\u10e1\u10d0\u10d9\u10d5\u10d0\u10dc\u10eb\u10dd \u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
+"Encoding": "\u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Description": "\u10d0\u10ee\u10ec\u10d4\u10e0\u10d0",
+"Author": "\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8",
+"Fullscreen": "\u10e1\u10d0\u10d5\u10e1\u10d4 \u10d4\u10d9\u10e0\u10d0\u10dc\u10d8",
+"Horizontal line": "\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10ee\u10d0\u10d6\u10d8",
+"Horizontal space": "\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
+"Insert\/edit image": "\u10e9\u10d0\u10e1\u10d5\u10d8\/\u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10e1\u10e3\u10e0\u10d0\u10d7\u10d8",
+"General": "\u10db\u10d7\u10d0\u10d5\u10d0\u10e0\u10d8",
+"Advanced": "\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8",
+"Source": "\u10d1\u10db\u10e3\u10da\u10d8",
+"Border": "\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",
+"Constrain proportions": "\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d0\u10ea\u10d5\u10d0",
+"Vertical space": "\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
+"Image description": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10d3\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10d0",
+"Style": "\u10e1\u10e2\u10d8\u10da\u10d8",
+"Dimensions": "\u10d2\u10d0\u10dc\u10d6\u10dd\u10db\u10d8\u10da\u10d4\u10d1\u10d0",
+"Insert image": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Insert date\/time": "\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\/\u10d3\u10e0\u10dd\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Url": "Url",
+"Text to display": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",
+"Insert link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"New window": "\u10d0\u10ee\u10d0\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8",
+"None": "\u10d0\u10e0\u10ea\u10d4\u10e0\u10d7\u10d8",
+"Target": "\u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",
+"Insert\/edit link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d0",
+"Insert\/edit video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Poster": "\u10de\u10da\u10d0\u10d9\u10d0\u10e2\u10d8",
+"Alternative source": "\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10ec\u10e7\u10d0\u10e0\u10dd",
+"Paste your embed code below:": "\u10d0\u10e5 \u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d9\u10dd\u10d3\u10d8:",
+"Insert video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Embed": "Embed",
+"Nonbreaking space": "\u10e3\u10ec\u10e7\u10d5\u10d4\u10e2\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
+"Page break": "\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1 \u10d2\u10d0\u10ec\u10e7\u10d5\u10d4\u10e2\u10d0",
+"Preview": "\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0 \u10dc\u10d0\u10ee\u10d5\u10d0",
+"Print": "\u10d0\u10db\u10dd\u10d1\u10d4\u10ed\u10d5\u10d3\u10d0",
+"Save": "\u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0",
+"Could not find the specified string.": "\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10e9\u10d0\u10dc\u10d0\u10ec\u10d4\u10e0\u10d8 \u10d5\u10d4\u10e0 \u10db\u10dd\u10d8\u10eb\u10d4\u10d1\u10dc\u10d0.",
+"Replace": "\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Next": "\u10e8\u10d4\u10db\u10d3\u10d4\u10d2\u10d8",
+"Whole words": "\u10e1\u10e0\u10e3\u10da\u10d8 \u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
+"Find and replace": "\u10db\u10dd\u10eb\u10d4\u10d1\u10dc\u10d4 \u10d3\u10d0 \u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4",
+"Replace with": "\u10e8\u10d4\u10e1\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10e1\u10d8\u10e2\u10e7\u10d5\u10d0",
+"Find": "\u10eb\u10d4\u10d1\u10dc\u10d0",
+"Replace all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Match case": "\u10d3\u10d0\u10d0\u10db\u10d7\u10ee\u10d5\u10d8\u10d4 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0",
+"Prev": "\u10ec\u10d8\u10dc\u10d0",
+"Spellcheck": "\u10db\u10d0\u10e0\u10d7\u10da\u10ec\u10d4\u10e0\u10d8\u10e1 \u10e8\u10d4\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0",
+"Finish": "\u10e4\u10d8\u10dc\u10d8\u10e8\u10d8",
+"Ignore all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Ignore": "\u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Insert row before": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Rows": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8",
+"Height": "\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",
+"Paste row after": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Alignment": "\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Column group": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",
+"Row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8",
+"Insert column before": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Split cell": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e7\u10dd\u10e4\u10d0",
+"Cell padding": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10e4\u10d0\u10e0\u10d7\u10dd\u10d1\u10d8",
+"Cell spacing": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Row type": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",
+"Insert table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Body": "\u10e2\u10d0\u10dc\u10d8",
+"Caption": "\u10ec\u10d0\u10e0\u10ec\u10d4\u10e0\u10d0",
+"Footer": "\u10eb\u10d8\u10e0\u10d8",
+"Delete row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
+"Paste row before": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Scope": "\u10e9\u10d0\u10e0\u10e9\u10dd",
+"Delete table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
+"Header cell": "\u10d7\u10d0\u10d5\u10d8\u10e1 \u10e3\u10ef\u10e0\u10d0",
+"Column": "\u10e1\u10d5\u10d4\u10e2\u10d8",
+"Cell": "\u10e3\u10ef\u10e0\u10d0",
+"Header": "\u10d7\u10d0\u10d5\u10d8",
+"Cell type": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",
+"Copy row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Row properties": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Table properties": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Row group": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",
+"Right": "\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
+"Insert column after": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Cols": "\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8",
+"Insert row after": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Width": "\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",
+"Cell properties": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Left": "\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
+"Cut row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
+"Delete column": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
+"Center": "\u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
+"Merge cells": "\u10e3\u10ef\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d4\u10e0\u10d7\u10d8\u10d0\u10dc\u10d4\u10d1\u10d0",
+"Insert template": "\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Templates": "\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d4\u10d1\u10d8",
+"Background color": "\u10e3\u10d9\u10d0\u10dc\u10d0 \u10e4\u10d4\u10e0\u10d8",
+"Text color": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",
+"Show blocks": "\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8\u10e1 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
+"Show invisible characters": "\u10e3\u10ee\u10d8\u10da\u10d0\u10d5\u10d8 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10d4\u10d1\u10d8\u10e1 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
+"Words: {0}": "\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8: {0}",
+"Insert": "\u10e9\u10d0\u10e1\u10db\u10d0",
+"File": "\u10e4\u10d0\u10d8\u10da\u10d8",
+"Edit": "\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d0\u10e0\u10d7\u10d8. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F9\u10e1 \u10db\u10d4\u10dc\u10d8\u10e3\u10e1 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10eb\u10d0\u10ee\u10d4\u10d1\u10da\u10d0\u10d3. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F10\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-0\u10e1 \u10d3\u10d0\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1",
+"Tools": "\u10d8\u10d0\u10e0\u10d0\u10e6\u10d4\u10d1\u10d8",
+"View": "\u10dc\u10d0\u10ee\u10d5\u10d0",
+"Table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8",
+"Format": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ko_KR.js b/framework/Web/Javascripts/source/tinymce-405/langs/ko_KR.js
new file mode 100755
index 00000000..1f89ae4d
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ko_KR.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('ko_KR',{
+"Cut": "\uc798\ub77c\ub0b4\uae30",
+"Header 2": "\uc81c\ubaa9 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\ube0c\ub77c\uc6b0\uc838\uac00 \ud074\ub9bd\ubcf4\ub4dc \uc811\uadfc\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Ctrl+X\/C\/V \ud0a4\ub97c \uc774\uc6a9\ud574 \uc8fc\uc138\uc694.",
+"Div": "\uad6c\ubd84",
+"Paste": "\ubd99\uc5ec\ub123\uae30",
+"Close": "\ub2eb\uae30",
+"Pre": "Pre",
+"Align right": "\uc624\ub978\ucabd\uc815\ub82c",
+"New document": "\uc0c8 \ubb38\uc11c",
+"Blockquote": "\uad6c\ud68d",
+"Numbered list": "\uc22b\uc790\ub9ac\uc2a4\ud2b8",
+"Increase indent": "\ub4e4\uc5ec\uc4f0\uae30",
+"Formats": "\ud3ec\ub9f7",
+"Headers": "\uc2a4\ud0c0\uc77c",
+"Select all": "\uc804\uccb4\uc120\ud0dd",
+"Header 3": "\uc81c\ubaa9 3",
+"Blocks": "\ube14\ub85d \uc124\uc815",
+"Undo": "\uc2e4\ud589\ucde8\uc18c",
+"Strikethrough": "\ucde8\uc18c\uc120",
+"Bullet list": "\uc810\ub9ac\uc2a4\ud2b8",
+"Header 1": "\uc81c\ubaa9 1",
+"Superscript": "\uc717\ucca8\uc790",
+"Clear formatting": "\ud3ec\ub9f7\ucd08\uae30\ud654",
+"Subscript": "\uc544\ub798\ucca8\uc790",
+"Header 6": "\uc81c\ubaa9 6",
+"Redo": "\ub2e4\uc2dc\uc2e4\ud589",
+"Paragraph": "\ub2e8\ub77d",
+"Ok": "\ud655\uc778",
+"Bold": "\uad75\uac8c",
+"Code": "\ucf54\ub4dc",
+"Italic": "\uae30\uc6b8\uc784\uaf34",
+"Align center": "\uac00\uc6b4\ub370\uc815\ub82c",
+"Header 5": "\uc81c\ubaa9 5",
+"Decrease indent": "\ub0b4\uc5b4\uc4f0\uae30",
+"Header 4": "\uc81c\ubaa9 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\uc774 \uc635\uc158\uc744 \ub044\uc9c0 \uc54a\uc73c\uba74 \ub0b4\uc6a9\uc774 \uc77c\ubc18 \ud14d\uc2a4\ud2b8\ub85c \ubd99\uc5ec\ub123\uae30 \ub418\uc5b4\uc9d1\ub2c8\ub2e4.",
+"Underline": "\ubc11\uc904",
+"Cancel": "\ucde8\uc18c",
+"Justify": "\uc591\ucabd\uc815\ub82c",
+"Inline": "\ub77c\uc778 \uc124\uc815",
+"Copy": "\ubcf5\uc0ac\ud558\uae30",
+"Align left": "\uc67c\ucabd\uc815\ub82c",
+"Visual aids": "\uc2dc\uac01\uad50\uc7ac",
+"Lower Greek": "\uadf8\ub9ac\uc2a4\uc5b4 \uc18c\ubb38\uc790",
+"Square": "\uc0ac\uac01",
+"Default": "\uae30\ubcf8",
+"Lower Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
+"Circle": "\uc6d0",
+"Disc": "\uc6d0\ubc18",
+"Upper Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
+"Upper Roman": "\ub85c\ub9c8\uc790 \ub300\ubb38\uc790",
+"Lower Roman": "\ub85c\ub9c8\uc790 \uc18c\ubb38\uc790",
+"Name": "\uc774\ub984",
+"Anchor": "\uc575\ucee4",
+"You have unsaved changes are you sure you want to navigate away?": "\uc800\uc7a5\ud558\uc9c0 \uc54a\uc740 \uc815\ubcf4\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0\ub97c \ubc97\uc5b4\ub098\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
+"Restore last draft": "\ub9c8\uc9c0\ub9c9 \ucd08\uc548 \ubcf5\uc6d0",
+"Special character": "\ud2b9\uc218\ubb38\uc790",
+"Source code": "\uc18c\uc2a4\ucf54\ub4dc",
+"Right to left": "\uc624\ub978\ucabd\uc5d0\uc11c \uc67c",
+"Left to right": "\uc67c\ucabd\uc5d0\uc11c \uc624\ub978",
+"Emoticons": "\uc774\ubaa8\ud2f0\ucf58",
+"Robots": "\ub85c\ubd07",
+"Document properties": "\ubb38\uc11c \uc18d\uc131",
+"Title": "\uc81c\ubaa9",
+"Keywords": "\ud0a4\uc6cc\ub4dc",
+"Encoding": "\uc778\ucf54",
+"Description": "\uc124\uba85",
+"Author": "\uc800",
+"Fullscreen": "\uc804\uccb4\ud654",
+"Horizontal line": "\uac00\ub85c",
+"Horizontal space": "\uc218\ud3c9 \uacf5\ubc31",
+"Insert\/edit image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785\/\uc218\uc815",
+"General": "\uc77c\ubc18",
+"Advanced": "\uace0\uae09",
+"Source": "\uc18c\uc2a4",
+"Border": "\ud14c\ub450\ub9ac",
+"Constrain proportions": "\uc791\uc5c5 \uc81c\ud55c",
+"Vertical space": "\uc218\uc9c1 \uacf5\ubc31",
+"Image description": "\uc774\ubbf8\uc9c0 \uc124\uba85",
+"Style": "\uc2a4\ud0c0\uc77c",
+"Dimensions": "\ud06c\uae30",
+"Insert image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785",
+"Insert date\/time": "\ub0a0\uc9dc\/\uc2dc\uac04\uc0bd\uc785",
+"Remove link": "\ub9c1\ud06c\uc0ad\uc81c",
+"Url": "\uc8fc\uc18c",
+"Text to display": "\ubcf8\ubb38",
+"Anchors": "\ucc45\uac08\ud53c",
+"Insert link": "\ub9c1\ud06c\uc0bd\uc785 ",
+"New window": "\uc0c8\ucc3d",
+"None": "\uc5c6\uc74c",
+"Target": "\ub300\uc0c1",
+"Insert\/edit link": "\ub9c1\ud06c \uc0bd\uc785\/\uc218\uc815",
+"Insert\/edit video": "\ube44\ub514\uc624 \uc0bd\uc785\/\uc218\uc815",
+"Poster": "\ud3ec\uc2a4\ud130",
+"Alternative source": "\ub300\uccb4 \uc18c\uc2a4",
+"Paste your embed code below:": "\uc544\ub798\uc5d0 \ucf54\ub4dc\ub97c \ubd99\uc5ec\ub123\uc73c\uc138\uc694:",
+"Insert video": "\ube44\ub514\uc624 \uc0bd\uc785",
+"Embed": "\uc0bd\uc785",
+"Nonbreaking space": "\ub744\uc5b4\uc4f0\uae30",
+"Page break": "\ud398\uc774\uc9c0 \uad6c\ubd84\uc790",
+"Paste as text": "\ud14d\uc2a4\ud2b8\ub85c \ubd99\uc5ec\ub123\uae30",
+"Preview": "\ubbf8\ub9ac\ubcf4\uae30",
+"Print": "\ucd9c\ub825",
+"Save": "\uc800\uc7a5",
+"Could not find the specified string.": "\ubb38\uc790\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
+"Replace": "\uad50\uccb4",
+"Next": "\ub2e4\uc74c",
+"Whole words": "\uc804\uccb4 \ub2e8\uc5b4",
+"Find and replace": "\ucc3e\uc544\uc11c \uad50\uccb4",
+"Replace with": "\uad50\uccb4",
+"Find": "\ucc3e\uae30",
+"Replace all": "\uc804\uccb4 \uad50\uccb4",
+"Match case": "\ub300\uc18c\ubb38\uc790 \uc77c\uce58",
+"Prev": "\uc774\uc804",
+"Spellcheck": "\ubb38\ubc95\uccb4",
+"Finish": "\ub05d",
+"Ignore all": "\uc804\uccb4\ubb34",
+"Ignore": "\ubb34",
+"Insert row before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
+"Rows": "\ud589",
+"Height": "\ub192\uc774",
+"Paste row after": "\ub2e4\uc74c\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
+"Alignment": "\uc815\ub82c",
+"Column group": "\uc5f4 \uadf8\ub8f9",
+"Row": "\uc5f4",
+"Insert column before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
+"Split cell": "\uc140 \ub098\ub204\uae30",
+"Cell padding": "\uc140 \uc548\ucabd \uc5ec\ubc31",
+"Cell spacing": "\uc140 \uac04\uaca9",
+"Row type": "\ud589 \ud0c0\uc785",
+"Insert table": "\ud14c\uc774\ube14 \uc0bd\uc785",
+"Body": "\ubc14\ub514",
+"Caption": "\ucea1\uc158",
+"Footer": "\ud478\ud130",
+"Delete row": "\ud589 \uc9c0\uc6b0\uae30",
+"Paste row before": "\uc774\uc804\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
+"Scope": "\ubc94\uc704",
+"Delete table": "\ud14c\uc774\ube14 \uc0ad\uc81c",
+"Header cell": "\ud5e4\ub354 \uc140",
+"Column": "\ud589",
+"Cell": "\uc140",
+"Header": "\ud5e4\ub354",
+"Cell type": "\uc140 \ud0c0\uc785",
+"Copy row": "\ud589 \ubcf5\uc0ac",
+"Row properties": "\ud589 \uc18d\uc131",
+"Table properties": "\ud14c\uc774\ube14 \uc18d\uc131",
+"Row group": "\ud589 \uadf8\ub8f9",
+"Right": "\uc624\ub978\ucabd",
+"Insert column after": "\ub2e4\uc74c\uc5d0 \uc5f4 \uc0bd\uc785",
+"Cols": "\uc5f4",
+"Insert row after": "\ub2e4\uc74c\uc5d0 \ud589 \uc0bd\uc785",
+"Width": "\ub113\uc774",
+"Cell properties": "\uc140 \uc18d",
+"Left": "\uc67c\ucabd",
+"Cut row": "\ud589 \uc798\ub77c\ub0b4\uae30",
+"Delete column": "\uc5f4 \uc9c0\uc6b0\uae30",
+"Center": "\uac00\uc6b4\ub370",
+"Merge cells": "\uc140 \ud569\uce58\uae30",
+"Insert template": "\ud15c\ud50c\ub9bf \uc0bd\uc785",
+"Templates": "\ud15c\ud50c\ub9bf",
+"Background color": "\ubc30\uacbd\uc0c9",
+"Text color": "\ubb38\uc790 \uc0c9\uae54",
+"Show blocks": "\ube14\ub7ed \ubcf4\uc5ec\uc8fc\uae30",
+"Show invisible characters": "\uc548\ubcf4\uc774\ub294 \ubb38\uc790 \ubcf4\uc774\uae30",
+"Words: {0}": "\ub2e8\uc5b4: {0}",
+"Insert": "\uc0bd\uc785",
+"File": "\ud30c\uc77c",
+"Edit": "\uc218\uc815",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\uc11c\uc2dd \uc788\ub294 \ud14d\uc2a4\ud2b8 \ud3b8\uc9d1\uae30 \uc785\ub2c8\ub2e4. ALT-F9\ub97c \ub204\ub974\uba74 \uba54\ub274, ALT-F10\ub97c \ub204\ub974\uba74 \ud234\ubc14, ALT-0\uc744 \ub204\ub974\uba74 \ub3c4\uc6c0\ub9d0\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
+"Tools": "\ub3c4\uad6c",
+"View": "\ubcf4\uae30",
+"Table": "\ud14c\uc774\ube14",
+"Format": "\ud3ec\ub9f7"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/lb.js b/framework/Web/Javascripts/source/tinymce-405/langs/lb.js
new file mode 100755
index 00000000..76cba87f
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/lb.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('lb',{
+"Cut": "Ausschneiden",
+"Header 2": "Titel 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "D\u00e4i Web-Browser \u00ebnnerst\u00ebtzt keen direkten Acc\u00e8s op d'Zw\u00ebschenaplag. Benotz w.e.gl. CTRL+C fir den ausgewielten Text ze kop\u00e9ieren an CTRL+V fir en anzepechen.",
+"Div": "DIV",
+"Paste": "Apechen",
+"Close": "Zoumaachen",
+"Pre": "PRE",
+"Align right": "Riets align\u00e9iert",
+"New document": "Neit Dokument",
+"Blockquote": "Zitat",
+"Numbered list": "Nummer\u00e9iert L\u00ebscht",
+"Increase indent": "Ident\u00e9ierung vergr\u00e9isseren",
+"Formats": "Formater",
+"Headers": "Titelen",
+"Select all": "Alles auswielen",
+"Header 3": "Titel 3",
+"Blocks": "Bl\u00e9ck",
+"Undo": "R\u00e9ckg\u00e4ngeg maachen",
+"Strikethrough": "Duerchgestrach",
+"Bullet list": "Opzielung",
+"Header 1": "Titel 1",
+"Superscript": "H\u00e9ichgestallt",
+"Clear formatting": "Format\u00e9ierung l\u00e4schen",
+"Subscript": "Erofgestallt",
+"Header 6": "Titel 6",
+"Redo": "Widderhuelen",
+"Paragraph": "Paragraph",
+"Ok": "Okee",
+"Bold": "Fett",
+"Code": "CODE",
+"Italic": "Kursiv",
+"Align center": "Zentr\u00e9iert",
+"Header 5": "Titel 5",
+"Decrease indent": "Ident\u00e9ierung verklengeren",
+"Header 4": "Titel 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\"Apechen\" ass elo am Textmodus. Inhalter ginn elo ouni Format\u00e9ierungen agepecht bis du d\u00ebs Optioun ausm\u00e9chs.",
+"Underline": "\u00cbnnerstrach",
+"Cancel": "Ofbriechen",
+"Justify": "Blocksaz",
+"Inline": "Inline",
+"Copy": "Kop\u00e9ieren",
+"Align left": "L\u00e9nks align\u00e9iert",
+"Visual aids": "Visuell H\u00ebllefen",
+"Lower Greek": "Klengt griichescht Alphabet",
+"Square": "Quadrat",
+"Default": "Standard",
+"Lower Alpha": "Klengt Alphabet",
+"Circle": "Krees",
+"Disc": "Scheif",
+"Upper Alpha": "Grousst Alphabet",
+"Upper Roman": "Grousst r\u00e9imescht Alphabet",
+"Lower Roman": "Klengt r\u00e9imescht Alphabet",
+"Name": "Numm",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "Du hues ongesp\u00e4ichert \u00c4nnerungen. W\u00eblls du s\u00e9cher ewechnavig\u00e9ieren?",
+"Restore last draft": "Leschten Entworf er\u00ebm zr\u00e9cksetzen",
+"Special character": "Speziell Zeechen",
+"Source code": "Quelltext",
+"Right to left": "Vu riets no l\u00e9nks",
+"Left to right": "Vu l\u00e9nks no riets",
+"Emoticons": "Smileyen",
+"Robots": "Robotter",
+"Document properties": "Eegeschafte vum Dokument",
+"Title": "Titel",
+"Keywords": "Schl\u00ebsselwierder",
+"Encoding": "Cod\u00e9ierung",
+"Description": "Beschreiwung",
+"Author": "Auteur",
+"Fullscreen": "Vollbildschierm",
+"Horizontal line": "Horizontal Linn",
+"Horizontal space": "Horizontalen Espace",
+"Insert\/edit image": "Bild af\u00fcgen\/\u00e4nneren",
+"General": "Allgemeng",
+"Advanced": "Erweidert",
+"Source": "Quell",
+"Border": "Rand",
+"Constrain proportions": "Proportioune b\u00e4ibehalen",
+"Vertical space": "Vertikalen Espace",
+"Image description": "Bildbeschreiwung",
+"Style": "Stil",
+"Dimensions": "Dimensiounen",
+"Insert image": "Bild af\u00fcgen",
+"Insert date\/time": "Datum\/Z\u00e4it af\u00fcgen",
+"Remove link": "Link l\u00e4schen",
+"Url": "URL",
+"Text to display": "Text deen unzeweisen ass",
+"Anchors": "Ankeren",
+"Insert link": "Link drasetzen",
+"New window": "Nei F\u00ebnster",
+"None": "Keen",
+"Target": "Zil",
+"Insert\/edit link": "Link drasetzen\/\u00e4nneren",
+"Insert\/edit video": "Video drasetzen\/\u00e4nneren",
+"Poster": "Pouster",
+"Alternative source": "Alternativ Quell",
+"Paste your embed code below:": "Abannungscode hei apechen:",
+"Insert video": "Video drasetzen",
+"Embed": "Abannen",
+"Nonbreaking space": "Net-\u00ebmbriechenden Espace",
+"Page break": "S\u00e4iten\u00ebmbroch",
+"Paste as text": "Als Text apechen",
+"Preview": "Kucken",
+"Print": "Dr\u00e9cken",
+"Save": "Sp\u00e4icheren",
+"Could not find the specified string.": "Den Text konnt net fonnt ginn.",
+"Replace": "Ersetzen",
+"Next": "Weider",
+"Whole words": "Ganz Wierder",
+"Find and replace": "Fannen an ersetzen",
+"Replace with": "Ersetze mat",
+"Find": "Fannen",
+"Replace all": "All ersetzen",
+"Match case": "Grouss-\/Klengschreiwung respekt\u00e9ieren",
+"Prev": "Zr\u00e9ck",
+"Spellcheck": "Verbesseren",
+"Finish": "Ofschl\u00e9issen",
+"Ignore all": "All ignor\u00e9ieren",
+"Ignore": "Ignor\u00e9ieren",
+"Insert row before": "Rei virdrun drasetzen",
+"Rows": "Reien",
+"Height": "H\u00e9icht",
+"Paste row after": "Rei herno apechen",
+"Alignment": "Align\u00e9ierung",
+"Column group": "Kolonnegrupp",
+"Row": "Rei",
+"Insert column before": "Kolonn virdrun drasetzen",
+"Split cell": "Zell opspl\u00e9cken",
+"Cell padding": "Zellenopf\u00ebllung",
+"Cell spacing": "Zellenofstand",
+"Row type": "Reientyp",
+"Insert table": "Tabell drasetzen",
+"Body": "Kierper",
+"Caption": "Beschr\u00ebftung",
+"Footer": "Fouss",
+"Delete row": "Rei l\u00e4schen",
+"Paste row before": "Rei virdrun apechen",
+"Scope": "Ber\u00e4ich",
+"Delete table": "Tabell l\u00e4schen",
+"Header cell": "Kappzell",
+"Column": "Kolonn",
+"Cell": "Zell",
+"Header": "Kapp",
+"Cell type": "Zellentyp",
+"Copy row": "Rei kop\u00e9ieren",
+"Row properties": "Eegeschafte vu Reien",
+"Table properties": "Eegeschafte vun Tabellen",
+"Row group": "Reiegrupp",
+"Right": "Riets",
+"Insert column after": "Kolonn herno drasetzen",
+"Cols": "Kolonnen",
+"Insert row after": "Rei herno drasetzen",
+"Width": "Breet",
+"Cell properties": "Eegeschafte vun Zellen",
+"Left": "L\u00e9nks",
+"Cut row": "Rei ausschneiden",
+"Delete column": "Kolonn l\u00e4schen",
+"Center": "M\u00ebtt",
+"Merge cells": "Zelle fusion\u00e9ieren",
+"Insert template": "Virlag drasetzen",
+"Templates": "Virlagen",
+"Background color": "Hanndergrondfaarf",
+"Text color": "Textfaarf",
+"Show blocks": "Bl\u00e9ck weisen",
+"Show invisible characters": "Onsiichtbar Zeeche weisen",
+"Words: {0}": "Wierder: {0}",
+"Insert": "Drasetzen",
+"File": "Fichier",
+"Edit": "\u00c4nneren",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Ber\u00e4ich fir format\u00e9ierten Text. Dr\u00e9ck ALT+F9 fir de Men\u00fc. Dr\u00e9ck ALT+F10 fir d'Geschirleescht. Dr\u00e9ck ALT+0 fir d'H\u00ebllef.",
+"Tools": "Geschir",
+"View": "Kucken",
+"Table": "Tabell",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/lt.js b/framework/Web/Javascripts/source/tinymce-405/langs/lt.js
new file mode 100755
index 00000000..b008f308
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/lt.js
@@ -0,0 +1,76 @@
+tinymce.addI18n('lt',{
+"Cut": "I\u0161kirpti",
+"Header 2": "Antra\u0161t\u0117 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Nar\u0161ykl\u0117s nustatymai neleid\u017eia redaktoriui tiesiogiai pasiekti laikinosios atminties. Pra\u0161ome naudoti klaviat\u016bros klavi\u0161us Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "\u012ed\u0117ti",
+"Close": "U\u017edaryti",
+"Pre": "Pre",
+"Align right": "Lygiuoti de\u0161in\u0117je",
+"New document": "Naujas dokumentas",
+"Blockquote": "Citata",
+"Numbered list": "Skaitmeninis s\u0105ra\u0161as",
+"Increase indent": "Didinti \u012ftrauk\u0105",
+"Formats": "Formatai",
+"Headers": "Antra\u0161t\u0117s",
+"Select all": "Pa\u017eym\u0117ti visk\u0105",
+"Header 3": "Antra\u0161t\u0117 3",
+"Blocks": "Blokai",
+"Undo": "Atstatyti",
+"Strikethrough": "Perbrauktas",
+"Bullet list": "\u017denklinimo s\u0105ra\u0161as",
+"Header 1": "Antra\u0161t\u0117 1",
+"Superscript": "Vir\u0161utinis indeksas",
+"Clear formatting": "Naikinti formatavim\u0105",
+"Subscript": "Apatinis indeksas",
+"Header 6": "Antra\u0161t\u0117 6",
+"Redo": "Gr\u0105\u017einti",
+"Paragraph": "Paragrafas",
+"Ok": "Gerai",
+"Bold": "Pary\u0161kintas",
+"Code": "Kodas",
+"Italic": "Kursyvinis",
+"Align center": "Centruoti",
+"Header 5": "Antra\u0161t\u0117 5",
+"Decrease indent": "Ma\u017einti \u012ftrauk\u0105",
+"Header 4": "Antra\u0161t\u0117 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Dabar \u012fterpiama paprastojo teksto re\u017eimu. Kol \u0161i parinktis \u012fjungta, turinys bus \u012fterptas kaip paprastas tekstas.",
+"Underline": "Pabrauktas",
+"Cancel": "Atsisakyti",
+"Justify": "I\u0161d\u0117styti per vis\u0105 plot\u012f",
+"Inline": "Inline",
+"Copy": "Kopijuoti",
+"Align left": "Lygiuoti kair\u0117je",
+"Visual aids": "Vaizdin\u0117s priemon\u0117s",
+"Lower Greek": "Ma\u017eosios graik\u0173",
+"Square": "Kvadratas",
+"Default": "Pagrindinis",
+"Lower Alpha": "Ma\u017eosios raid\u0117s",
+"Circle": "Apskritimas",
+"Disc": "Diskas",
+"Upper Alpha": "Did\u017eiosios raid\u0117s",
+"Upper Roman": "Did\u017eiosios rom\u0117n\u0173",
+"Lower Roman": "Ma\u017eosios rom\u0117n\u0173",
+"Emoticons": "Jaustukai",
+"Horizontal space": "Horizontalus tarpas",
+"Insert\/edit image": "\u012eterpti|Tvarkyti paveiksl\u0117l\u012f",
+"General": "Pagrindinis",
+"Advanced": "I\u0161pl\u0117stas",
+"Source": "Pirmin\u0117 nuoroda",
+"Border": "R\u0117melis",
+"Constrain proportions": "Taikyti proporcijas",
+"Vertical space": "Vertikalus tarpas",
+"Image description": "Paveiksl\u0117lio apra\u0161as",
+"Style": "Stilius",
+"Dimensions": "Matmenys",
+"Insert image": "\u012eterpti paveiksl\u0117l\u012f",
+"Remove link": "\u0160alinti nuorod\u0105",
+"Url": "Nuoroda",
+"Text to display": "Rodomas tekstas",
+"Insert link": "\u012eterpti nuorod\u0105",
+"New window": "Naujas langas",
+"None": "Niekas",
+"Target": "Tikslin\u0117 nuoroda",
+"Insert\/edit link": "\u012eterpti\/taisyti nuorod\u0105",
+"Show invisible characters": "Rodyti nematomus simbolius"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/lv.js b/framework/Web/Javascripts/source/tinymce-405/langs/lv.js
new file mode 100755
index 00000000..e85bed57
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/lv.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('lv',{
+"Cut": "Izgriezt",
+"Header 2": "Otr\u0101 l\u012bme\u0146a virsraksts",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "J\u016bsu p\u0101rl\u016bkprogramma neatbalsta piek\u013cuvi starpliktuvei. L\u016bdzu izmantojiet Ctrl+X\/C\/V klaviat\u016bras sa\u012bsnes.",
+"Div": "Div elements",
+"Paste": "Iel\u012bm\u0113t",
+"Close": "Aizv\u0113rt",
+"Pre": "Pre elements",
+"Align right": "L\u012bdzin\u0101t pa labi",
+"New document": "Jauns dokuments",
+"Blockquote": "Cit\u0101ts",
+"Numbered list": "Numur\u0113ts saraksts",
+"Increase indent": "Palielin\u0101t atk\u0101pi",
+"Formats": "Form\u0101ti",
+"Headers": "Virsraksti",
+"Select all": "Iez\u012bm\u0113t",
+"Header 3": "Tre\u0161\u0101 l\u012bme\u0146a virsraksts",
+"Blocks": "Bloka elements",
+"Undo": "Atsaukt",
+"Strikethrough": "P\u0101rsv\u012btrot",
+"Bullet list": "Nenumuer\u0113ts saraksts",
+"Header 1": "Pirm\u0101 l\u012bme\u0146a virsraksts",
+"Superscript": "Aug\u0161raksts",
+"Clear formatting": "No\u0146emt format\u0113jumu",
+"Subscript": "Apak\u0161raksts",
+"Header 6": "Sest\u0101 l\u012bme\u0146a virsraksts",
+"Redo": "Atcelt atsauk\u0161anu",
+"Paragraph": "Paragr\u0101fs",
+"Ok": "Labi",
+"Bold": "Treknraksts",
+"Code": "Koda elements",
+"Italic": "Kurs\u012bvs",
+"Align center": "Centr\u0113t",
+"Header 5": "Piekt\u0101 l\u012bme\u0146a virsraksts",
+"Decrease indent": "Samazin\u0101t atk\u0101pi",
+"Header 4": "Ceturt\u0101 l\u012bme\u0146a virsraksts",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Iel\u012bm\u0113\u0161ana tagad ir vienk\u0101r\u0161teksta re\u017e\u012bm\u0101. Saturs tiks iel\u012bm\u0113ts k\u0101 vienk\u0101r\u0161teksts, l\u012bdz \u0161\u012b opcija tiks atsl\u0113gta.",
+"Underline": "Pasv\u012btrot",
+"Cancel": "Atcelt",
+"Justify": "L\u012bdzin\u0101t abas malas",
+"Inline": "Rindi\u0146as elements",
+"Copy": "Kop\u0113t",
+"Align left": "L\u012bdzin\u0101t pa kreisi",
+"Visual aids": "Uzskates l\u012bdzek\u013ci",
+"Lower Greek": "Grie\u0137u mazie burti",
+"Square": "Kvadr\u0101ts",
+"Default": "Noklus\u0113juma",
+"Lower Alpha": "Lat\u012b\u0146u mazie burti",
+"Circle": "Aplis",
+"Disc": "Disks",
+"Upper Alpha": "Lat\u012b\u0146u lielie burti",
+"Upper Roman": "Romie\u0161u lielie burti",
+"Lower Roman": "Romie\u0161u mazie burti",
+"Name": "V\u0101rds",
+"Anchor": "Enkurelements",
+"You have unsaved changes are you sure you want to navigate away?": "Jums ir nesaglab\u0101tas izmai\u0146as, esat dro\u0161s, ka v\u0113laties doties prom",
+"Restore last draft": "Atjaunot p\u0113d\u0113jo melnrakstu",
+"Special character": "\u012apa\u0161ais simbols",
+"Source code": "Pirmkods",
+"Right to left": "No lab\u0101s uz kreiso",
+"Left to right": "No kreis\u0101s uz labo",
+"Emoticons": "Emocijas",
+"Robots": "Programmas",
+"Document properties": "Dokumenta uzst\u0101d\u012bjumi",
+"Title": "Nosaukums",
+"Keywords": "Atsl\u0113gv\u0101rdi",
+"Encoding": "Kod\u0113jums",
+"Description": "Apraksts",
+"Author": "Autors",
+"Fullscreen": "Pilnekr\u0101na re\u017e\u012bms",
+"Horizontal line": "Horizont\u0101la l\u012bnija",
+"Horizontal space": "Horizont\u0101l\u0101 vieta",
+"Insert\/edit image": "Ievietot\/labot att\u0113lu",
+"General": "Visp\u0101r\u012bgi",
+"Advanced": "Papildus",
+"Source": "Avots",
+"Border": "Apmale",
+"Constrain proportions": "Saglab\u0101t malu attiec\u012bbu",
+"Vertical space": "Vertik\u0101l\u0101 vieta",
+"Image description": "Att\u0113la apraksts",
+"Style": "Stils",
+"Dimensions": "Izm\u0113ri",
+"Insert image": "Ievietot att\u0113lu",
+"Insert date\/time": "Ievietot datumu\/laiku",
+"Remove link": "No\u0146emt saiti",
+"Url": "Adrese",
+"Text to display": "Teksts",
+"Anchors": "Enkurelements",
+"Insert link": "Ievietot saiti",
+"New window": "Jauns logs",
+"None": "Nek\u0101",
+"Target": "M\u0113r\u0137is",
+"Insert\/edit link": "Ievietot\/labot saiti",
+"Insert\/edit video": "Ievietot\/redi\u0123\u0113t video",
+"Poster": "Att\u0113ls",
+"Alternative source": "Alternat\u012bvs avots",
+"Paste your embed code below:": "Iekop\u0113jiet embed kodu zem\u0101k:",
+"Insert video": "Ievietot video",
+"Embed": "Embed",
+"Nonbreaking space": "L\u012bnij-nedalo\u0161s atstarpes simbols",
+"Page break": "P\u0101rnest jaun\u0101 lap\u0101",
+"Paste as text": "Iel\u012bm\u0113t k\u0101 tekstu",
+"Preview": "Priek\u0161skat\u012bjums",
+"Print": "Print\u0113t",
+"Save": "Saglab\u0101t",
+"Could not find the specified string.": "Mekl\u0113tais teksts netika atrasts",
+"Replace": "Aizvietot",
+"Next": "N\u0101ko\u0161ais",
+"Whole words": "Pilnus v\u0101rdus",
+"Find and replace": "Mekl\u0113t un aizvietot",
+"Replace with": "Aizvietot ar",
+"Find": "Mekl\u0113t",
+"Replace all": "Aizvietot visu",
+"Match case": "Re\u0123istrj\u016bt\u012bgs",
+"Prev": "Iepriek\u0161\u0113jais",
+"Spellcheck": "Pareizrakst\u012bbas p\u0101rbaude",
+"Finish": "Beigt",
+"Ignore all": "Ignor\u0113t visu",
+"Ignore": "Ignor\u0113t",
+"Insert row before": "Ievietot rindu pirms",
+"Rows": "Rindas",
+"Height": "Augstums",
+"Paste row after": "Iel\u012bm\u0113t rindu p\u0113c",
+"Alignment": "L\u012bdzin\u0101jums",
+"Column group": "Kolonnu grupa",
+"Row": "Rinda",
+"Insert column before": "Ievietot kolonu pirms",
+"Split cell": "Sadal\u012bt \u0161\u016bnas",
+"Cell padding": "\u0160\u016bnas atstatumi",
+"Cell spacing": "\u0160\u016bnu atstarpes",
+"Row type": "Rindas tips",
+"Insert table": "Ievietot tabulu",
+"Body": "\u0136ermenis",
+"Caption": "Virsraksts",
+"Footer": "K\u0101jene",
+"Delete row": "Dz\u0113st rindu",
+"Paste row before": "Iel\u012bm\u0113t rindu pirms",
+"Scope": "Apgabals",
+"Delete table": "Dz\u0113st tabulu",
+"Header cell": "Galvenes \u0161\u016bna",
+"Column": "Kolona",
+"Cell": "\u0160\u016bna",
+"Header": "Galvene",
+"Cell type": "\u0160\u016bnas tips",
+"Copy row": "Kop\u0113t rindu",
+"Row properties": "Rindas uzst\u0101d\u012bjumi",
+"Table properties": "Tabulas uzst\u0101d\u012bjumi",
+"Row group": "Rindu grupa",
+"Right": "Pa labi",
+"Insert column after": "Ievietot kolonu p\u0113c",
+"Cols": "Kolonas",
+"Insert row after": "Ievietot rindu p\u0113c",
+"Width": "Platums",
+"Cell properties": "\u0160\u016bnas uzst\u0101d\u012bjumi",
+"Left": "Pa kreisi",
+"Cut row": "Izgriezt rindu",
+"Delete column": "Dz\u0113st kolonu",
+"Center": "Centr\u0113t",
+"Merge cells": "Apvienot \u0161\u016bnas",
+"Insert template": "Ievietot \u0161ablonu",
+"Templates": "\u0160abloni",
+"Background color": "Fona kr\u0101sa",
+"Text color": "Teksta kr\u0101sa",
+"Show blocks": "R\u0101d\u012bt blokus",
+"Show invisible characters": "R\u0101d\u012bt neredzam\u0101s rakstz\u012bmes",
+"Words: {0}": "V\u0101rdi: {0}",
+"Insert": "Ievietot",
+"File": "Fails",
+"Edit": "Labot",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Vizu\u0101li redi\u0123\u0113jama teksta apgabals. Nospiediet ALT-F9 izv\u0113lnei, ALT-F10 r\u012bkjoslai vai ALT-0 pal\u012bdz\u012bbai.",
+"Tools": "R\u012bki",
+"View": "Skat\u012bt",
+"Table": "Tabula",
+"Format": "Form\u0101ts"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/nb_NO.js b/framework/Web/Javascripts/source/tinymce-405/langs/nb_NO.js
new file mode 100755
index 00000000..4eb851ed
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/nb_NO.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('nb_NO',{
+"Cut": "Klipp ut",
+"Header 2": "Overskrift 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Nettleseren din st\u00f8tter ikke direkte tilgang til utklippsboken. Bruk istedet tastatur-snarveiene Ctrl+X\/C\/V, eller Cmd+X\/C\/V p\u00e5 Mac.",
+"Div": "Div",
+"Paste": "Lim inn",
+"Close": "Lukk",
+"Pre": "Pre",
+"Align right": "H\u00f8yrejustert",
+"New document": "Nytt dokument",
+"Blockquote": "Blokksitat",
+"Numbered list": "Nummerliste",
+"Increase indent": "\u00d8k innrykk",
+"Formats": "Stiler",
+"Headers": "Overskrifter",
+"Select all": "Marker alt",
+"Header 3": "Overskrift 3",
+"Blocks": "Blokker",
+"Undo": "Angre",
+"Strikethrough": "Gjennomstreket",
+"Bullet list": "Punktliste",
+"Header 1": "Overskrift 1",
+"Superscript": "Hevet skrift",
+"Clear formatting": "Fjern formateringer",
+"Subscript": "Senket skrift",
+"Header 6": "Overskrift 6",
+"Redo": "Utf\u00f8r likevel",
+"Paragraph": "Avsnitt",
+"Ok": "OK",
+"Bold": "Halvfet",
+"Code": "Kode",
+"Italic": "Kursiv",
+"Align center": "Midtstilt",
+"Header 5": "Overskrift 5",
+"Decrease indent": "Reduser innrykk",
+"Header 4": "Overskrift 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lim inn - er n\u00e5 i ren-tekst modus. Kopiert innhold vil bli limt inn som ren-tekst inntil du sl\u00e5r av dette valget.",
+"Underline": "Understreket",
+"Cancel": "Avbryt",
+"Justify": "Juster alle linjer",
+"Inline": "Innkapslet - inline",
+"Copy": "Kopier",
+"Align left": "Venstrejustert",
+"Visual aids": "Visuelle hjelpemidler",
+"Lower Greek": "Greske minuskler",
+"Square": "Fylt firkant",
+"Default": "Normal",
+"Lower Alpha": "Minuskler",
+"Circle": "\u00c5pen sirkel",
+"Disc": "Fylt sirkel",
+"Upper Alpha": "Versaler",
+"Upper Roman": "Romerske versaler",
+"Lower Roman": "Romerske minuskler",
+"Name": "Navn",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "Endringer er ikke arkivert. Vil du fortsette uten \u00e5 arkivere endringer?",
+"Restore last draft": "Gjenopprett siste utkast",
+"Special character": "Spesialtegn",
+"Source code": "Kildekode",
+"Right to left": "H\u00f8yre til venstre",
+"Left to right": "Venstre til h\u00f8yre",
+"Emoticons": "Emoticons",
+"Robots": "Roboter",
+"Document properties": "Dokumentegenskaper",
+"Title": "Tittel",
+"Keywords": "N\u00f8kkelord",
+"Encoding": "Tegnkoding",
+"Description": "Beskrivelse",
+"Author": "Forfatter",
+"Fullscreen": "Fullskjerm",
+"Horizontal line": "Horisontal linje",
+"Horizontal space": "Horisontal marg",
+"Insert\/edit image": "Sett inn\/endre bilde",
+"General": "Generelt",
+"Advanced": "Avansert",
+"Source": "Bildelenke",
+"Border": "Ramme",
+"Constrain proportions": "Behold proporsjoner",
+"Vertical space": "Vertikal marg",
+"Image description": "Bildebeskrivelse",
+"Style": "Stil",
+"Dimensions": "Dimensjoner",
+"Insert image": "Sett inn bilde",
+"Insert date\/time": "Sett inn dato\/tid",
+"Remove link": "Fjern lenke",
+"Url": "Url",
+"Text to display": "Tekst som skal vises",
+"Anchors": "Anker",
+"Insert link": "Sett inn lenke",
+"New window": "Nytt vindu",
+"None": "Ingen",
+"Target": "M\u00e5l",
+"Insert\/edit link": "Sett inn\/endre lenke",
+"Insert\/edit video": "Sett inn\/endre video",
+"Poster": "Poster",
+"Alternative source": "Alternativ kilde",
+"Paste your embed code below:": "Lim inn inkluderings-koden nedenfor",
+"Insert video": "Sett inn video",
+"Embed": "Inkluder",
+"Nonbreaking space": "Hardt mellomrom",
+"Page break": "Sideskifte",
+"Paste as text": "Lim inn som tekst",
+"Preview": "Forh\u00e5ndsvisning",
+"Print": "Skriv ut",
+"Save": "Arkiver",
+"Could not find the specified string.": "Kunne ikke finne den spesifiserte teksten",
+"Replace": "Erstatt",
+"Next": "Neste",
+"Whole words": "Hele ord",
+"Find and replace": "Finn og erstatt",
+"Replace with": "Erstatt med",
+"Find": "Finn",
+"Replace all": "Erstatt alle",
+"Match case": "Match store og sm\u00e5 bokstaver",
+"Prev": "Forrige",
+"Spellcheck": "Stavekontroll",
+"Finish": "Avslutt",
+"Ignore all": "Ignorer alle",
+"Ignore": "Ignorer",
+"Insert row before": "Sett inn rad f\u00f8r",
+"Rows": "Rader",
+"Height": "H\u00f8yde",
+"Paste row after": "Lim inn rad etter",
+"Alignment": "Justering",
+"Column group": "Kolonnegruppe",
+"Row": "Rad",
+"Insert column before": "Sett inn kolonne f\u00f8r",
+"Split cell": "Splitt celle",
+"Cell padding": "Celle rammemarg",
+"Cell spacing": "Celleavstand",
+"Row type": "Radtype",
+"Insert table": "Sett inn tabell",
+"Body": "Br\u00f8dtekst",
+"Caption": "Tittel",
+"Footer": "Bunntekst",
+"Delete row": "Slett rad",
+"Paste row before": "Lim inn rad f\u00f8r",
+"Scope": "Omfang",
+"Delete table": "Slett tabell",
+"Header cell": "Topptekst celle",
+"Column": "Kolonne",
+"Cell": "Celle",
+"Header": "Topptekst",
+"Cell type": "Celletype",
+"Copy row": "Kopier rad",
+"Row properties": "Rad egenskaper",
+"Table properties": "Tabell egenskaper",
+"Row group": "Radgruppe",
+"Right": "H\u00f8yre",
+"Insert column after": "Sett inn kolonne etter",
+"Cols": "Kolonner",
+"Insert row after": "Sett in rad etter",
+"Width": "Bredde",
+"Cell properties": "Celle egenskaper",
+"Left": "Venstre",
+"Cut row": "Klipp ut rad",
+"Delete column": "Slett kolonne",
+"Center": "Midtstilt",
+"Merge cells": "Sl\u00e5 sammen celler",
+"Insert template": "Sett inn mal",
+"Templates": "Maler",
+"Background color": "Bakgrunnsfarge",
+"Text color": "Tekstfarge",
+"Show blocks": "Vis blokker",
+"Show invisible characters": "Vis usynlige tegn",
+"Words: {0}": "Antall ord: {0}",
+"Insert": "Sett inn",
+"File": "Arkiv",
+"Edit": "Rediger",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Tekstredigering. Tast ALT-F9 for meny. Tast ALT-F10 for verkt\u00f8ys-rader. Trykk ALT-0 for hjelp.",
+"Tools": "Verkt\u00f8y",
+"View": "Vis",
+"Table": "Tabell",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/nl.js b/framework/Web/Javascripts/source/tinymce-405/langs/nl.js
new file mode 100755
index 00000000..92b6dcef
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/nl.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('nl',{
+"Cut": "Knippen",
+"Header 2": "Kop 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Uw browser ondersteunt geen toegang tot het clipboard. Gelieve ctrl+X\/C\/V sneltoetsen te gebruiken.",
+"Div": "Div",
+"Paste": "Plakken",
+"Close": "Sluiten",
+"Pre": "Pre",
+"Align right": "Rechts uitlijnen",
+"New document": "Nieuw document",
+"Blockquote": "Quote",
+"Numbered list": "Nummering",
+"Increase indent": "Inspringen vergroten",
+"Formats": "Opmaak",
+"Headers": "Kopteksten",
+"Select all": "Alles selecteren",
+"Header 3": "Hoofding 3",
+"Blocks": "Blok",
+"Undo": "Ongedaan maken",
+"Strikethrough": "Doorhalen",
+"Bullet list": "Opsommingsteken",
+"Header 1": "Kop 1",
+"Superscript": "Superscript",
+"Clear formatting": "Opmaak verwijderen",
+"Subscript": "Subscript",
+"Header 6": "Hoofding 6",
+"Redo": "Opnieuw",
+"Paragraph": "Paragraaf",
+"Ok": "Ok\u00e9",
+"Bold": "Vet",
+"Code": "Code",
+"Italic": "Schuin",
+"Align center": "Centreren",
+"Header 5": "Hoofding 5",
+"Decrease indent": "Inspringen verkleinen",
+"Header 4": "Hoofding 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Plakken gebeurt nu als platte tekst. Tekst wordt nu ingevoegd zonder opmaak tenzij deze optie uitgeschakeld wordt.",
+"Underline": "Onderstreept",
+"Cancel": "Annuleren",
+"Justify": "Uitlijnen",
+"Inline": "Inlijn",
+"Copy": "Kopi\u00ebren",
+"Align left": "Links uitlijnen",
+"Visual aids": "Hulpmiddelen",
+"Lower Greek": "greek verlagen",
+"Square": "Vierkant",
+"Default": "Standaard",
+"Lower Alpha": "Kleine letters",
+"Circle": "Cirkel",
+"Disc": "Bolletje",
+"Upper Alpha": "Hoofdletters",
+"Upper Roman": "Roman vergroten",
+"Lower Roman": "Roman verlagen",
+"Name": "Naam",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "U hebt niet alles opgeslagen bent u zeker dat u de pagina wenst te verlaten?",
+"Restore last draft": "Herstel het laatste concept",
+"Special character": "Speciale karakters",
+"Source code": "Broncode",
+"Right to left": "Rechts naar links",
+"Left to right": "Links naar rechts",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Document eigenschappen",
+"Title": "Titel",
+"Keywords": "Sleutelwoorden",
+"Encoding": "Codering",
+"Description": "Omschrijving",
+"Author": "Auteur",
+"Fullscreen": "Volledig scherm",
+"Horizontal line": "Horizontale lijn",
+"Horizontal space": "Horizontale spatie",
+"Insert\/edit image": "afbeelding invoegen\/bewerken",
+"General": "Algemeen",
+"Advanced": "geavanceerd",
+"Source": "Bron",
+"Border": "Rand",
+"Constrain proportions": "verhoudingen behouden",
+"Vertical space": "Verticale spatie",
+"Image description": "Afbeelding omschrijving",
+"Style": "Stijl",
+"Dimensions": "Afmetingen",
+"Insert image": "Afbeelding invoegen",
+"Insert date\/time": "Voeg datum\/tijd in",
+"Remove link": "Link verwijderen",
+"Url": "Url",
+"Text to display": "Linktekst",
+"Anchors": "Anker",
+"Insert link": "Hyperlink invoegen",
+"New window": "Nieuw venster",
+"None": "Geen",
+"Target": "doel",
+"Insert\/edit link": "Hyperlink invoegen\/bewerken",
+"Insert\/edit video": "Video invoegen\/bewerken",
+"Poster": "Poster",
+"Alternative source": "Alternatieve bron",
+"Paste your embed code below:": "Plak u in te sluiten code hieronder:",
+"Insert video": "Video invoegen",
+"Embed": "insluiten",
+"Nonbreaking space": "Vaste spatie invoegen",
+"Page break": "Pagina einde",
+"Paste as text": "Plakken",
+"Preview": "Voorbeeld",
+"Print": "Print",
+"Save": "Opslaan",
+"Could not find the specified string.": "Geen resultaten gevonden",
+"Replace": "Vervangen",
+"Next": "Volgende",
+"Whole words": "alleen hele worden",
+"Find and replace": "Zoek en vervang",
+"Replace with": "Vervangen door",
+"Find": "Zoeken",
+"Replace all": "Vervang allemaal",
+"Match case": "Overeenkomen",
+"Prev": "Vorige",
+"Spellcheck": "Spellingscontrole",
+"Finish": "Einde",
+"Ignore all": "Alles negeren",
+"Ignore": "Negeren",
+"Insert row before": "Voeg rij boven toe",
+"Rows": "Rijen",
+"Height": "Hoogte",
+"Paste row after": "Plak rij achter",
+"Alignment": "uitlijning",
+"Column group": "kolom groep",
+"Row": "Rij",
+"Insert column before": "Voeg kolom in voor",
+"Split cell": "Cel splitsen",
+"Cell padding": "cel pading",
+"Cell spacing": "celruimte",
+"Row type": "Rij type",
+"Insert table": "Tabel invoegen",
+"Body": "Body",
+"Caption": "onderschrift",
+"Footer": "voettekst",
+"Delete row": "Verwijder rij",
+"Paste row before": "Plak rij voor",
+"Scope": "wijdte",
+"Delete table": "Verwijder tabel",
+"Header cell": "koptekstcel",
+"Column": "Kolom",
+"Cell": "Cel",
+"Header": "hoofdtekst",
+"Cell type": "cel type",
+"Copy row": "Kopieer rij",
+"Row properties": "Rij eigenschappen",
+"Table properties": "Tabel eigenschappen",
+"Row group": "rij groep",
+"Right": "Rechts",
+"Insert column after": "Voeg kolom in na",
+"Cols": "kollomen",
+"Insert row after": "Voeg rij onder toe",
+"Width": "Breedte",
+"Cell properties": "Cel eigenschappen",
+"Left": "Links",
+"Cut row": "Knip rij",
+"Delete column": "Verwijder kolom",
+"Center": "Midden",
+"Merge cells": "Cellen samenvoegen",
+"Insert template": "Sjabloon invoegen",
+"Templates": "Sjablonen",
+"Background color": "Achtergrondkleur",
+"Text color": "Tekstkleur",
+"Show blocks": "Blokken tonen",
+"Show invisible characters": "Onzichtbare karakters tonen",
+"Words: {0}": "Woorden: {0}",
+"Insert": "Invoegen",
+"File": "Bestand",
+"Edit": "Bewerken",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Druk ALT-F9 voor de menu. Druk ALT-F10 voor de toolbar. Druk ALT-0 voor de help.",
+"Tools": "gereedschap",
+"View": "Beeld",
+"Table": "Tabel",
+"Format": "Opmaak"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/pl.js b/framework/Web/Javascripts/source/tinymce-405/langs/pl.js
new file mode 100755
index 00000000..953966d2
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/pl.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('pl',{
+"Cut": "Wytnij",
+"Header 2": "Nag\u0142\u00f3wek 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Twoja przegl\u0105darka nie obs\u0142uguje bezpo\u015bredniego dost\u0119pu do schowka. U\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "Wklej",
+"Close": "Zamknij",
+"Pre": "Sformatowany tekst",
+"Align right": "Wyr\u00f3wnaj do prawej",
+"New document": "Nowy dokument",
+"Blockquote": "Blok cytatu",
+"Numbered list": "Lista numerowana",
+"Increase indent": "Zwi\u0119ksz wci\u0119cie",
+"Formats": "Formaty",
+"Headers": "Nag\u0142\u00f3wki",
+"Select all": "Zaznacz wszystko",
+"Header 3": "Nag\u0142\u00f3wek 3",
+"Blocks": "Bloki",
+"Undo": "Cofnij",
+"Strikethrough": "Przekre\u015blenie",
+"Bullet list": "Lista wypunktowana",
+"Header 1": "Nag\u0142\u00f3wek 1",
+"Superscript": "Indeks g\u00f3rny",
+"Clear formatting": "Wyczy\u015b\u0107 formatowanie",
+"Subscript": "Indeks dolny",
+"Header 6": "Nag\u0142\u00f3wek 6",
+"Redo": "Pon\u00f3w",
+"Paragraph": "Akapit",
+"Ok": "Ok",
+"Bold": "Pogrubienie",
+"Code": "Kod \u017ar\u00f3d\u0142owy",
+"Italic": "Kursywa",
+"Align center": "Wyr\u00f3wnaj do \u015brodka",
+"Header 5": "Nag\u0142\u00f3wek 5",
+"Decrease indent": "Zmniejsz wci\u0119cie",
+"Header 4": "Nag\u0142\u00f3wek 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Wklejanie jest w trybie tekstowym. Zawarto\u015b\u0107 zostanie wklejona jako zwyk\u0142y tekst dop\u00f3ki nie wy\u0142\u0105czysz tej opcji.",
+"Underline": "Podkre\u015blenie",
+"Cancel": "Anuluj",
+"Justify": "Wyjustuj",
+"Inline": "W tek\u015bcie",
+"Copy": "Kopiuj",
+"Align left": "Wyr\u00f3wnaj do lewej",
+"Visual aids": "Pomoce wizualne",
+"Lower Greek": "Ma\u0142e greckie",
+"Square": "Kwadrat",
+"Default": "Domy\u015blne",
+"Lower Alpha": "Ma\u0142e litery",
+"Circle": "K\u00f3\u0142ko",
+"Disc": "Dysk",
+"Upper Alpha": "Wielkie litery",
+"Upper Roman": "Wielkie rzymskie",
+"Lower Roman": "Ma\u0142e rzymskie",
+"Name": "Nazwa",
+"Anchor": "Kotwica",
+"You have unsaved changes are you sure you want to navigate away?": "Masz niezapisane zmiany. Czy na pewno chcesz opu\u015bci\u0107 stron\u0119?",
+"Restore last draft": "Przywr\u00f3\u0107 ostatni szkic",
+"Special character": "Znak specjalny",
+"Source code": "Kod \u017ar\u00f3d\u0142owy",
+"Right to left": "Od prawej do lewej",
+"Left to right": "Od lewej do prawej",
+"Emoticons": "Emotikony",
+"Robots": "Roboty",
+"Document properties": "W\u0142a\u015bciwo\u015bci dokumentu",
+"Title": "Tytu\u0142",
+"Keywords": "S\u0142owa kluczowe",
+"Encoding": "Kodowanie",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Pe\u0142ny ekran",
+"Horizontal line": "Pozioma linia",
+"Horizontal space": "Odst\u0119p poziomy",
+"Insert\/edit image": "Wstaw\/edytuj obrazek",
+"General": "Og\u00f3lne",
+"Advanced": "Zaawansowane",
+"Source": "\u0179r\u00f3d\u0142o",
+"Border": "Ramka",
+"Constrain proportions": "Zachowaj proporcje",
+"Vertical space": "Odst\u0119p pionowy",
+"Image description": "Opis obrazka",
+"Style": "Styl",
+"Dimensions": "Wymiary",
+"Insert image": "Wstaw obrazek",
+"Insert date\/time": "Wstaw dat\u0119\/czas",
+"Remove link": "Usu\u0144 link",
+"Url": "Url",
+"Text to display": "Tekst do wy\u015bwietlenia",
+"Anchors": "Kotwice",
+"Insert link": "Wstaw link",
+"New window": "Nowe okno",
+"None": "\u017baden",
+"Target": "Cel",
+"Insert\/edit link": "Wstaw\/edytuj link",
+"Insert\/edit video": "Wstaw\/edytuj wideo",
+"Poster": "Plakat",
+"Alternative source": "Alternatywne \u017ar\u00f3d\u0142o",
+"Paste your embed code below:": "Wklej tutaj kod do osadzenia:",
+"Insert video": "Wstaw wideo",
+"Embed": "Osad\u017a",
+"Nonbreaking space": "Nie\u0142amliwa spacja",
+"Page break": "Podzia\u0142 strony",
+"Paste as text": "Wklej jako zwyk\u0142y tekst",
+"Preview": "Podgl\u0105d",
+"Print": "Drukuj",
+"Save": "Zapisz",
+"Could not find the specified string.": "Nie znaleziono szukanego tekstu.",
+"Replace": "Zamie\u0144",
+"Next": "Nast.",
+"Whole words": "Ca\u0142e s\u0142owa",
+"Find and replace": "Znajd\u017a i zamie\u0144",
+"Replace with": "Zamie\u0144 na",
+"Find": "Znajd\u017a",
+"Replace all": "Zamie\u0144 wszystko",
+"Match case": "Dopasuj wielko\u015b\u0107 liter",
+"Prev": "Poprz.",
+"Spellcheck": "Sprawdzanie pisowni",
+"Finish": "Zako\u0144cz",
+"Ignore all": "Ignoruj wszystko",
+"Ignore": "Ignoruj",
+"Insert row before": "Wstaw wiersz przed",
+"Rows": "Wiersz.",
+"Height": "Wysoko\u015b\u0107",
+"Paste row after": "Wklej wiersz po",
+"Alignment": "Wyr\u00f3wnanie",
+"Column group": "Grupa kolumn",
+"Row": "Wiersz",
+"Insert column before": "Wstaw kolumn\u0119 przed",
+"Split cell": "Podziel kom\u00f3rk\u0119",
+"Cell padding": "Dope\u0142nienie kom\u00f3rki",
+"Cell spacing": "Odst\u0119py kom\u00f3rek",
+"Row type": "Typ wiersza",
+"Insert table": "Wstaw tabel\u0119",
+"Body": "Tre\u015b\u0107",
+"Caption": "Tytu\u0142",
+"Footer": "Stopka",
+"Delete row": "Usu\u0144 wiersz",
+"Paste row before": "Wklej wiersz przed",
+"Scope": "Kontekst",
+"Delete table": "Usu\u0144 tabel\u0119",
+"Header cell": "Kom\u00f3rka nag\u0142\u00f3wka",
+"Column": "Kolumna",
+"Cell": "Kom\u00f3rka",
+"Header": "Nag\u0142\u00f3wek",
+"Cell type": "Typ kom\u00f3rki",
+"Copy row": "Kopiuj wiersz",
+"Row properties": "W\u0142a\u015bciwo\u015bci wiersza",
+"Table properties": "W\u0142a\u015bciwo\u015bci tabeli",
+"Row group": "Grupa wierszy",
+"Right": "Prawo",
+"Insert column after": "Wstaw kolumn\u0119 po",
+"Cols": "Kol.",
+"Insert row after": "Wstaw wiersz po",
+"Width": "Szeroko\u015b\u0107",
+"Cell properties": "W\u0142a\u015bciwo\u015bci kom\u00f3rki",
+"Left": "Lewo",
+"Cut row": "Wytnij wiersz",
+"Delete column": "Usu\u0144 kolumn\u0119",
+"Center": "\u015arodek",
+"Merge cells": "\u0141\u0105cz kom\u00f3rki",
+"Insert template": "Wstaw szablon",
+"Templates": "Szablony",
+"Background color": "Kolor t\u0142a",
+"Text color": "Kolor tekstu",
+"Show blocks": "Poka\u017c bloki",
+"Show invisible characters": "Poka\u017c niewidoczne znaki",
+"Words: {0}": "S\u0142\u00f3w: {0}",
+"Insert": "Wstaw",
+"File": "Plik",
+"Edit": "Edycja",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Obszar Edycji. ALT-F9 - menu. ALT-F10 - pasek narz\u0119dzi. ALT-0 - pomoc",
+"Tools": "Narz\u0119dzia",
+"View": "Widok",
+"Table": "Tabela",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/pt_BR.js b/framework/Web/Javascripts/source/tinymce-405/langs/pt_BR.js
new file mode 100755
index 00000000..116035b3
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/pt_BR.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('pt_BR',{
+"Cut": "Recortar",
+"Header 2": "Cabe\u00e7alho 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Seu navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X - C - V do teclado",
+"Div": "Div",
+"Paste": "Colar",
+"Close": "Fechar",
+"Pre": "Pre",
+"Align right": "Alinhar \u00e0 direita",
+"New document": "Novo documento",
+"Blockquote": "Aspas",
+"Numbered list": "Lista ordenada",
+"Increase indent": "Aumentar recuo",
+"Formats": "Formatos",
+"Headers": "Cabe\u00e7alhos",
+"Select all": "Selecionar tudo",
+"Header 3": "Cabe\u00e7alho 3",
+"Blocks": "Blocos",
+"Undo": "Desfazer",
+"Strikethrough": "Riscar",
+"Bullet list": "Lista n\u00e3o ordenada",
+"Header 1": "Cabe\u00e7alho 1",
+"Superscript": "Sobrescrever",
+"Clear formatting": "Limpar formata\u00e7\u00e3o",
+"Subscript": "Subscrever",
+"Header 6": "Cabe\u00e7alho 6",
+"Redo": "Refazer",
+"Paragraph": "Par\u00e1grafo",
+"Ok": "Ok",
+"Bold": "Negrito",
+"Code": "C\u00f3digo",
+"Italic": "It\u00e1lico",
+"Align center": "Centralizar",
+"Header 5": "Cabe\u00e7alho 5",
+"Decrease indent": "Diminuir recuo",
+"Header 4": "Cabe\u00e7alho 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 agora em modo texto plano. O conte\u00fado ser\u00e1 colado como texto plano at\u00e9 voc\u00ea desligar esta op\u00e7\u00e3o.",
+"Underline": "Sublinhar",
+"Cancel": "Cancelar",
+"Justify": "Justificar",
+"Inline": "Em linha",
+"Copy": "Copiar",
+"Align left": "Alinhar \u00e0 esquerda",
+"Visual aids": "Ajuda visual",
+"Lower Greek": "\u03b1. \u03b2. \u03b3. ...",
+"Square": "Quadrado",
+"Default": "Padr\u00e3o",
+"Lower Alpha": "a. b. c. ...",
+"Circle": "C\u00edrculo",
+"Disc": "Disco",
+"Upper Alpha": "A. B. C. ...",
+"Upper Roman": "I. II. III. ...",
+"Lower Roman": "i. ii. iii. ...",
+"Name": "Nome",
+"Anchor": "\u00c2ncora",
+"You have unsaved changes are you sure you want to navigate away?": "Voc\u00ea tem mudan\u00e7as n\u00e3o salvas. Voc\u00ea tem certeza que deseja sair?",
+"Restore last draft": "Restaurar \u00faltimo rascunho",
+"Special character": "Caracteres especiais",
+"Source code": "C\u00f3digo fonte",
+"Right to left": "Da direita para a esquerda",
+"Left to right": "Da esquerda para a direita",
+"Emoticons": "Emoticons",
+"Robots": "Rob\u00f4s",
+"Document properties": "Propriedades do documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palavras-chave",
+"Encoding": "Codifica\u00e7\u00e3o",
+"Description": "Descri\u00e7\u00e3o",
+"Author": "Autor",
+"Fullscreen": "Tela cheia",
+"Horizontal line": "Linha horizontal",
+"Horizontal space": "Espa\u00e7amento horizontal",
+"Insert\/edit image": "Inserir\/editar imagem",
+"General": "Geral",
+"Advanced": "Avan\u00e7ado",
+"Source": "Endere\u00e7o da imagem",
+"Border": "Borda",
+"Constrain proportions": "Manter propor\u00e7\u00f5es",
+"Vertical space": "Espa\u00e7amento vertical",
+"Image description": "Inserir descri\u00e7\u00e3o",
+"Style": "Estilo",
+"Dimensions": "Dimens\u00f5es",
+"Insert image": "Inserir imagem",
+"Insert date\/time": "Inserir data\/hora",
+"Remove link": "Remover link",
+"Url": "Url",
+"Text to display": "Texto para mostrar",
+"Anchors": "\u00c2ncoras",
+"Insert link": "Inserir link",
+"New window": "Nova janela",
+"None": "Nenhum",
+"Target": "Alvo",
+"Insert\/edit link": "Inserir\/editar link",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "Autor",
+"Alternative source": "Fonte alternativa",
+"Paste your embed code below:": "Insira o c\u00f3digo de incorpora\u00e7\u00e3o abaixo:",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Incorporar",
+"Nonbreaking space": "Espa\u00e7o n\u00e3o separ\u00e1vel",
+"Page break": "Quebra de p\u00e1gina",
+"Paste as text": "Colar como texto",
+"Preview": "Pr\u00e9-visualizar",
+"Print": "Imprimir",
+"Save": "Salvar",
+"Could not find the specified string.": "N\u00e3o foi poss\u00edvel encontrar o termo especificado",
+"Replace": "Substituir",
+"Next": "Pr\u00f3ximo",
+"Whole words": "Palavras inteiras",
+"Find and replace": "Localizar e substituir",
+"Replace with": "Substituir por",
+"Find": "Localizar",
+"Replace all": "Substituir tudo",
+"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas",
+"Prev": "Anterior",
+"Spellcheck": "Corretor ortogr\u00e1fico",
+"Finish": "Finalizar",
+"Ignore all": "Ignorar tudo",
+"Ignore": "Ignorar",
+"Insert row before": "Inserir linha antes",
+"Rows": "Linhas",
+"Height": "Altura",
+"Paste row after": "Colar linha depois",
+"Alignment": "Alinhamento",
+"Column group": "Agrupar coluna",
+"Row": "Linha",
+"Insert column before": "Inserir coluna antes",
+"Split cell": "Dividir c\u00e9lula",
+"Cell padding": "Espa\u00e7amento interno da c\u00e9lula",
+"Cell spacing": "Espa\u00e7amento da c\u00e9lula",
+"Row type": "Tipo de linha",
+"Insert table": "Inserir tabela",
+"Body": "Corpo",
+"Caption": "Legenda",
+"Footer": "Rodap\u00e9",
+"Delete row": "Excluir linha",
+"Paste row before": "Colar linha antes",
+"Scope": "Escopo",
+"Delete table": "Excluir tabela",
+"Header cell": "C\u00e9lula cabe\u00e7alho",
+"Column": "Coluna",
+"Cell": "C\u00e9lula",
+"Header": "Cabe\u00e7alho",
+"Cell type": "Tipo de c\u00e9lula",
+"Copy row": "Copiar linha",
+"Row properties": "Propriedades da linha",
+"Table properties": "Propriedades da tabela",
+"Row group": "Agrupar linha",
+"Right": "Direita",
+"Insert column after": "Inserir coluna depois",
+"Cols": "Colunas",
+"Insert row after": "Inserir linha depois",
+"Width": "Largura",
+"Cell properties": "Propriedades da c\u00e9lula",
+"Left": "Esquerdo",
+"Cut row": "Recortar linha",
+"Delete column": "Excluir coluna",
+"Center": "Centro",
+"Merge cells": "Agrupar c\u00e9lulas",
+"Insert template": "Inserir modelo",
+"Templates": "Modelos",
+"Background color": "Cor do fundo",
+"Text color": "Cor do texto",
+"Show blocks": "Mostrar blocos",
+"Show invisible characters": "Exibir caracteres invis\u00edveis",
+"Words: {0}": "Palavras: {0}",
+"Insert": "Inserir",
+"File": "Arquivo",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou ALT-0 para exibir a ajuda",
+"Tools": "Ferramentas",
+"View": "Visualizar",
+"Table": "Tabela",
+"Format": "Formatar"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/pt_PT.js b/framework/Web/Javascripts/source/tinymce-405/langs/pt_PT.js
new file mode 100755
index 00000000..b1abd8ef
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/pt_PT.js
@@ -0,0 +1,173 @@
+tinymce.addI18n('pt_PT',{
+"Cut": "Cortar",
+"Header 2": "Cabe\u00e7alho 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu navegador n\u00e3o suporta acesso directo \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X\/C\/V do seu teclado.",
+"Div": "Div",
+"Paste": "Colar",
+"Close": "Fechar",
+"Pre": "Pre",
+"Align right": "Alinhar \u00e0 direita",
+"New document": "Novo documento",
+"Blockquote": "Cita\u00e7\u00e3o em bloco",
+"Numbered list": "Lista numerada",
+"Increase indent": "Aumentar avan\u00e7o",
+"Formats": "Formatos",
+"Headers": "Cabe\u00e7alhos",
+"Select all": "Seleccionar tudo",
+"Header 3": "Cabe\u00e7alho 3",
+"Blocks": "Blocos",
+"Undo": "Anular",
+"Strikethrough": "Rasurado",
+"Bullet list": "Lista com marcadores",
+"Header 1": "Cabe\u00e7alho 1",
+"Superscript": "Superior \u00e0 linha",
+"Clear formatting": "Limpar formata\u00e7\u00e3o",
+"Subscript": "Inferior \u00e0 linha",
+"Header 6": "Cabe\u00e7alho 6",
+"Redo": "Restaurar",
+"Paragraph": "Par\u00e1grafo",
+"Ok": "Ok",
+"Bold": "Negrito",
+"Code": "C\u00f3digo",
+"Italic": "It\u00e1lico",
+"Align center": "Alinhar ao centro",
+"Header 5": "Cabe\u00e7alho 5",
+"Decrease indent": "Diminuir avan\u00e7o",
+"Header 4": "Cabe\u00e7alho 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 em modo de texto plano. O conte\u00fado ser\u00e1 colado como texto plano at\u00e9 desactivar esta op\u00e7\u00e3o.",
+"Underline": "Sublinhado",
+"Cancel": "Cancelar",
+"Justify": "Justificado",
+"Inline": "Inline",
+"Copy": "Copiar",
+"Align left": "Alinhar \u00e0 esquerda",
+"Visual aids": "Ajuda visual",
+"Lower Greek": "\\u03b1. \\u03b2. \\u03b3. ...",
+"Square": "Quadrado",
+"Default": "Padr\u00e3o",
+"Lower Alpha": "a. b. c. ...",
+"Circle": "C\u00edrculo",
+"Disc": "Disco",
+"Upper Alpha": "A. B. C. ...",
+"Upper Roman": "I. II. III. ...",
+"Lower Roman": "i. ii. iii. ...",
+"Name": "Nome",
+"Anchor": "\u00c2ncora",
+"You have unsaved changes are you sure you want to navigate away?": "Tem altera\u00e7\u00f5es que ainda n\u00e3o foram guardadas, tem a certeza que pretende sair?",
+"Restore last draft": "Restaurar o \u00faltimo rascunho",
+"Special character": "Car\u00e1cter especial",
+"Source code": "C\u00f3digo fonte",
+"Right to left": "Da direita para a esquerda",
+"Left to right": "Da esquerda para a direita",
+"Emoticons": "\u00cdcones expressivos",
+"Robots": "Rob\u00f4s",
+"Document properties": "Propriedades do documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palavras-chave",
+"Encoding": "Codifica\u00e7\u00e3o",
+"Description": "Descri\u00e7\u00e3o",
+"Author": "Autor",
+"Fullscreen": "Ecr\u00e3 completo",
+"Horizontal line": "Linha horizontal",
+"Horizontal space": "Espa\u00e7amento horizontal",
+"Insert\/edit image": "Inserir\/editar imagem",
+"General": "Geral",
+"Advanced": "Avan\u00e7ado",
+"Source": "Localiza\u00e7\u00e3o",
+"Border": "Contorno",
+"Constrain proportions": "Manter propor\u00e7\u00f5es",
+"Vertical space": "Espa\u00e7amento vertical",
+"Image description": "Descri\u00e7\u00e3o da imagem",
+"Style": "Estilo",
+"Dimensions": "Dimens\u00f5es",
+"Insert image": "Inserir imagem",
+"Insert date\/time": "Inserir data\/hora",
+"Remove link": "Remover link",
+"Url": "Url",
+"Text to display": "Texto a exibir",
+"Insert link": "Inserir link",
+"New window": "Nova janela",
+"None": "Nenhum",
+"Target": "Alvo",
+"Insert\/edit link": "Inserir\/editar link",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "Autor",
+"Alternative source": "Localiza\u00e7\u00e3o alternativa",
+"Paste your embed code below:": "Insira o c\u00f3digo de incorpora\u00e7\u00e3o abaixo:",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Incorporar",
+"Nonbreaking space": "Espa\u00e7amento n\u00e3o separ\u00e1vel",
+"Page break": "Quebra de p\u00e1gina",
+"Preview": "Pr\u00e9-visualizar",
+"Print": "Imprimir",
+"Save": "Guardar",
+"Could not find the specified string.": "N\u00e3o foi poss\u00edvel localizar o termo especificado.",
+"Replace": "Substituir",
+"Next": "Pr\u00f3ximo",
+"Whole words": "Palavras completas",
+"Find and replace": "Localizar e substituir",
+"Replace with": "Substituir por",
+"Find": "Localizar",
+"Replace all": "Substituir tudo",
+"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas",
+"Prev": "Anterior",
+"Spellcheck": "Corrector ortogr\u00e1fico",
+"Finish": "Concluir",
+"Ignore all": "Ignorar tudo",
+"Ignore": "Ignorar",
+"Insert row before": "Inserir linha antes",
+"Rows": "Linhas",
+"Height": "Altura",
+"Paste row after": "Colar linha depois",
+"Alignment": "Alinhamento",
+"Column group": "Agrupar coluna",
+"Row": "Linha",
+"Insert column before": "Inserir coluna antes",
+"Split cell": "Dividir c\u00e9lula",
+"Cell padding": "Espa\u00e7amento interno da c\u00e9lula",
+"Cell spacing": "Espa\u00e7amento da c\u00e9lula",
+"Row type": "Tipo de linha",
+"Insert table": "Inserir tabela",
+"Body": "Corpo",
+"Caption": "Legenda",
+"Footer": "Rodap\u00e9",
+"Delete row": "Eliminar linha",
+"Paste row before": "Colar linha antes",
+"Scope": "Escopo",
+"Delete table": "Eliminar tabela",
+"Header cell": "Cabe\u00e7alho da c\u00e9lula",
+"Column": "Coluna",
+"Cell": "C\u00e9lula",
+"Header": "Cabe\u00e7alho",
+"Cell type": "Tipo de c\u00e9lula",
+"Copy row": "Copiar linha",
+"Row properties": "Propriedades da linha",
+"Table properties": "Propriedades da tabela",
+"Row group": "Agrupar linha",
+"Right": "Direita",
+"Insert column after": "Inserir coluna depois",
+"Cols": "Colunas",
+"Insert row after": "Inserir linha depois",
+"Width": "Largura",
+"Cell properties": "Propriedades da c\u00e9lula",
+"Left": "Esquerda",
+"Cut row": "Cortar linha",
+"Delete column": "Eliminar coluna",
+"Center": "Centro",
+"Merge cells": "Unir c\u00e9lulas",
+"Insert template": "Inserir modelo",
+"Templates": "Modelos",
+"Background color": "Cor de fundo",
+"Text color": "Cor do texto",
+"Show blocks": "Mostrar blocos",
+"Show invisible characters": "Mostrar caracteres \u00ednvisiveis",
+"Words: {0}": "Palavras: {0}",
+"Insert": "Inserir",
+"File": "Ficheiro",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu. Pressione ALT-F10 para exibir a barra de ferramentas. Pressione ALT-0 para exibir a ajuda",
+"Tools": "Ferramentas",
+"View": "Ver",
+"Table": "Tabela",
+"Format": "Formatar"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ro.js b/framework/Web/Javascripts/source/tinymce-405/langs/ro.js
new file mode 100755
index 00000000..b3f49734
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ro.js
@@ -0,0 +1,174 @@
+tinymce.addI18n('ro',{
+"Cut": "Decupeaz\u0103",
+"Header 2": "Antet 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Browserul dumneavoastr\u0103 nu support\u0103 acces direct la clipboard. Folosi\u0163i combina\u0163ile de tastatur\u0103 Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "Lipe\u015fte",
+"Close": "\u00cenchide",
+"Pre": "Pre",
+"Align right": "Aliniere la dreapta",
+"New document": "Document nou",
+"Blockquote": "Men\u0163iune bloc",
+"Numbered list": "List\u0103 ordonat\u0103",
+"Increase indent": "Indenteaz\u0103",
+"Formats": "Formate",
+"Headers": "Antete",
+"Select all": "Selecteaz\u0103 tot",
+"Header 3": "Antet 3",
+"Blocks": "Blocuri",
+"Undo": "Reexecut\u0103",
+"Strikethrough": "T\u0103iat",
+"Bullet list": "List\u0103 neordonat\u0103",
+"Header 1": "Antet 1",
+"Superscript": "Superscript",
+"Clear formatting": "\u015eterge format\u0103rile",
+"Subscript": "Subscript",
+"Header 6": "Antet 6",
+"Redo": "Dezexecut\u0103",
+"Paragraph": "Paragraf",
+"Ok": "Ok",
+"Bold": "\u00cengro\u015fat",
+"Code": "Cod",
+"Italic": "Italic",
+"Align center": "Centrare",
+"Header 5": "Antet 5",
+"Decrease indent": "De-indenteaz\u0103",
+"Header 4": "Antet 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Inserarea este acum \u00een modul text simplu. Con\u021binutul va fi inserat ca \u0219i text simplu p\u00e2n\u0103 c\u00e2nd nu schimba\u021bi \u00eenapoi op\u021biune.",
+"Underline": "Subliniat",
+"Cancel": "Anuleaz\u0103",
+"Justify": "Aliniere pe toat\u0103 l\u0103\u021bimea",
+"Inline": "Inline",
+"Copy": "Copiaz\u0103",
+"Align left": "Aliniere la st\u00e2nga",
+"Visual aids": "Ajutor vizual",
+"Lower Greek": "Minuscule Grecesti",
+"Square": "P\u0103trat",
+"Default": "Implicit",
+"Lower Alpha": "Minuscule Alfanumerice",
+"Circle": "Cerc",
+"Disc": "Disc",
+"Upper Alpha": "Majuscule Alfanumerice",
+"Upper Roman": "Majuscule Romane",
+"Lower Roman": "Minuscule Romane",
+"Name": "Nume",
+"Anchor": "Ancor\u0103",
+"You have unsaved changes are you sure you want to navigate away?": "Ave\u021bi modific\u0103ri nesalvate! Sunte\u0163i sigur c\u0103 dori\u0163i s\u0103 ie\u015fiti?",
+"Restore last draft": "Restaurare la ultima salvare",
+"Special character": "Caractere speciale",
+"Source code": "Codul surs\u0103",
+"Right to left": "Dreapta la st\u00e2nga",
+"Left to right": "St\u00e2nga la dreapta",
+"Emoticons": "Emoticoane",
+"Robots": "Robo\u021bi",
+"Document properties": "Propriet\u0103\u021bi document",
+"Title": "Titlu",
+"Keywords": "Cuvinte cheie",
+"Encoding": "Codare",
+"Description": "Descriere",
+"Author": "Autor",
+"Fullscreen": "Pe tot ecranul",
+"Horizontal line": "Linie orizontal\u0103",
+"Horizontal space": "Spa\u021biul orizontal",
+"Insert\/edit image": "Inserare\/editarea imaginilor",
+"General": "General",
+"Advanced": "Avansat",
+"Source": "Surs\u0103",
+"Border": "Bordur\u0103",
+"Constrain proportions": "Constr\u00e2nge propor\u021biile",
+"Vertical space": "Spa\u021biul vertical",
+"Image description": "Descrierea imaginii",
+"Style": "Stil",
+"Dimensions": "Dimensiuni",
+"Insert image": "Inserare imagine",
+"Insert date\/time": "Insereaz\u0103 data\/ora",
+"Remove link": "\u0218terge link-ul",
+"Url": "Url",
+"Text to display": "Text de afi\u0219at",
+"Anchors": "Ancor\u0103",
+"Insert link": "Inserare link",
+"New window": "Fereastr\u0103 nou\u0103",
+"None": "Nici unul",
+"Target": "\u021aint\u0103",
+"Insert\/edit link": "Inserare\/editare link",
+"Insert\/edit video": "Inserare\/editare video",
+"Poster": "Poster",
+"Alternative source": "Surs\u0103 alternativ\u0103",
+"Paste your embed code below:": "Insera\u021bi codul:",
+"Insert video": "Inserare video",
+"Embed": "Embed",
+"Nonbreaking space": "Spa\u021biu neseparator",
+"Page break": "\u00centrerupere de pagin\u0103",
+"Preview": "Previzualizare",
+"Print": "Tip\u0103re\u0219te",
+"Save": "Salveaz\u0103",
+"Could not find the specified string.": "Nu am putut g\u0103si \u0219irul specificat.",
+"Replace": "\u00cenlocuie\u015fte",
+"Next": "Precedent",
+"Whole words": "Doar cuv\u00eentul \u00eentreg",
+"Find and replace": "Caut\u0103 \u015fi \u00eenlocuie\u015fte",
+"Replace with": "\u00cenlocuie\u015fte cu",
+"Find": "Caut\u0103",
+"Replace all": "\u00cenlocuie\u015fte toate",
+"Match case": "Distinge majuscule\/minuscule",
+"Prev": "Anterior",
+"Spellcheck": "Verificarea ortografic\u0103",
+"Finish": "Finalizeaz\u0103",
+"Ignore all": "Ignor\u0103 toate",
+"Ignore": "Ignor\u0103",
+"Insert row before": "Insereaz\u0103 \u00eenainte de linie",
+"Rows": "Linii",
+"Height": "\u00cen\u0103l\u0163ime",
+"Paste row after": "Lipe\u015fte linie dup\u0103",
+"Alignment": "Aliniament",
+"Column group": "Grup de coloane",
+"Row": "Linie",
+"Insert column before": "Insereaza \u00eenainte de coloan\u0103",
+"Split cell": "\u00cemp\u0103r\u021birea celulelor",
+"Cell padding": "Spa\u021biere",
+"Cell spacing": "Spa\u021biere celule",
+"Row type": "Tip de linie",
+"Insert table": "Insereaz\u0103 tabel\u0103",
+"Body": "Corp",
+"Caption": "Titlu",
+"Footer": "Subsol",
+"Delete row": "\u0218terge linia",
+"Paste row before": "Lipe\u015fte \u00eenainte de linie",
+"Scope": "Domeniu",
+"Delete table": "\u0218terge tabel\u0103",
+"Header cell": "Antet celul\u0103",
+"Column": "Coloan\u0103",
+"Cell": "Celul\u0103",
+"Header": "Antet",
+"Cell type": "Tip celul\u0103",
+"Copy row": "Copiaz\u0103 linie",
+"Row properties": "Propriet\u0103\u021bi linie",
+"Table properties": "Propriet\u0103\u021bi tabel\u0103",
+"Row group": "Grup de linii",
+"Right": "Dreapta",
+"Insert column after": "Insereaza dup\u0103 coloan\u0103",
+"Cols": "Coloane",
+"Insert row after": "Insereaz\u0103 dup\u0103 linie",
+"Width": "L\u0103\u0163ime",
+"Cell properties": "Propriet\u0103\u021bi celul\u0103",
+"Left": "St\u00e2nga",
+"Cut row": "Taie linie",
+"Delete column": "\u0218terge coloana",
+"Center": "Centru",
+"Merge cells": "\u00cembinarea celulelor",
+"Insert template": "Insereaz\u0103 \u0219ablon",
+"Templates": "\u015eabloane",
+"Background color": "Culoare fundal",
+"Text color": "Culoare text",
+"Show blocks": "Afi\u0219are blocuri",
+"Show invisible characters": "Afi\u0219are caractere invizibile",
+"Words: {0}": "Cuvinte: {0}",
+"Insert": "Insereaz\u0103",
+"File": "Fil\u0103",
+"Edit": "Editeaz\u0103",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zon\u0103 cu Rich Text. Apas\u0103 ALT-F9 pentru meniu. Apas\u0103 ALT-F10 pentru bara de unelte. Apas\u0103 ALT-0 pentru ajutor",
+"Tools": "Unelte",
+"View": "Vezi",
+"Table": "Tabel\u0103",
+"Format": "Formateaz\u0103"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ru.js b/framework/Web/Javascripts/source/tinymce-405/langs/ru.js
new file mode 100755
index 00000000..618a9a20
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ru.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('ru',{
+"Cut": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c",
+"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448: Ctrl+X\/C\/V.",
+"Div": "\u0411\u043b\u043e\u043a",
+"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
+"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
+"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
+"Align right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"New document": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
+"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442",
+"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
+"Select all": "\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435",
+"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u0438",
+"Undo": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c",
+"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
+"Bullet list": "\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442",
+"Subscript": "\u041d\u0438\u0436\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
+"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
+"Ok": "\u041e\u043a",
+"Bold": "\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
+"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Decrease indent": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
+"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e.",
+"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
+"Cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
+"Justify": "\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",
+"Inline": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435",
+"Copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
+"Align left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Visual aids": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u044b",
+"Lower Greek": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
+"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
+"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439",
+"Lower Alpha": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
+"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",
+"Disc": "\u041a\u0440\u0443\u0433\u0438",
+"Upper Alpha": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
+"Upper Roman": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
+"Lower Roman": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
+"Name": "\u0418\u043c\u044f",
+"Anchor": "\u042f\u043a\u043e\u0440\u044c",
+"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0439\u0442\u0438?",
+"Restore last draft": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430",
+"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
+"Source code": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434",
+"Right to left": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",
+"Left to right": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
+"Emoticons": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u044b",
+"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Keywords": "\u041a\u043b\u044e\u0447\u0438\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430",
+"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
+"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c",
+"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f",
+"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"General": "\u041e\u0431\u0449\u0435\u0435",
+"Advanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435",
+"Source": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
+"Border": "\u0420\u0430\u043c\u043a\u0430",
+"Constrain proportions": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
+"Style": "\u0421\u0442\u0438\u043b\u044c",
+"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
+"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443\/\u0432\u0440\u0435\u043c\u044f",
+"Remove link": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"Url": "\u0410\u0434\u0440\u0435\u0441 \u0441\u0441\u044b\u043b\u043a\u0438",
+"Text to display": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442",
+"Anchors": "\u042f\u043a\u043e\u0440\u044f",
+"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"New window": "\u0412 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435",
+"None": "\u041d\u0435\u0442",
+"Target": "\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
+"Poster": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
+"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435:",
+"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
+"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438",
+"Nonbreaking space": "\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b",
+"Page break": "\u0420\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
+"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442",
+"Preview": "\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",
+"Print": "\u041f\u0435\u0447\u0430\u0442\u044c",
+"Save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
+"Could not find the specified string.": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
+"Replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
+"Next": "\u0412\u043d\u0438\u0437",
+"Whole words": "\u0421\u043b\u043e\u0432\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c",
+"Find and replace": "\u041f\u043e\u0438\u0441\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0430",
+"Replace with": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",
+"Find": "\u041d\u0430\u0439\u0442\u0438",
+"Replace all": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",
+"Match case": "\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
+"Prev": "\u0412\u0432\u0435\u0440\u0445",
+"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
+"Finish": "\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c",
+"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435",
+"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
+"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
+"Rows": "\u0421\u0442\u0440\u043e\u043a\u0438",
+"Height": "\u0412\u044b\u0441\u043e\u0442\u0430",
+"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
+"Alignment": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
+"Column group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a",
+"Row": "\u0421\u0442\u0440\u043e\u043a\u0430",
+"Insert column before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430",
+"Split cell": "\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443",
+"Cell padding": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
+"Cell spacing": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
+"Row type": "\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438",
+"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
+"Body": "\u0422\u0435\u043b\u043e",
+"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Footer": "\u041d\u0438\u0437",
+"Delete row": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
+"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
+"Scope": "Scope",
+"Delete table": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
+"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446",
+"Cell": "\u042f\u0447\u0435\u0439\u043a\u0430",
+"Header": "\u0428\u0430\u043f\u043a\u0430",
+"Cell type": "\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438",
+"Copy row": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
+"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438",
+"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",
+"Row group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a",
+"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Insert column after": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043f\u0440\u0430\u0432\u0430",
+"Cols": "\u0421\u0442\u043e\u043b\u0431\u0446\u044b",
+"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438",
+"Left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Cut row": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
+"Delete column": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446",
+"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Merge cells": "\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",
+"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
+"Background color": "\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",
+"Text color": "\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
+"Words: {0}": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432: {0}",
+"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F9 \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, ALT-0 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u043e\u043c\u043e\u0449\u0438.",
+"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b",
+"View": "\u0412\u0438\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/si_LK.js b/framework/Web/Javascripts/source/tinymce-405/langs/si_LK.js
new file mode 100755
index 00000000..7ea42077
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/si_LK.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('si_LK',{
+"Cut": "\u0d9a\u0db4\u0db1\u0dca\u0db1",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0d9c\u0dca\u200d\u0dbb\u0dcf\u0dc4\u0d9a \u0db4\u0dd4\u0dc0\u0dbb\u0dd4\u0dc0\u0da7 \u0d8d\u0da2\u0dd4 \u0db4\u0dca\u200d\u0dbb\u0dc0\u0dda\u0dc1\u0dba\u0d9a\u0dca \u0dbd\u0db6\u0dcf\u0daf\u0dd3\u0db8\u0da7 \u0d94\u0db6\u0d9c\u0dda \u0db6\u0dca\u200d\u0dbb\u0dc0\u0dd4\u0dc3\u0dbb\u0dba \u0dc3\u0dc4\u0dba\u0d9a\u0dca \u0db1\u0ddc\u0daf\u0d9a\u0dca\u0dc0\u0dba\u0dd3. \u0d9a\u0dbb\u0dd4\u0dab\u0dcf\u0d9a\u0dbb \u0d92\u0dc0\u0dd9\u0db1\u0dd4\u0dc0\u0da7 Ctrl+X\/C\/V \u0dba\u0db1 \u0dba\u0dad\u0dd4\u0dbb\u0dd4\u0db4\u0dd4\u0dc0\u0dbb\u0dd4 \u0d9a\u0dd9\u0da7\u0dd2\u0db8\u0d9f \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1\u0dca\u0db1.",
+"Paste": "\u0d85\u0dbd\u0dc0\u0db1\u0dca\u0db1",
+"Close": "\u0dc0\u0dc3\u0db1\u0dca\u0db1",
+"Align right": "\u0daf\u0d9a\u0dd4\u0dab\u0dd4\u0db4\u0dc3\u0da7 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"New document": "\u0db1\u0dc0 \u0dbd\u0dda\u0d9b\u0db1\u0dba\u0d9a\u0dca",
+"Numbered list": "\u0d85\u0d82\u0d9a\u0db1\u0dba \u0d9a\u0dbd \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0",
+"Increase indent": "\u0dc0\u0dd0\u0da9\u0dd2\u0dc0\u0db1 \u0d91\u0db6\u0dd4\u0db8",
+"Formats": "\u0d86\u0d9a\u0dd8\u0dad\u0dd2",
+"Select all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd \u0dad\u0ddd\u0dbb\u0db1\u0dca\u0db1",
+"Undo": "\u0db1\u0dd2\u0dc2\u0dca\u0db4\u0dca\u200d\u0dbb\u0db7\u0dcf \u0d9a\u0dbb\u0db1\u0dc0\u0dcf",
+"Strikethrough": "\u0db8\u0dd0\u0daf\u0dd2 \u0d89\u0dbb\u0dd0\u0dad\u0dd2",
+"Bullet list": "\u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0",
+"Superscript": "\u0d8b\u0da9\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4",
+"Clear formatting": "\u0db4\u0dd0\u0dc4\u0dd0\u0daf\u0dd2\u0dbd\u0dd2 \u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0d9a\u0dbb\u0dab\u0dba",
+"Subscript": "\u0dba\u0da7\u0dd2\u0dbd\u0d9a\u0dd4\u0dab\u0dd4",
+"Redo": "\t\u0db1\u0dd0\u0dc0\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Ok": "\u0d85\u0db1\u0dd4\u0db8\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Bold": "\u0db4\u0dd0\u0dc4\u0dd0\u0daf\u0dd2\u0dbd\u0dd2 \u0dc3\u0dda \u0db4\u0dd9\u0db1\u0dd9\u0db1",
+"Italic": "\u0d87\u0dbd\u0d9a\u0dd4\u0dbb\u0dd4",
+"Align center": "\u0db8\u0dd0\u0daf\u0dd2 \u0d9a\u0ddc\u0da7 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Decrease indent": "\u0d85\u0da9\u0dd4\u0dc0\u0db1 \u0d91\u0db6\u0dd4\u0db8",
+"Underline": "\u0dba\u0da7\u0dd2\u0db1\u0dca \u0d89\u0dbb\u0d9a\u0dca \u0d85\u0db3\u0dd2\u0db1\u0dca\u0db1",
+"Cancel": "\u0d85\u0dc4\u0ddd\u0dc3\u0dd2 \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Justify": "\u0dc3\u0db8\u0dc0 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Copy": "\u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Align left": "\u0dc0\u0db8\u0dca\u0db4\u0dc3\u0da7 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Visual aids": "\u0daf\u0dd8\u0dc1\u0dca\u200d\u0dba\u0dcf\u0db0\u0dcf\u0dbb",
+"Lower Greek": "\u0d9a\u0dd4\u0da9\u0dcf \u0d9c\u0dca\u200d\u0dbb\u0dd3\u0d9a ",
+"Square": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0",
+"Default": "\u0db4\u0dd9\u0dbb\u0db1\u0dd2\u0db8\u0dd2\u0dba ",
+"Lower Alpha": "\u0d9a\u0dd4\u0da9\u0dcf \u0d87\u0dbd\u0dca\u0dc6\u0dcf ",
+"Circle": "\u0dc0\u0d9a\u0dca\u200d\u0dbb\u0dba",
+"Disc": "\u0dad\u0dd0\u0da7\u0dd2\u0dba ",
+"Upper Alpha": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0d87\u0dbd\u0dca\u0dc6\u0dcf ",
+"Upper Roman": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0dbb\u0ddd\u0db8\u0dcf\u0db1\u0dd4 ",
+"Lower Roman": "\u0d9a\u0dd4\u0da9\u0dcf \u0dbb\u0ddd\u0db8\u0dcf\u0db1\u0dd4 ",
+"Name": "\u0db1\u0dcf\u0db8\u0dba ",
+"Anchor": "\u0d87\u0db1\u0dca\u0d9a\u0dbb\u0dba",
+"You have unsaved changes are you sure you want to navigate away?": "\u0d94\u0db6\u0d9c\u0dda \u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1 \u0db1\u0ddc\u0dbd\u0daf \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dca \u0d87\u0dad,\u0d94\u0db6\u0da7 \u0dc0\u0dd2\u0dc1\u0dca\u0dc0\u0dcf\u0dc3\u0daf \u0d89\u0dc0\u0dad\u0da7 \u0dba\u0dcf\u0dba\u0dd4\u0dad\u0dd4\u0dba\u0dd2 \u0d9a\u0dd2\u0dba\u0dcf?",
+"Restore last draft": "\u0d85\u0dc0\u0dc3\u0dcf\u0db1\u0dba\u0da7 \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf\u0d9a\u0dc5 \u0d9a\u0dd9\u0da7\u0dd4\u0db8\u0dca\u0db4\u0dad \u0db4\u0dd2\u0dc5\u0dd2\u0db1\u0d9c\u0db1\u0dca\u0db1 ",
+"Special character": "\u0dc0\u0dd2\u0dc1\u0dda\u0dc2 \u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab ",
+"Source code": "\u0db8\u0dd6\u0dbd \u0d9a\u0dda\u0dad\u0dba ",
+"Right to left": "\u0daf\u0d9a\u0dd4\u0dab\u0dd4\u0db4\u0dc3 \u0dc3\u0dd2\u0da7 \u0dc0\u0db8\u0dca\u0db4\u0dc3\u0da7 ",
+"Left to right": "\u0dc0\u0db8\u0dca\u0db4\u0dc3 \u0dc3\u0dd2\u0da7 \u0daf\u0d9a\u0dd4\u0db1\u0dd4\u0db4\u0dc3\u0da7 ",
+"Emoticons": "\u0db7\u0dcf\u0dc0 \u0db1\u0dd2\u0dbb\u0dd4\u0db4\u0d9a",
+"Robots": "\u0dbb\u0ddc\u0db6\u0ddd",
+"Document properties": "\u0dbd\u0dda\u0d9b\u0db1\u0dba\u0dda \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Title": "\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0",
+"Keywords": "\u0db8\u0dd6\u0dbd \u0db4\u0daf\u0dba ",
+"Encoding": "\u0d9a\u0dda\u0dad\u0db1\u0dba",
+"Description": "\u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba ",
+"Author": "\u0d9a\u0dad\u0dd8 ",
+"Fullscreen": "\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0dad\u0dd2\u0dbb\u0dba ",
+"Horizontal line": "\u0dad\u0dd2\u0dbb\u0dc3\u0dca \u0d89\u0dbb ",
+"Horizontal space": "\u0dad\u0dd2\u0dbb\u0dc3\u0dca \u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0da9",
+"Insert\/edit image": "\u0db4\u0dd2\u0db1\u0dca\u0dad\u0dd4\u0dbb\u0dba \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/ \u0dc3\u0d9a\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"General": "\u0db4\u0ddc\u0daf\u0dd4",
+"Advanced": "\u0db4\u0dca\u200d\u0dbb\u0d9c\u0dad",
+"Source": "\u0db8\u0dd6\u0dbd\u0dba ",
+"Border": "\u0dc3\u0dd3\u0db8\u0dcf\u0dc0 ",
+"Constrain proportions": "\u0dc3\u0d82\u0dbb\u0ddd\u0daf\u0d9a \u0db4\u0dca\u200d\u0dbb\u0db8\u0dcf\u0dab\u0db1",
+"Vertical space": "\u0dc3\u0dd2\u0dbb\u0dc3\u0dca \u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0da9",
+"Image description": "\u0db4\u0dd2\u0db1\u0dca\u0dad\u0dd4\u0dbb\u0dba\u0dda \u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba ",
+"Style": "\u0dc0\u0dd2\u0dbd\u0dcf\u0dc3\u0dba",
+"Dimensions": "\u0db8\u0dcf\u0db1",
+"Insert date\/time": "\u0daf\u0dd2\u0db1\u0dba \/ \u0dc0\u0dda\u0dbd\u0dcf\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Url": "Url",
+"Text to display": "\u0db4\u0dd9\u0dc5 - \u0dc3\u0d82\u0daf\u0dbb\u0dca\u0dc1\u0d9a\u0dba",
+"Insert link": "\u0dc3\u0db6\u0dd0\u0db3\u0dd2\u0dba \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"New window": "\u0db1\u0dc0 \u0d9a\u0dc0\u0dd4\u0dc5\u0dd4\u0dc0\u0d9a\u0dca",
+"None": "\u0d9a\u0dd2\u0dc3\u0dd2\u0dc0\u0d9a\u0dca \u0db1\u0dd0\u0dad",
+"Target": "\u0d89\u0dbd\u0d9a\u0dca\u0d9a\u0dba",
+"Insert\/edit link": "\u0dc3\u0db6\u0dd0\u0db3\u0dd2\u0dba \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/ \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Insert\/edit video": "\u0dc0\u0dd3\u0da9\u0dd2\u0dba\u0ddd\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/ \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Poster": "\u0db4\u0ddd\u0dc3\u0dca\u0da7\u0dbb\u0dba",
+"Alternative source": "\u0dc0\u0dd2\u0d9a\u0dbd\u0dca\u0db4 \u0db8\u0dd6\u0dbd\u0dba",
+"Paste your embed code below:": "\u0d94\u0db6\u0d9c\u0dda \u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd6 \u0d9a\u0dda\u0dad\u0dba \u0db4\u0dc4\u0dad\u0dd2\u0db1\u0dca \u0daf\u0db8\u0db1\u0dca\u0db1",
+"Insert video": "\u0dc0\u0dd3\u0da9\u0dd2\u0dba\u0ddd\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Embed": "\u0d9a\u0dcf\u0dc0\u0daf\u0dca\u0daf\u0db1\u0dca\u0db1",
+"Nonbreaking space": "\u0db1\u0ddc\u0d9a\u0dd0\u0da9\u0dd4\u0dab\u0dd4 \u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0dbb",
+"Page break": "\u0db4\u0dd2\u0da7\u0dd4 \u0d9a\u0da9\u0db1\u0dba",
+"Preview": "\u0db4\u0dd9\u0dbb\u0daf\u0dc3\u0dd4\u0db1",
+"Print": "\u0db8\u0dd4\u0daf\u0dca\u200d\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Save": "\u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1",
+"Could not find the specified string.": "\u0db1\u0dd2\u0dbb\u0dd6\u0db4\u0dd2\u0dad \u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4 \u0dc0\u0dd0\u0dbd \u0dc3\u0ddc\u0dba\u0dcf \u0d9c\u0dad \u0db1\u0ddc\u0dc4\u0dd0\u0d9a\u0dd2 \u0dc0\u0dd2\u0dba",
+"Replace": "\u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Next": "\u0db4\u0dc3\u0dd4",
+"Whole words": "\u0dc3\u0db8\u0dc3\u0dca\u0dad \u0db4\u0daf",
+"Find and replace": "\u0dc3\u0ddc\u0dba\u0dcf \u0db4\u0dc3\u0dd4\u0dc0 \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Replace with": "\u0db8\u0dd9\u0dba \u0dc3\u0db8\u0d9f \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Find": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1",
+"Replace all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd\u0db8 \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Match case": "\u0d9a\u0dcf\u0dbb\u0dab\u0dba \u0d9c\u0dbd\u0db4\u0db1\u0dca\u0db1",
+"Prev": "\u0db4\u0dd9\u0dbb",
+"Spellcheck": "\u0d85\u0d9a\u0dca\u0dc2\u0dbb \u0dc0\u0dd2\u0db1\u0dca\u200d\u0dba\u0dcf\u0dc3\u0dba \u0db4\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dcf \u0d9a\u0dbb \u0db6\u0dd0\u0dbd\u0dd3\u0db8",
+"Finish": "\u0d85\u0dc0\u0dc3\u0db1\u0dca",
+"Ignore all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd\u0db8 \u0db1\u0ddc\u0dc3\u0dbd\u0d9a\u0dcf \u0dc4\u0dbb\u0dd2\u0db1\u0dca\u0db1",
+"Ignore": "\u0db1\u0ddc\u0dc3\u0dbd\u0d9a\u0dcf \u0dc4\u0dd0\u0dbb\u0dd3\u0db8",
+"Insert row before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dd9\u0dbb \u0db4\u0dda\u0dc5\u0dd2\u0dba\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Rows": "\u0db4\u0dda\u0dc5\u0dd2",
+"Height": "\u0d8b\u0dc3 ",
+"Paste row after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dc3\u0dd4 \u0db4\u0dda\u0dc5\u0dd2\u0dba \u0d85\u0db8\u0dd4\u0dab\u0db1\u0dca\u0db1 ",
+"Alignment": "\u0db4\u0dd9\u0dc5 \u0d9c\u0dd0\u0dc3\u0dd4\u0db8",
+"Column group": "\u0dad\u0dd3\u0dbb\u0dd4 \u0d9a\u0dcf\u0dab\u0dca\u0da9\u0dba",
+"Row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba ",
+"Insert column before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dd9\u0dbb \u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Split cell": "\u0d9a\u0ddc\u0da7\u0dd4 \u0dc0\u0dd9\u0db1\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Cell padding": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0db4\u0dd2\u0dbb\u0dc0\u0dd4\u0db8",
+"Cell spacing": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0d89\u0da9 \u0dc3\u0dd3\u0db8\u0dcf\u0dc0 ",
+"Row type": "\u0db4\u0dda\u0dc5\u0dd2\u0dba\u0dd9\u0dc4\u0dd2 \u0dc0\u0dbb\u0dca\u0d9c\u0dba",
+"Insert table": "\u0dc0\u0d9c\u0dd4\u0dc0\u0da7 \u0d87\u0dad\u0dd4\u0dbd\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Body": "\u0db4\u0dca\u200d\u0dbb\u0db0\u0dcf\u0db1 \u0d9a\u0ddc\u0da7\u0dc3",
+"Caption": "\u0dba\u0da7\u0dd2 \u0dbd\u0dd2\u0dba\u0db8\u0db1 ",
+"Footer": "\u0db4\u0dcf\u0daf\u0d9a\u0dba",
+"Delete row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba \u0db8\u0d9a\u0db1\u0dca\u0db1 ",
+"Paste row before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dd9\u0dbb \u0db4\u0dda\u0dc5\u0dd2\u0dba \u0d85\u0db8\u0dd4\u0dab\u0db1\u0dca\u0db1 ",
+"Scope": "\u0dc0\u0dd2\u0dc2\u0dba\u0db4\u0dae\u0dba",
+"Delete table": "\u0dc0\u0d9c\u0dd4\u0dc0 \u0db8\u0d9a\u0db1\u0dca\u0db1 ",
+"Header cell": "\u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d9a\u0ddc\u0da7\u0dd4\u0dc0",
+"Column": "\u0dad\u0dd3\u0dbb\u0dd4\u0dc0",
+"Cell": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0 ",
+"Header": "\u0dc1\u0dd3\u0dbb\u0dca\u0dc2\u0d9a\u0dba",
+"Cell type": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0dc0\u0dbb\u0dca\u0d9c\u0dba",
+"Copy row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba \u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dbb\u0d9c\u0db1\u0dca\u0db1 ",
+"Row properties": "\u0db4\u0dda\u0dc5\u0dd2\u0dba\u0dd9\u0dc4\u0dd2 \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Table properties": "\u0dc0\u0d9c\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Row group": "\u0db4\u0dda\u0dc5\u0dd2 \u0d9a\u0dcf\u0dab\u0dca\u0da9\u0dba",
+"Right": "\u0daf\u0d9a\u0dd4\u0dab",
+"Insert column after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dc3\u0dd4 \u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Cols": "\u0dad\u0dd3\u0dbb\u0dd4 ",
+"Insert row after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dc3\u0dd4 \u0db4\u0dda\u0dc5\u0dd2\u0dba\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Width": "\u0db4\u0dc5\u0dbd",
+"Cell properties": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Left": "\u0dc0\u0db8",
+"Cut row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba \u0d9a\u0db4\u0dcf\u0d9c\u0db1\u0dca\u0db1 ",
+"Delete column": "\u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0db8\u0d9a\u0db1\u0dca\u0db1 ",
+"Center": "\u0db8\u0dd0\u0daf",
+"Merge cells": "\u0d9a\u0ddc\u0da7\u0dd4 \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Insert template": "\u0d85\u0da0\u0dca\u0da0\u0dd4\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Templates": "\u0d85\u0da0\u0dca\u0da0\u0dd4",
+"Background color": "\u0db4\u0dc3\u0dd4\u0db6\u0dd2\u0db8\u0dd9\u0dc4\u0dd2 \u0dc0\u0dbb\u0dca\u0dab\u0dba",
+"Text color": "\u0db4\u0dd9\u0dc5 \u0dc3\u0da7\u0dc4\u0db1\u0dda \u0dc0\u0dbb\u0dca\u0dab\u0dba",
+"Show blocks": "\u0d9a\u0ddc\u0da7\u0dc3\u0dca \u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Show invisible characters": "\u0db1\u0ddc\u0db4\u0dd9\u0db1\u0dd9\u0db1 \u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4 \u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Words: {0}": "\u0dc0\u0da0\u0db1: {0}",
+"Insert": "\u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"File": "\u0d9c\u0ddc\u0db1\u0dd4\u0dc0",
+"Edit": "\u0dc3\u0d9a\u0dc3\u0db1\u0dca\u0db1",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0db4\u0dd9\u0dc5 \u0dc3\u0da7\u0dc4\u0db1\u0dca \u0db6\u0dc4\u0dd4\u0dbd \u0db4\u0dca\u200d\u0dbb\u0daf\u0dda\u0dc1\u0dba. \u0db8\u0dd9\u0db1\u0dd4\u0dc0 \u0dc3\u0db3\u0dc4\u0dcf ALT-F9 \u0d94\u0db6\u0db1\u0dca\u0db1. \u0db8\u0dd9\u0dc0\u0dbd\u0db8\u0dca \u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0dc3\u0db3\u0dc4\u0dcf ALT-F10 \u0d94\u0db6\u0db1\u0dca\u0db1. \u0dc3\u0dc4\u0dba \u0dbd\u0db6\u0dcf\u0d9c\u0dd0\u0db1\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf ALT-0 \u0d94\u0db6\u0db1\u0dca\u0db1.",
+"Tools": "\u0db8\u0dd9\u0dc0\u0dbd\u0db8\u0dca",
+"View": "\u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Table": "\u0dc0\u0d9c\u0dd4\u0dc0",
+"Format": "\u0dc4\u0dd0\u0da9\u0dad\u0dbd\u0dba"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/sk.js b/framework/Web/Javascripts/source/tinymce-405/langs/sk.js
new file mode 100755
index 00000000..b07a1c0c
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/sk.js
@@ -0,0 +1,174 @@
+tinymce.addI18n('sk',{
+"Cut": "Vystrihn\u00fa\u0165",
+"Header 2": "Nadpis 2. \u00farovne",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prehliada\u010d nepodporuje priamy pr\u00edstup do schr\u00e1nky. Pou\u017eite kl\u00e1vesov\u00e9 skratky Ctrl+X\/C\/V.",
+"Div": "Blok",
+"Paste": "Vlo\u017ei\u0165",
+"Close": "Zatvori\u0165",
+"Pre": "Preform\u00e1tovan\u00fd",
+"Align right": "Zarovna\u0165 vpravo",
+"New document": "Nov\u00fd dokument",
+"Blockquote": "Cit\u00e1cia",
+"Numbered list": "\u010c\u00edslovan\u00fd zoznam",
+"Increase indent": "Zv\u00e4\u010d\u0161i\u0165 odsadenie",
+"Formats": "Form\u00e1ty",
+"Headers": "Nadpisy",
+"Select all": "Ozna\u010di\u0165 v\u0161etko",
+"Header 3": "Nadpis 3. \u00farovne",
+"Blocks": "Bloky",
+"Undo": "Vr\u00e1ti\u0165",
+"Strikethrough": "Pre\u010diarknut\u00e9",
+"Bullet list": "Odr\u00e1\u017eky",
+"Header 1": "Nadpis 1. \u00farovne",
+"Superscript": "Horn\u00fd index",
+"Clear formatting": "Vymaza\u0165 form\u00e1tovanie",
+"Subscript": "Spodn\u00fd index",
+"Header 6": "Nadpis 6. \u00farovne",
+"Redo": "Znova",
+"Paragraph": "Odsek",
+"Ok": "Ok",
+"Bold": "Tu\u010dn\u00e9",
+"Code": "K\u00f3d",
+"Italic": "Kurz\u00edva",
+"Align center": "Zarovna\u0165 na stred",
+"Header 5": "Nadpis 5. \u00farovne",
+"Decrease indent": "Zmen\u0161i\u0165 odsadenie",
+"Header 4": "Nadpis 4. \u00farovne",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Vkladanie je v m\u00f3de neform\u00e1tovan\u00e9ho textu. Vkladan\u00fd obsah bude vlo\u017een\u00fd ako neform\u00e1tovan\u00fd, a\u017e pok\u00fdm t\u00fato mo\u017enos\u0165 nevypnete.",
+"Underline": "Pod\u010diarknut\u00e9",
+"Cancel": "Zru\u0161i\u0165",
+"Justify": "Zarovna\u0165",
+"Inline": "Do riadku",
+"Copy": "Kop\u00edrova\u0165",
+"Align left": "Zarovna\u0165 v\u013eavo",
+"Visual aids": "Vizu\u00e1lne pom\u00f4cky",
+"Lower Greek": "Mal\u00e9 gr\u00e9cke p\u00edsmen\u00e1",
+"Square": "\u0160tvorec",
+"Default": "V\u00fdchodzie",
+"Lower Alpha": "Mal\u00e9 p\u00edsmen\u00e1",
+"Circle": "Kruh",
+"Disc": "Disk",
+"Upper Alpha": "Ve\u013ek\u00e9 p\u00edsmen\u00e1",
+"Upper Roman": "Ve\u013ek\u00e9 r\u00edmske \u010d\u00edslice",
+"Lower Roman": "Mal\u00e9 r\u00edmske \u010d\u00edslice",
+"Name": "N\u00e1zov",
+"Anchor": "Odkaz",
+"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zmeny, naozaj chcete opusti\u0165 str\u00e1nku?",
+"Restore last draft": "Obnovi\u0165 posledn\u00fd koncept",
+"Special character": "\u0160peci\u00e1lny znak",
+"Source code": "Zdrojov\u00fd k\u00f3d",
+"Right to left": "Sprava do\u013eava",
+"Left to right": "Z\u013eava doprava",
+"Emoticons": "Smajl\u00edci",
+"Robots": "Preh\u013ead\u00e1vacie roboty",
+"Document properties": "Vlastnosti dokumentu",
+"Title": "Nadpis",
+"Keywords": "K\u013e\u00fa\u010dov\u00e9 slov\u00e1",
+"Encoding": "K\u00f3dovanie",
+"Description": "Popis",
+"Author": "Autor",
+"Fullscreen": "Na cel\u00fa obrazovku",
+"Horizontal line": "Horizont\u00e1lna \u010diara",
+"Horizontal space": "Horizont\u00e1lny priestor",
+"Insert\/edit image": "Vlo\u017ei\u0165\/upravi\u0165 obr\u00e1zok",
+"General": "Hlavn\u00e9",
+"Advanced": "Pokro\u010dil\u00e9",
+"Source": "Zdroj",
+"Border": "Or\u00e1movanie",
+"Constrain proportions": "Vymedzen\u00e9 proporcie",
+"Vertical space": "Vertik\u00e1lny priestor",
+"Image description": "Popis obr\u00e1zku",
+"Style": "\u0160t\u00fdl",
+"Dimensions": "Rozmery",
+"Insert image": "Vlo\u017ei\u0165 obr\u00e1zok",
+"Insert date\/time": "Vlo\u017ei\u0165 d\u00e1tum\/\u010das",
+"Remove link": "Odstr\u00e1ni\u0165 odkaz",
+"Url": "Url",
+"Text to display": "Zobrazen\u00fd text",
+"Anchors": "Kotvy",
+"Insert link": "Vlo\u017ei\u0165 odkaz",
+"New window": "Nov\u00e9 okno",
+"None": "\u017diadne",
+"Target": "Cie\u013e",
+"Insert\/edit link": "Vlo\u017ei\u0165\/upravi\u0165 odkaz",
+"Insert\/edit video": "Vlo\u017ei\u0165\/upravi\u0165 video",
+"Poster": "Uk\u00e1\u017eka",
+"Alternative source": "Alternat\u00edvny zdroj",
+"Paste your embed code below:": "Vlo\u017ete k\u00f3d pre vlo\u017eenie na str\u00e1nku:",
+"Insert video": "Vlo\u017ei\u0165 video",
+"Embed": "Vlo\u017een\u00e9",
+"Nonbreaking space": "Nedelite\u013en\u00e1 medzera",
+"Page break": "Zalomenie str\u00e1nky",
+"Preview": "N\u00e1h\u013ead",
+"Print": "Tla\u010di\u0165",
+"Save": "Ulo\u017ei\u0165",
+"Could not find the specified string.": "Zadan\u00fd re\u0165azec sa nena\u0161iel.",
+"Replace": "Nahradi\u0165",
+"Next": "Nasleduj\u00face",
+"Whole words": "Cel\u00e9 slov\u00e1",
+"Find and replace": "Vyh\u013eada\u0165 a nahradi\u0165",
+"Replace with": "Nahradi\u0165 za",
+"Find": "H\u013eada\u0165",
+"Replace all": "Nahradi\u0165 v\u0161etko",
+"Match case": "Rozli\u0161ova\u0165 ve\u013ek\u00e9\/mal\u00e9",
+"Prev": "Predch\u00e1dzaj\u00face",
+"Spellcheck": "Kontrola pravopisu",
+"Finish": "Dokon\u010di\u0165",
+"Ignore all": "Ignorova\u0165 v\u0161etko",
+"Ignore": "Ignorova\u0165",
+"Insert row before": "Vlo\u017ei\u0165 nov\u00fd riadok pred",
+"Rows": "Riadky",
+"Height": "V\u00fd\u0161ka",
+"Paste row after": "Vlo\u017ei\u0165 riadok za",
+"Alignment": "Zarovnanie",
+"Column group": "Skupina st\u013apcov",
+"Row": "Riadok",
+"Insert column before": "Prida\u0165 nov\u00fd st\u013apec pred",
+"Split cell": "Rozdeli\u0165 bunku",
+"Cell padding": "Odsadenie v bunk\u00e1ch",
+"Cell spacing": "Priestor medzi bunkami",
+"Row type": "Typ riadku",
+"Insert table": "Vlo\u017ei\u0165 tabu\u013eku",
+"Body": "Telo",
+"Caption": "Popisok",
+"Footer": "P\u00e4ti\u010dka",
+"Delete row": "Zmaza\u0165 riadok",
+"Paste row before": "Vlo\u017ei\u0165 riadok pred",
+"Scope": "Oblas\u0165",
+"Delete table": "Zmaza\u0165 tabu\u013eku",
+"Header cell": "Bunka hlavi\u010dky",
+"Column": "St\u013apec",
+"Cell": "Bunka",
+"Header": "Z\u00e1hlavie",
+"Cell type": "Typ bunky",
+"Copy row": "Kop\u00edrova\u0165 riadok",
+"Row properties": "Vlastnosti riadku",
+"Table properties": "Nastavenia tabu\u013eky",
+"Row group": "Skupina riadkov",
+"Right": "Vpravo",
+"Insert column after": "Prida\u0165 nov\u00fd st\u013apec za",
+"Cols": "St\u013apce",
+"Insert row after": "Vlo\u017ei\u0165 nov\u00fd riadok za",
+"Width": "\u0160\u00edrka",
+"Cell properties": "Vlastnosti bunky",
+"Left": "V\u013eavo",
+"Cut row": "Vystrihn\u00fa\u0165 riadok",
+"Delete column": "Vymaza\u0165 st\u013apec",
+"Center": "Na stred",
+"Merge cells": "Spoji\u0165 bunky",
+"Insert template": "Vlo\u017ei\u0165 \u0161abl\u00f3nu",
+"Templates": "\u0160abl\u00f3ny",
+"Background color": "Farba pozadia",
+"Text color": "Farba textu",
+"Show blocks": "Zobrazi\u0165 bloky",
+"Show invisible characters": "Zobrazi\u0165 skryt\u00e9 znaky",
+"Words: {0}": "Slov: {0}",
+"Insert": "Vlo\u017ei\u0165",
+"File": "S\u00fabor",
+"Edit": "Upravi\u0165",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textov\u00e9 pole. Stla\u010dte ALT-F9 pre zobrazenie menu, ALT-F10 pre zobrazenie panela n\u00e1strojov, ALT-0 pre n\u00e1povedu.",
+"Tools": "N\u00e1stroje",
+"View": "Zobrazi\u0165",
+"Table": "Tabu\u013eka",
+"Format": "Form\u00e1t"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/sl_SI.js b/framework/Web/Javascripts/source/tinymce-405/langs/sl_SI.js
new file mode 100755
index 00000000..1ded0d06
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/sl_SI.js
@@ -0,0 +1,152 @@
+tinymce.addI18n('sl_SI',{
+"Cut": "Izre\u017ei",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Varnostne nastavitve brskalnika ne dopu\u0161\u010dajo direktnega dostopa do odlo\u017ei\u0161\u010da. Uporabite kombinacijo tipk Ctrl+X\/C\/V na tipkovnici.",
+"Paste": "Prilepi",
+"Close": "Zapri",
+"Align right": "Desna poravnava",
+"New document": "Nov dokument",
+"Numbered list": "O\u0161tevil\u010den seznam",
+"Increase indent": "Pove\u010daj zamik",
+"Formats": "Oblika",
+"Select all": "Izberi vse",
+"Undo": "Razveljavi",
+"Strikethrough": "Pre\u010drtano",
+"Bullet list": "Ozna\u010den seznam",
+"Superscript": "Nadpisano",
+"Clear formatting": "Odstrani oblikovanje",
+"Subscript": "Podpisano",
+"Redo": "Ponovi",
+"Ok": "V redu",
+"Bold": "Krepko",
+"Italic": "Le\u017ee\u010de",
+"Align center": "Sredinska poravnava",
+"Decrease indent": "Zmanj\u0161aj zamik",
+"Underline": "Pod\u010drtano",
+"Cancel": "Prekli\u010di",
+"Justify": "Obojestranska poravnava",
+"Copy": "Kopiraj",
+"Align left": "Leva poravnava",
+"Visual aids": "Vizualni pripomo\u010dki",
+"Lower Greek": "Male gr\u0161ke \u010drke",
+"Square": "Kvadratek",
+"Default": "Privzeto",
+"Lower Alpha": "Male tiskane \u010drke",
+"Circle": "Pikica",
+"Disc": "Kroglica",
+"Upper Alpha": "Velike tiskane \u010drke",
+"Upper Roman": "Velike rimske \u0161tevilke",
+"Lower Roman": "Male rimske \u0161tevilke",
+"Name": "Naziv zaznamka",
+"Anchor": "Zaznamek",
+"You have unsaved changes are you sure you want to navigate away?": "Imate neshranjene spremembe. Ste prepri\u010dati, da \u017eelite zapustiti stran?",
+"Restore last draft": "Obnovi zadnji osnutek",
+"Special character": "Posebni znaki",
+"Source code": "Izvorna koda",
+"Right to left": "Od desne proti levi",
+"Left to right": "Od leve proti desni",
+"Emoticons": "Sme\u0161ki",
+"Robots": "Robotki",
+"Document properties": "Lastnosti dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne besede",
+"Encoding": "Kodiranje",
+"Description": "Opis",
+"Author": "Avtor",
+"Fullscreen": "\u010cez cel zaslon",
+"Horizontal line": "Vodoravna \u010drta",
+"Source": "Pot",
+"Constrain proportions": "Obdr\u017ei razmerje",
+"Dimensions": "Dimenzije",
+"Insert\/edit image": "Vstavi\/uredi sliko",
+"Image description": "Opis slike",
+"Insert date\/time": "Vstavi datum\/\u010das",
+"Url": "Povezava",
+"Text to display": "Prikazno besedilo",
+"Insert link": "Vstavi povezavo",
+"New window": "Novo okno",
+"None": "Brez",
+"Target": "Cilj",
+"Insert\/edit link": "Vstavi\/uredi povezavo",
+"Insert\/edit video": "Vstavi\/uredi video",
+"General": "Splo\u0161no",
+"Poster": "Poster",
+"Alternative source": "Alternativni vir",
+"Paste your embed code below:": "Vstavite kodo predvajalnika z videom:",
+"Insert video": "Vstavi video",
+"Embed": "Vdelaj",
+"Nonbreaking space": "Nedeljivi presledek",
+"Page break": "Prelom strani",
+"Preview": "Predogled",
+"Print": "Natisni",
+"Save": "Shrani",
+"Could not find the specified string.": "Iskanje ni vrnilo rezultatov.",
+"Replace": "Zamenjaj",
+"Next": "Naprej",
+"Whole words": "Cele besede",
+"Find and replace": "Poi\u0161\u010di in zamenjaj",
+"Replace with": "Zamenjaj z",
+"Find": "I\u0161\u010di",
+"Replace all": "Zamenjaj vse",
+"Match case": "Ujemanje malih in velikih \u010drk",
+"Prev": "Nazaj",
+"Spellcheck": "Preverjanje \u010drkovanja",
+"Finish": "Zaklju\u010di",
+"Ignore all": "Prezri vse",
+"Ignore": "Prezri",
+"Insert row before": "Vstavi vrstico pred",
+"Rows": "Vrstice",
+"Height": "Vi\u0161ina",
+"Paste row after": "Prilepi vrstico za",
+"Alignment": "Poravnava",
+"Column group": "Grupiranje stolpcev",
+"Row": "Vrstica",
+"Insert column before": "Vstavi stolpec pred",
+"Split cell": "Razdeli celico",
+"Cell padding": "Polnilo med celicami",
+"Cell spacing": "Razmik med celicami",
+"Row type": "Tip vrstice",
+"Insert table": "Vstavi tabelo",
+"Body": "Vsebina",
+"Caption": "Naslov",
+"Footer": "Noga",
+"Delete row": "Izbri\u0161i vrstico",
+"Paste row before": "Prilepi vrstico pred",
+"Scope": "Obseg",
+"Delete table": "Izbri\u0161i tabelo",
+"Header cell": "Celica glave",
+"Column": "Stolpec",
+"Cell": "Celica",
+"Header": "Glava",
+"Border": "Obroba",
+"Cell type": "Tip celice",
+"Copy row": "Kopiraj vrstico",
+"Row properties": "Lastnosti vrstice",
+"Table properties": "Lastnosti tabele",
+"Row group": "Grupiranje vrstic",
+"Right": "Desno",
+"Insert column after": "Vstavi stolpec za",
+"Cols": "Stolpci",
+"Insert row after": "Vstavi vrstico za",
+"Width": "\u0160irina",
+"Cell properties": "Lastnosti celice",
+"Left": "Levo",
+"Cut row": "Izre\u017ei vrstico",
+"Delete column": "Izbri\u0161i stolpec",
+"Center": "Sredinsko",
+"Merge cells": "Zdru\u017ei celice",
+"Insert template": "Vstavi predlogo",
+"Templates": "Predloge",
+"Background color": "Barva ozadja",
+"Text color": "Barva besedila",
+"Show blocks": "Prika\u017ei bloke",
+"Show invisible characters": "Prika\u017ei skrite znake",
+"Words: {0}": "Besed: {0}",
+"Insert": "Vstavi",
+"File": "Datoteka",
+"Edit": "Uredi",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Bogato besedilo. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za orodno vrstico. Pritisnite ALT-0 za pomo\u010d",
+"Tools": "Orodja",
+"View": "Pogled",
+"Table": "Tabela",
+"Format": "Oblika"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/sr.js b/framework/Web/Javascripts/source/tinymce-405/langs/sr.js
new file mode 100755
index 00000000..93fe66ed
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/sr.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('sr',{
+"Cut": "Ise\u0107i",
+"Header 2": "Zaglavlje 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 pretra\u017eiva\u010d nepodr\u017eava direktan pristup prenosu.Koristite Ctrl+X\/C\/V pre\u010dice na tastaturi",
+"Div": "Div",
+"Paste": "Nalepiti",
+"Close": "Zatvori",
+"Pre": "pre",
+"Align right": "Poravnano desno",
+"New document": "Novi dokument",
+"Blockquote": "navodnici",
+"Numbered list": "Numerisana lista",
+"Increase indent": "Pove\u0107aj uvla\u010denje",
+"Formats": "Forrmatiraj",
+"Headers": "Zaglavlje",
+"Select all": "Obele\u017ei sve",
+"Header 3": "Zaglavlje 3",
+"Blocks": "blokovi",
+"Undo": "Korak unazad",
+"Strikethrough": "Precrtan",
+"Bullet list": "Lista nabrajanja",
+"Header 1": "Zaglavlje 1",
+"Superscript": "Natpis",
+"Clear formatting": "Brisanje formatiranja",
+"Subscript": "Potpisan",
+"Header 6": "Zaglavlje 6",
+"Redo": "Korak napred",
+"Paragraph": "Paragraf",
+"Ok": "Ok",
+"Bold": "Podebljan",
+"Code": "kod",
+"Italic": "isko\u0161en",
+"Align center": "Poravnano centar",
+"Header 5": "Zaglavlje 5",
+"Decrease indent": "Smanji uvla\u010denje",
+"Header 4": "Zaglavlje 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Nalepiti je sada u obi\u010dnom text modu.Sadr\u017eaj \u0107e biti nalepljen kao obi\u010dan tekst dok ne ugasite ovu opciju.",
+"Underline": "Podvu\u010den",
+"Cancel": "Opozovi",
+"Justify": "Poravnanje",
+"Inline": "u liniji",
+"Copy": "kopirati",
+"Align left": "Poravnano levo",
+"Visual aids": "Vizuelna pomagala",
+"Lower Greek": "Ni\u017ei gr\u010dki",
+"Square": "Kvadrat",
+"Default": "Podrazumevano",
+"Lower Alpha": "Donja Alpha",
+"Circle": "Krug",
+"Disc": "Disk",
+"Upper Alpha": "Gornji Alpha",
+"Upper Roman": "Gornji Roman",
+"Lower Roman": "Donji Roman",
+"Name": "Ime",
+"Anchor": "Sidro",
+"You have unsaved changes are you sure you want to navigate away?": "Imate nesa\u010duvane promene dali ste sigurni da \u017eelite da iza\u0111ete?",
+"Restore last draft": "Vrati poslednji nacrt",
+"Special character": "Specijalni karakter",
+"Source code": "Izvorni kod",
+"Right to left": "Sa desne na levu",
+"Left to right": "Sa leve na desnu",
+"Emoticons": "Smajliji",
+"Robots": "Roboti",
+"Document properties": "Postavke dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne re\u010di",
+"Encoding": "Kodiranje",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Pun ekran",
+"Horizontal line": "Horizontalna linija",
+"Horizontal space": "Horizontalni razmak",
+"Insert\/edit image": "Ubaci\/Promeni sliku",
+"General": "Op\u0161te",
+"Advanced": "Napredno",
+"Source": "Izvor",
+"Border": "Okvir",
+"Constrain proportions": "Ograni\u010dene proporcije",
+"Vertical space": "Vertikalni razmak",
+"Image description": "Opis slike",
+"Style": "Stil",
+"Dimensions": "Dimenzije",
+"Insert image": "Ubaci sliku",
+"Insert date\/time": "Ubaci datum\/vreme",
+"Remove link": "Ukloni link",
+"Url": "Url",
+"Text to display": "Tekst za prikaz",
+"Anchors": "sidro",
+"Insert link": "Ubaci vezu",
+"New window": "Novi prozor",
+"None": "Ni\u0161ta",
+"Target": "Meta",
+"Insert\/edit link": "Ubaci\/promeni vezu",
+"Insert\/edit video": "Ubaci\/promeni video",
+"Poster": "Poster",
+"Alternative source": "Alternativni izvor",
+"Paste your embed code below:": "Nalepite ugra\u0111eni kod ispod:",
+"Insert video": "Ubaci video",
+"Embed": "Ugra\u0111eno",
+"Nonbreaking space": "bez ramaka",
+"Page break": "Lomljenje stranice",
+"Paste as text": "Nalepi kao tekst",
+"Preview": "Pregled",
+"Print": "\u0160tampanje",
+"Save": "Sa\u010duvati",
+"Could not find the specified string.": "Nije mogu\u0107e prona\u0107i navedeni niz.",
+"Replace": "Zameni",
+"Next": "Slede\u0107i",
+"Whole words": "Cele re\u010di",
+"Find and replace": "Na\u0111i i zameni",
+"Replace with": "Zameni sa",
+"Find": "Na\u0111i",
+"Replace all": "Zameni sve",
+"Match case": "Predmet za upore\u0111ivanje",
+"Prev": "Prethodni",
+"Spellcheck": "Provera pravopisa",
+"Finish": "Kraj",
+"Ignore all": "Ignori\u0161i sve",
+"Ignore": "ignori\u0161i",
+"Insert row before": "Ubaci red pre",
+"Rows": "Redovi",
+"Height": "Visina",
+"Paste row after": "Nalepi red posle",
+"Alignment": "Svrstavanje",
+"Column group": "Grupa kolone",
+"Row": "Red",
+"Insert column before": "Ubaci kolonu pre",
+"Split cell": "Razdvoji \u0107elije",
+"Cell padding": "Razmak \u0107elije",
+"Cell spacing": "Prostor \u0107elije",
+"Row type": "Tip reda",
+"Insert table": "ubaci tabelu",
+"Body": "Telo",
+"Caption": "Natpis",
+"Footer": "Podno\u017eje",
+"Delete row": "Obri\u0161i red",
+"Paste row before": "Nalepi red pre",
+"Scope": "Obim",
+"Delete table": "Obri\u0161i tabelu",
+"Header cell": "Visina \u0107elije",
+"Column": "Kolona",
+"Cell": "\u0106elija",
+"Header": "Zaglavlje",
+"Cell type": "Tip \u0107elije",
+"Copy row": "Kopiraj red",
+"Row properties": "Postavke reda",
+"Table properties": "Postavke tabele",
+"Row group": "Grupa reda",
+"Right": "Desno",
+"Insert column after": "Ubaci kolonu posle",
+"Cols": "Kolone",
+"Insert row after": "Ubaci red posle",
+"Width": "\u0160irina",
+"Cell properties": "Postavke \u0107elije",
+"Left": "Levo",
+"Cut row": "Iseci red",
+"Delete column": "Obri\u0161i kolonu",
+"Center": "Centar",
+"Merge cells": "Spoji \u0107elije",
+"Insert template": "Ubaci \u0161ablon",
+"Templates": "\u0160abloni",
+"Background color": "Boja pozadine",
+"Text color": "Boja tekst",
+"Show blocks": "Prikaz blokova",
+"Show invisible characters": "Prika\u017ei nevidljive karaktere",
+"Words: {0}": "Re\u010di:{0}",
+"Insert": "Umetni",
+"File": "Datoteka",
+"Edit": "Ure\u0111ivanje",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Oboga\u0107en tekst. Pritisni te ALT-F9 za meni.Pritisnite ALT-F10 za traku sa alatkama.Pritisnite ALT-0 za pomo\u0107",
+"Tools": "Alatke",
+"View": "Prikaz",
+"Table": "Tabela",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/sv_SE.js b/framework/Web/Javascripts/source/tinymce-405/langs/sv_SE.js
new file mode 100755
index 00000000..5bc67568
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/sv_SE.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('sv_SE',{
+"Cut": "Klipp ut",
+"Header 2": "Rubrik 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser st\u00f6der inte direkt acess till klippboken. V\u00e4nligen anv\u00e4nd Ctrl+X\/C\/V kortkomandon i st\u00e4llet.",
+"Div": "Div",
+"Paste": "Klistra in",
+"Close": "St\u00e4ng",
+"Pre": "Pre",
+"Align right": "H\u00f6gerst\u00e4ll",
+"New document": "Nytt dokument",
+"Blockquote": "Blockcitat",
+"Numbered list": "Nummerlista",
+"Increase indent": "\u00d6ka indrag",
+"Formats": "Format",
+"Headers": "Rubriker",
+"Select all": "Markera allt",
+"Header 3": "Rubrik 3",
+"Blocks": "Block",
+"Undo": "\u00c5ngra",
+"Strikethrough": "Genomstruken",
+"Bullet list": "Punktlista",
+"Header 1": "Rubrik 1",
+"Superscript": "Upph\u00f6jd text",
+"Clear formatting": "Avformattera",
+"Subscript": "Neds\u00e4nkt text",
+"Header 6": "Rubrik 6",
+"Redo": "G\u00f6r om",
+"Paragraph": "Paragraf",
+"Ok": "Ok",
+"Bold": "Fetstil",
+"Code": "K\u00e5d",
+"Italic": "Kurisvstil",
+"Align center": "Centrera",
+"Header 5": "Rubrik 5",
+"Decrease indent": "Minska indrag",
+"Header 4": "Rubrik 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Klistra in \u00e4r nu i textl\u00e4ge. Inneh\u00e5ll kommer att konverteras till text tills du sl\u00e5r av detta l\u00e4ge.",
+"Underline": "Understruken",
+"Cancel": "Avbryt",
+"Justify": "Justera",
+"Inline": "Inline",
+"Copy": "Kopiera",
+"Align left": "V\u00e4nsterst\u00e4ll",
+"Visual aids": "Visuella hj\u00e4lpmedel",
+"Lower Greek": "Grekiska gemener",
+"Square": "Fyrkant",
+"Default": "Orginal",
+"Lower Alpha": "Gemener",
+"Circle": "Cirkel",
+"Disc": "Disk",
+"Upper Alpha": "Varsaler",
+"Upper Roman": "Romerskaversaler",
+"Lower Roman": "Romerskagemener",
+"Name": "Namn",
+"Anchor": "Ankare",
+"You have unsaved changes are you sure you want to navigate away?": "Du har f\u00f6r\u00e4ndringar som du inte har sparat. \u00c4r du s\u00e4ker p\u00e5 att du vill navigera vidare?",
+"Restore last draft": "\u00c5terst\u00e4ll senaste utkast",
+"Special character": "Specialtecken",
+"Source code": "K\u00e4llkod",
+"Right to left": "H\u00f6ger till v\u00e4nster",
+"Left to right": "V\u00e4nster till h\u00f6ger",
+"Emoticons": "Emoticons",
+"Robots": "Robotar",
+"Document properties": "Dokumentegenskaper",
+"Title": "Titel",
+"Keywords": "Nyckelord",
+"Encoding": "Encoding",
+"Description": "Beskrivning",
+"Author": "F\u00f6rfattare",
+"Fullscreen": "Fullsk\u00e4rm",
+"Horizontal line": "Horizontell linie",
+"Horizontal space": "Horizontelltutrymme",
+"Insert\/edit image": "Infoga\/redigera bild",
+"General": "Generella",
+"Advanced": "Avancerat",
+"Source": "K\u00e4lla",
+"Border": "Ram",
+"Constrain proportions": "Begr\u00e4nsa proportioner",
+"Vertical space": "Vertikaltutrymme",
+"Image description": "Bildbeskrivning",
+"Style": "Stil",
+"Dimensions": "Dimensioner",
+"Insert image": "Infoga bild",
+"Insert date\/time": "Infoga datum\/tid",
+"Remove link": "Tabort l\u00e4nk",
+"Url": "Url",
+"Text to display": "Text att visa",
+"Anchors": "Bokm\u00e4rken",
+"Insert link": "Infoga l\u00e4nk",
+"New window": "Nytt f\u00f6nster",
+"None": "Ingen",
+"Target": "M\u00e5l",
+"Insert\/edit link": "Infoga\/redigera l\u00e4nk",
+"Insert\/edit video": "Infoga\/redigera video",
+"Poster": "Affish",
+"Alternative source": "Alternativ k\u00e4lla",
+"Paste your embed code below:": "Klistra in din inb\u00e4ddningsk\u00e5d nedan:",
+"Insert video": "Infoga video",
+"Embed": "Inb\u00e4ddning",
+"Nonbreaking space": "Avbrottsfritt mellanrum",
+"Page break": "Sydbrytning",
+"Paste as text": "Klistra in som text",
+"Preview": "F\u00f6rhandsgranska",
+"Print": "Skriv ut",
+"Save": "Spara",
+"Could not find the specified string.": "Kunde inte hitta den specifierade st\u00e4ngen.",
+"Replace": "Ers\u00e4tt",
+"Next": "N\u00e4sta",
+"Whole words": "Hela ord",
+"Find and replace": "S\u00f6k och ers\u00e4tt",
+"Replace with": "Ers\u00e4tt med",
+"Find": "S\u00f6k",
+"Replace all": "Ers\u00e4tt alla",
+"Match case": "Matcha gemener\/versaler",
+"Prev": "F\u00f6reg\u00e5ende",
+"Spellcheck": "R\u00e4ttstava",
+"Finish": "Avsluta",
+"Ignore all": "Ignorera alla",
+"Ignore": "Ignorera",
+"Insert row before": "Infoga rad f\u00f6re",
+"Rows": "Rader",
+"Height": "H\u00f6jd",
+"Paste row after": "Klistra in rad efter",
+"Alignment": "Justering",
+"Column group": "Kolumngrupp",
+"Row": "Rad",
+"Insert column before": "Infoga kollumn f\u00f6re",
+"Split cell": "Bryt is\u00e4r celler",
+"Cell padding": "Cellpaddning",
+"Cell spacing": "Cellmellanrum",
+"Row type": "Radtyp",
+"Insert table": "Infoga tabell",
+"Body": "Kropp",
+"Caption": "Rubrik",
+"Footer": "Fot",
+"Delete row": "Radera rad",
+"Paste row before": "Klista in rad f\u00f6re",
+"Scope": "Omf\u00e5ng",
+"Delete table": "Radera tabell",
+"Header cell": "Huvudcell",
+"Column": "Kolumn",
+"Cell": "Cell",
+"Header": "Huvud",
+"Cell type": "Celltyp",
+"Copy row": "Kopiera rad",
+"Row properties": "Radegenskaper",
+"Table properties": "Tabell egenskaper",
+"Row group": "Radgrupp",
+"Right": "H\u00f6ger",
+"Insert column after": "Infoga kolumn efter",
+"Cols": "Kolumner",
+"Insert row after": "Infoga rad efter",
+"Width": "Bredd",
+"Cell properties": "Cellegenskaper",
+"Left": "V\u00e4nster",
+"Cut row": "Klipp ut rad",
+"Delete column": "Radera kolumn",
+"Center": "Centrum",
+"Merge cells": "Sammanfoga celler",
+"Insert template": "Infoga mall",
+"Templates": "Mallar",
+"Background color": "Bakgrundsf\u00e4rg",
+"Text color": "Textf\u00e4rg",
+"Show blocks": "Visa block",
+"Show invisible characters": "Visa onsynliga tecken",
+"Words: {0}": "Ord: {0}",
+"Insert": "Infoga",
+"File": "Fil",
+"Edit": "Redigera",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textredigerare. Tryck ALT-F9 f\u00f6r menyn. Tryck ALT-F10 f\u00f6r verktygsrader. Tryck ALT-0 f\u00f6r hj\u00e4lp.",
+"Tools": "Verktyg",
+"View": "Vy",
+"Table": "Tabell",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ta.js b/framework/Web/Javascripts/source/tinymce-405/langs/ta.js
new file mode 100755
index 00000000..d8210c1c
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ta.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('ta',{
+"Cut": "\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Header 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0ba8\u0b95\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0ba8\u0bc7\u0bb0\u0b9f\u0bbf \u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bc8 \u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb2\u0bbe\u0bb5\u0bbf \u0b86\u0ba4\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8. \u0b86\u0b95\u0bb5\u0bc7 \u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bbe\u0ba9 Ctrl+X\/C\/V \u0b87\u0bb5\u0bb1\u0bcd\u0bb1\u0bc8 \u0ba4\u0baf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95.",
+"Div": "\u0baa\u0bbf\u0bb0\u0bbf\u0bb5\u0bc1 (Div)",
+"Paste": "\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Close": "\u0bae\u0bc2\u0b9f\u0bc1\u0b95",
+"Pre": "\u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1 (Pre)",
+"Align right": "\u0bb5\u0bb2\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"New document": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b86\u0bb5\u0ba3\u0bae\u0bcd",
+"Blockquote": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bcb\u0bb3\u0bcd",
+"Numbered list": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Increase indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b85\u0ba4\u0bbf\u0b95\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Formats": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Headers": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Select all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Header 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
+"Blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bcd",
+"Undo": "\u0bae\u0bc1\u0ba9\u0bcd\u0b9a\u0bc6\u0baf\u0bb2\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Strikethrough": "\u0ba8\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Bullet list": "\u0baa\u0bca\u0b9f\u0bcd\u0b9f\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Header 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
+"Superscript": "\u0bae\u0bc7\u0bb2\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Clear formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95",
+"Subscript": "\u0b95\u0bc0\u0bb4\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Header 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
+"Redo": "\u0bae\u0bc0\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Paragraph": "\u0baa\u0ba4\u0bcd\u0ba4\u0bbf",
+"Ok": "\u0b9a\u0bb0\u0bbf",
+"Bold": "\u0ba4\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Code": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Italic": "\u0b9a\u0bbe\u0baf\u0bcd\u0bb5\u0bc1",
+"Align center": "\u0bae\u0bc8\u0baf \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Header 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
+"Decrease indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b95\u0bc1\u0bb1\u0bc8\u0b95\u0bcd\u0b95",
+"Header 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1. \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
+"Underline": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Justify": "\u0ba8\u0bc7\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Inline": "\u0b89\u0bb3\u0bcd\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Copy": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Align left": "\u0b87\u0b9f\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Visual aids": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0ba4\u0bcd \u0ba4\u0bc1\u0ba3\u0bc8\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd",
+"Lower Greek": "\u0b95\u0bc0\u0bb4\u0bcd \u0b95\u0bbf\u0bb0\u0bc7\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Square": "\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd",
+"Default": "\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
+"Lower Alpha": "\u0b95\u0bc0\u0bb4\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Circle": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",
+"Disc": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bc1",
+"Upper Alpha": "\u0bae\u0bc7\u0bb2\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Upper Roman": "\u0bae\u0bc7\u0bb2\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Lower Roman": "\u0b95\u0bc0\u0bb4\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Name": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
+"Anchor": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd",
+"You have unsaved changes are you sure you want to navigate away?": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bbe\u0ba4 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba9; \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baf\u0bbe\u0b95 \u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bbe\u0bb3\u0bbe?",
+"Restore last draft": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Special character": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
+"Source code": "\u0bae\u0bc2\u0bb2 \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Right to left": "\u0bb5\u0bb2\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0b87\u0b9f\u0bae\u0bcd",
+"Left to right": "\u0b87\u0b9f\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bb5\u0bb2\u0bae\u0bcd",
+"Emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Robots": "Robots",
+"Document properties": "\u0b86\u0bb5\u0ba3\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Title": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Keywords": "\u0bae\u0bc1\u0ba4\u0ba9\u0bcd\u0bae\u0bc8\u0b9a\u0bcd\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Encoding": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Description": "\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Author": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0bb3\u0bb0\u0bcd",
+"Fullscreen": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8",
+"Horizontal line": "\u0b95\u0bbf\u0b9f\u0bc8 \u0b95\u0bcb\u0b9f\u0bc1",
+"Horizontal space": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Insert\/edit image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"General": "\u0baa\u0bca\u0ba4\u0bc1",
+"Advanced": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
+"Source": "\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Border": "\u0b95\u0bb0\u0bc8",
+"Constrain proportions": "\u0bb5\u0bbf\u0b95\u0bbf\u0ba4\u0bbe\u0b9a\u0bcd\u0b9a\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Vertical space": "\u0ba8\u0bc6\u0b9f\u0bc1\u0ba4\u0bb3 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Image description": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Style": "\u0baa\u0bbe\u0ba3\u0bbf",
+"Dimensions": "\u0baa\u0bb0\u0bbf\u0bae\u0bbe\u0ba3\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Insert date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Remove link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Url": "\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
+"Text to display": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bbf\u0baf \u0b89\u0bb0\u0bc8",
+"Anchors": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"New window": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
+"None": "\u0b8f\u0ba4\u0bc1\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"Target": "\u0b87\u0bb2\u0b95\u0bcd\u0b95\u0bc1",
+"Insert\/edit link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Insert\/edit video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Poster": "\u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf",
+"Alternative source": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Paste your embed code below:": "\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bc6\u0bbe\u0ba4\u0bbf \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0b95\u0bc0\u0bb4\u0bc7 \u0b92\u0b9f\u0bcd\u0b9f\u0bb5\u0bc1\u0bae\u0bcd:",
+"Insert video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Embed": "\u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf",
+"Nonbreaking space": "\u0baa\u0bbf\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Page break": "\u0baa\u0b95\u0bcd\u0b95 \u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Paste as text": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Preview": "\u0bae\u0bc1\u0ba9\u0bcd\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
+"Print": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
+"Save": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95",
+"Could not find the specified string.": "\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f \u0b9a\u0bb0\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"Replace": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Next": "\u0b85\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4",
+"Whole words": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Find and replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Replace with": "\u0b87\u0ba4\u0ba9\u0bc1\u0b9f\u0ba9\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Find": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Replace all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Match case": "\u0bb5\u0b9f\u0bbf\u0bb5\u0ba4\u0bcd\u0ba4\u0bc8 \u0baa\u0bca\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Prev": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
+"Spellcheck": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Finish": "\u0bae\u0bc1\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore": "\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Insert row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Rows": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Height": "\u0b89\u0baf\u0bb0\u0bae\u0bcd",
+"Paste row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
+"Column group": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Insert column before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Split cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Cell padding": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0ba8\u0bbf\u0bb0\u0baa\u0bcd\u0baa\u0bb2\u0bcd",
+"Cell spacing": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Row type": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0b95\u0bc8",
+"Insert table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Body": "\u0b89\u0b9f\u0bb2\u0bcd",
+"Caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Footer": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Delete row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Paste row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Scope": "\u0bb5\u0bb0\u0bc8\u0baf\u0bc6\u0bb2\u0bcd\u0bb2\u0bc8",
+"Delete table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Header cell": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Header": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Cell type": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0bb5\u0b95\u0bc8",
+"Copy row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Row properties": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Table properties": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Row group": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Right": "\u0bb5\u0bb2\u0bae\u0bcd",
+"Insert column after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Cols": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Insert row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Width": "\u0b85\u0b95\u0bb2\u0bae\u0bcd",
+"Cell properties": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Left": "\u0b87\u0b9f\u0bae\u0bcd",
+"Cut row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Delete column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Center": "\u0bae\u0bc8\u0baf\u0bae\u0bcd",
+"Merge cells": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Insert template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0bb5\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Templates": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
+"Background color": "\u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0ba3\u0bbf \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Text color": "\u0b89\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Show blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Show invisible characters": "\u0b95\u0ba3\u0bcd\u0ba3\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Words: {0}": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd: {0}",
+"Insert": "\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"File": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1",
+"Edit": "\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-F9 , \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1 ALT-F10 , \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
+"Tools": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
+"View": "\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8",
+"Format": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ta_IN.js b/framework/Web/Javascripts/source/tinymce-405/langs/ta_IN.js
new file mode 100755
index 00000000..92821d17
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ta_IN.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('ta_IN',{
+"Cut": "\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Header 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0ba8\u0b95\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0ba8\u0bc7\u0bb0\u0b9f\u0bbf \u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bc8 \u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb2\u0bbe\u0bb5\u0bbf \u0b86\u0ba4\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8. \u0b86\u0b95\u0bb5\u0bc7 \u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bbe\u0ba9 Ctrl+X\/C\/V \u0b87\u0bb5\u0bb1\u0bcd\u0bb1\u0bc8 \u0ba4\u0baf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95.",
+"Div": "Div",
+"Paste": "\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Close": "\u0bae\u0bc2\u0b9f\u0bc1\u0b95",
+"Pre": "Pre",
+"Align right": "\u0bb5\u0bb2\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"New document": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b86\u0bb5\u0ba3\u0bae\u0bcd",
+"Blockquote": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bcb\u0bb3\u0bcd",
+"Numbered list": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Increase indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b85\u0ba4\u0bbf\u0b95\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Formats": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Headers": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Select all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Header 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
+"Blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bcd",
+"Undo": "\u0bae\u0bc1\u0ba9\u0bcd\u0b9a\u0bc6\u0baf\u0bb2\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Strikethrough": "\u0ba8\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Bullet list": "\u0baa\u0bca\u0b9f\u0bcd\u0b9f\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Header 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
+"Superscript": "\u0bae\u0bc7\u0bb2\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Clear formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95",
+"Subscript": "\u0b95\u0bc0\u0bb4\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Header 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
+"Redo": "\u0bae\u0bc0\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Paragraph": "\u0baa\u0ba4\u0bcd\u0ba4\u0bbf",
+"Ok": "\u0b9a\u0bb0\u0bbf",
+"Bold": "\u0ba4\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Code": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Italic": "\u0b9a\u0bbe\u0baf\u0bcd\u0bb5\u0bc1",
+"Align center": "\u0bae\u0bc8\u0baf \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Header 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
+"Decrease indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b95\u0bc1\u0bb1\u0bc8\u0b95\u0bcd\u0b95",
+"Header 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1. \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
+"Underline": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Justify": "\u0ba8\u0bc7\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Inline": "\u0b89\u0bb3\u0bcd\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Copy": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Align left": "\u0b87\u0b9f\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Visual aids": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0ba4\u0bcd \u0ba4\u0bc1\u0ba3\u0bc8\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd",
+"Lower Greek": "\u0b95\u0bc0\u0bb4\u0bcd \u0b95\u0bbf\u0bb0\u0bc7\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Square": "\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd",
+"Default": "\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
+"Lower Alpha": "\u0b95\u0bc0\u0bb4\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Circle": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",
+"Disc": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bc1",
+"Upper Alpha": "\u0bae\u0bc7\u0bb2\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Upper Roman": "\u0bae\u0bc7\u0bb2\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Lower Roman": "\u0b95\u0bc0\u0bb4\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Name": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
+"Anchor": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd",
+"You have unsaved changes are you sure you want to navigate away?": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bbe\u0ba4 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba9; \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1 \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baf\u0bbe\u0b95 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bbe\u0bb3\u0bbe?",
+"Restore last draft": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Special character": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
+"Source code": "\u0bae\u0bc2\u0bb2 \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Right to left": "\u0bb5\u0bb2\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0b87\u0b9f\u0bae\u0bcd",
+"Left to right": "\u0b87\u0b9f\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bb5\u0bb2\u0bae\u0bcd",
+"Emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Robots": "Robots",
+"Document properties": "\u0b86\u0bb5\u0ba3\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Title": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Keywords": "\u0bae\u0bc1\u0ba4\u0ba9\u0bcd\u0bae\u0bc8\u0b9a\u0bcd\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Encoding": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Description": "\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Author": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0bb3\u0bb0\u0bcd",
+"Fullscreen": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8",
+"Horizontal line": "\u0b95\u0bbf\u0b9f\u0bc8 \u0b95\u0bcb\u0b9f\u0bc1",
+"Horizontal space": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Insert\/edit image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"General": "\u0baa\u0bca\u0ba4\u0bc1",
+"Advanced": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
+"Source": "\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Border": "\u0b95\u0bb0\u0bc8",
+"Constrain proportions": "\u0bb5\u0bbf\u0b95\u0bbf\u0ba4\u0bbe\u0b9a\u0bcd\u0b9a\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Vertical space": "\u0ba8\u0bc6\u0b9f\u0bc1\u0ba4\u0bb3 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Image description": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Style": "\u0baa\u0bbe\u0ba3\u0bbf",
+"Dimensions": "\u0baa\u0bb0\u0bbf\u0bae\u0bbe\u0ba3\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Insert date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Remove link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Url": "\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
+"Text to display": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bbf\u0baf \u0b89\u0bb0\u0bc8",
+"Anchors": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"New window": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
+"None": "\u0b8f\u0ba4\u0bc1\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"Target": "\u0b87\u0bb2\u0b95\u0bcd\u0b95\u0bc1",
+"Insert\/edit link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Insert\/edit video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Poster": "\u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf",
+"Alternative source": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Paste your embed code below:": "\u0b95\u0bc0\u0bb4\u0bc7 \u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bc6\u0bbe\u0ba4\u0bbf \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bb5\u0bc1\u0bae\u0bcd:",
+"Insert video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Embed": "\u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf",
+"Nonbreaking space": "\u0baa\u0bbf\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Page break": "\u0baa\u0b95\u0bcd\u0b95 \u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Paste as text": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Preview": "\u0bae\u0bc1\u0ba9\u0bcd\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
+"Print": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
+"Save": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95",
+"Could not find the specified string.": "\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f \u0b9a\u0bb0\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"Replace": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Next": "\u0b85\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4",
+"Whole words": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Find and replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Replace with": "\u0b87\u0ba4\u0ba9\u0bc1\u0b9f\u0ba9\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Find": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Replace all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Match case": "\u0bb5\u0b9f\u0bbf\u0bb5\u0ba4\u0bcd\u0ba4\u0bc8 \u0baa\u0bca\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Prev": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
+"Spellcheck": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Finish": "\u0bae\u0bc1\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore": "\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Insert row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Rows": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Height": "\u0b89\u0baf\u0bb0\u0bae\u0bcd",
+"Paste row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
+"Column group": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Insert column before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Split cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Cell padding": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0ba8\u0bbf\u0bb0\u0baa\u0bcd\u0baa\u0bb2\u0bcd",
+"Cell spacing": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Row type": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0b95\u0bc8",
+"Insert table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Body": "\u0b89\u0b9f\u0bb2\u0bcd",
+"Caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Footer": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Delete row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Paste row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Scope": "\u0bb5\u0bb0\u0bc8\u0baf\u0bc6\u0bb2\u0bcd\u0bb2\u0bc8",
+"Delete table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Header cell": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Header": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Cell type": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0bb5\u0b95\u0bc8",
+"Copy row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Row properties": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Table properties": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Row group": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Right": "\u0bb5\u0bb2\u0bae\u0bcd",
+"Insert column after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Cols": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Insert row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Width": "\u0b85\u0b95\u0bb2\u0bae\u0bcd",
+"Cell properties": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Left": "\u0b87\u0b9f\u0bae\u0bcd",
+"Cut row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Delete column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Center": "\u0bae\u0bc8\u0baf\u0bae\u0bcd",
+"Merge cells": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Insert template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0bb5\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Templates": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
+"Background color": "\u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0ba3\u0bbf \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Text color": "\u0b89\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Show blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Show invisible characters": "\u0b95\u0ba3\u0bcd\u0ba3\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Words: {0}": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd: {0}",
+"Insert": "\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"File": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1",
+"Edit": "\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-F9 , \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1 ALT-F10 , \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
+"Tools": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
+"View": "\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8",
+"Format": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/th_TH.js b/framework/Web/Javascripts/source/tinymce-405/langs/th_TH.js
new file mode 100755
index 00000000..28d2c8b4
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/th_TH.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('th_TH',{
+"Cut": "\u0e15\u0e31\u0e14",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e04\u0e25\u0e34\u0e1b\u0e1a\u0e2d\u0e23\u0e4c\u0e14 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e43\u0e0a\u0e49\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e25\u0e31\u0e14 Ctrl+X\/C\/V \u0e41\u0e17\u0e19",
+"Paste": "\u0e27\u0e32\u0e07",
+"Close": "\u0e1b\u0e34\u0e14",
+"Align right": "\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32",
+"New document": "\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e43\u0e2b\u0e21\u0e48",
+"Numbered list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e40\u0e25\u0e02",
+"Increase indent": "\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
+"Formats": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
+"Select all": "\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
+"Undo": "\u0e40\u0e25\u0e34\u0e01\u0e17\u0e33",
+"Strikethrough": "\u0e02\u0e35\u0e14\u0e17\u0e31\u0e1a",
+"Bullet list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e22\u0e48\u0e2d\u0e22",
+"Superscript": "\u0e15\u0e31\u0e27\u0e22\u0e01",
+"Clear formatting": "\u0e25\u0e49\u0e32\u0e07\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
+"Subscript": "\u0e15\u0e31\u0e27\u0e2b\u0e49\u0e2d\u0e22",
+"Redo": "\u0e17\u0e4d\u0e32\u0e0b\u0e49\u0e33",
+"Ok": "\u0e15\u0e01\u0e25\u0e07",
+"Bold": "\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e32",
+"Italic": "\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e35\u0e22\u0e07",
+"Align center": "\u0e08\u0e31\u0e14\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
+"Decrease indent": "\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
+"Underline": "\u0e02\u0e35\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49",
+"Cancel": "\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01",
+"Justify": "\u0e40\u0e15\u0e47\u0e21\u0e41\u0e19\u0e27",
+"Copy": "\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01",
+"Align left": "\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e0b\u0e49\u0e32\u0e22",
+"Visual aids": "\u0e17\u0e31\u0e28\u0e19\u0e39\u0e1b\u0e01\u0e23\u0e13\u0e4c",
+"Lower Greek": "\u0e01\u0e23\u0e35\u0e01\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
+"Square": "\u0e08\u0e31\u0e15\u0e38\u0e23\u0e31\u0e2a",
+"Default": "\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",
+"Lower Alpha": "\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
+"Circle": "\u0e27\u0e07\u0e01\u0e25\u0e21",
+"Disc": "\u0e14\u0e34\u0e2a\u0e01\u0e4c",
+"Upper Alpha": "\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
+"Upper Roman": "\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
+"Lower Roman": "\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
+"Name": "\u0e0a\u0e37\u0e48\u0e2d",
+"Anchor": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14",
+"You have unsaved changes are you sure you want to navigate away?": "\u0e04\u0e38\u0e13\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?",
+"Restore last draft": "\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e41\u0e1a\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14",
+"Special character": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e1e\u0e34\u0e40\u0e28\u0e29",
+"Source code": "\u0e42\u0e04\u0e49\u0e14\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a",
+"Right to left": "\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",
+"Left to right": "\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",
+"Emoticons": "\u0e2d\u0e34\u0e42\u0e21\u0e15\u0e34\u0e04\u0e2d\u0e19",
+"Robots": "\u0e2b\u0e38\u0e48\u0e19\u0e22\u0e19\u0e15\u0e4c",
+"Document properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",
+"Title": "\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07",
+"Keywords": "\u0e04\u0e33\u0e2a\u0e33\u0e04\u0e31\u0e0d",
+"Encoding": "\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a",
+"Description": "\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
+"Author": "\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19",
+"Fullscreen": "\u0e40\u0e15\u0e47\u0e21\u0e08\u0e2d",
+"Horizontal line": "\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
+"Horizontal space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
+"Insert\/edit image": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e23\u0e39\u0e1b",
+"General": "\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",
+"Advanced": "\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",
+"Source": "\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32",
+"Border": "\u0e40\u0e2a\u0e49\u0e19\u0e02\u0e2d\u0e1a",
+"Constrain proportions": "\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19",
+"Vertical space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
+"Image description": "\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b",
+"Style": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
+"Dimensions": "\u0e02\u0e19\u0e32\u0e14",
+"Insert date\/time": "\u0e41\u0e17\u0e23\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\/\u0e40\u0e27\u0e25\u0e32",
+"Url": "URL",
+"Text to display": "\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07",
+"Insert link": "\u0e41\u0e17\u0e23\u0e01\u0e25\u0e34\u0e07\u0e01\u0e4c",
+"New window": "\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48",
+"None": "\u0e44\u0e21\u0e48\u0e21\u0e35",
+"Target": "\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",
+"Insert\/edit link": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e25\u0e34\u0e07\u0e01\u0e4c",
+"Insert\/edit video": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
+"Poster": "\u0e42\u0e1b\u0e2a\u0e40\u0e15\u0e2d\u0e23\u0e4c",
+"Alternative source": "\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e2a\u0e33\u0e23\u0e2d\u0e07",
+"Paste your embed code below:": "\u0e27\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e1d\u0e31\u0e07\u0e15\u0e31\u0e27\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07:",
+"Insert video": "\u0e41\u0e17\u0e23\u0e01\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
+"Embed": "\u0e1d\u0e31\u0e07",
+"Nonbreaking space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e44\u0e21\u0e48\u0e41\u0e22\u0e01",
+"Page break": "\u0e15\u0e31\u0e27\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32",
+"Preview": "\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",
+"Print": "\u0e1e\u0e34\u0e21\u0e1e\u0e4c",
+"Save": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",
+"Could not find the specified string.": "\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e2a\u0e15\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38",
+"Replace": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
+"Next": "\u0e16\u0e31\u0e14\u0e44\u0e1b",
+"Whole words": "\u0e17\u0e31\u0e49\u0e07\u0e04\u0e33",
+"Find and replace": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e41\u0e25\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
+"Replace with": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e14\u0e49\u0e27\u0e22",
+"Find": "\u0e04\u0e49\u0e19\u0e2b\u0e32",
+"Replace all": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
+"Match case": "\u0e15\u0e23\u0e07\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e43\u0e2b\u0e0d\u0e48-\u0e40\u0e25\u0e47\u0e01",
+"Prev": "\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32",
+"Spellcheck": "\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14",
+"Finish": "\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19",
+"Ignore all": "\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
+"Ignore": "\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19",
+"Insert row before": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
+"Rows": "\u0e41\u0e16\u0e27",
+"Height": "\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07",
+"Paste row after": "\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
+"Alignment": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e19\u0e27",
+"Column group": "\u0e01\u0e25\u0e38\u0e48\u0e21\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Row": "\u0e41\u0e16\u0e27",
+"Insert column before": "\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32",
+"Split cell": "\u0e41\u0e22\u0e01\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Cell padding": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Cell spacing": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Row type": "\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
+"Insert table": "\u0e41\u0e17\u0e23\u0e01\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Body": "\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
+"Caption": "\u0e1b\u0e49\u0e32\u0e22\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
+"Footer": "\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e49\u0e32\u0e22",
+"Delete row": "\u0e25\u0e1a\u0e41\u0e16\u0e27",
+"Paste row before": "\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
+"Scope": "\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15",
+"Delete table": "\u0e25\u0e1a\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Header cell": "\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
+"Column": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Cell": "\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Header": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
+"Cell type": "\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Copy row": "\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e16\u0e27",
+"Row properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
+"Table properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Row group": "\u0e01\u0e25\u0e38\u0e48\u0e21\u0e41\u0e16\u0e27",
+"Right": "\u0e02\u0e27\u0e32",
+"Insert column after": "\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e07",
+"Cols": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Insert row after": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
+"Width": "\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07",
+"Cell properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Left": "\u0e0b\u0e49\u0e32\u0e22",
+"Cut row": "\u0e15\u0e31\u0e14\u0e41\u0e16\u0e27",
+"Delete column": "\u0e25\u0e1a\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Center": "\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
+"Merge cells": "\u0e1c\u0e2a\u0e32\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Insert template": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
+"Templates": "\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
+"Background color": "\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",
+"Text color": "\u0e2a\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
+"Show blocks": "\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01",
+"Show invisible characters": "\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e47\u0e19",
+"Words: {0}": "\u0e04\u0e33: {0}",
+"Insert": "\u0e41\u0e17\u0e23\u0e01",
+"File": "\u0e44\u0e1f\u0e25\u0e4c",
+"Edit": "\u0e41\u0e01\u0e49\u0e44\u0e02",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48 Rich Text \u0e01\u0e14 ALT-F9 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e19\u0e39 \u0e01\u0e14 ALT-F10 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d \u0e01\u0e14 ALT-0 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d",
+"Tools": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d",
+"View": "\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07",
+"Table": "\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Format": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/tr_TR.js b/framework/Web/Javascripts/source/tinymce-405/langs/tr_TR.js
new file mode 100755
index 00000000..9ca6142d
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/tr_TR.js
@@ -0,0 +1,174 @@
+tinymce.addI18n('tr_TR',{
+"Cut": "Kes",
+"Header 2": "Ba\u015fl\u0131k 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Taray\u0131c\u0131n\u0131z panoya direk eri\u015fimi desteklemiyor. L\u00fctfen Ctrl+X\/C\/V klavye k\u0131sayollar\u0131n\u0131 kullan\u0131n.",
+"Div": "Div",
+"Paste": "Yap\u0131\u015ft\u0131r",
+"Close": "Kapat",
+"Pre": "\u00d6n",
+"Align right": "Sa\u011fa hizala",
+"New document": "Yeni dok\u00fcman",
+"Blockquote": "Al\u0131nt\u0131",
+"Numbered list": "S\u0131ral\u0131 liste",
+"Increase indent": "Girintiyi art\u0131r",
+"Formats": "Bi\u00e7imler",
+"Headers": "Ba\u015fl\u0131klar",
+"Select all": "T\u00fcm\u00fcn\u00fc se\u00e7",
+"Header 3": "Ba\u015fl\u0131k 3",
+"Blocks": "Engeller",
+"Undo": "Geri Al",
+"Strikethrough": "\u00dcst\u00fc \u00e7izili",
+"Bullet list": "S\u0131ras\u0131z liste",
+"Header 1": "Ba\u015fl\u0131k 1",
+"Superscript": "\u00dcst simge",
+"Clear formatting": "Bi\u00e7imi temizle",
+"Subscript": "Alt simge",
+"Header 6": "Ba\u015fl\u0131k 6",
+"Redo": "Yinele",
+"Paragraph": "Paragraf",
+"Ok": "Tamam",
+"Bold": "Kal\u0131n",
+"Code": "Kod",
+"Italic": "\u0130talik",
+"Align center": "Ortala",
+"Header 5": "Ba\u015fl\u0131k 5",
+"Decrease indent": "Girintiyi azalt",
+"Header 4": "Ba\u015fl\u0131k 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00fcz metin modunda yap\u0131\u015ft\u0131r. Bu se\u00e7ene\u011fi kapatana kadar i\u00e7erikler d\u00fcz metin olarak yap\u0131\u015ft\u0131r\u0131l\u0131r.",
+"Underline": "Alt\u0131 \u00e7izili",
+"Cancel": "\u0130ptal",
+"Justify": "\u0130ki yana yasla",
+"Inline": "Sat\u0131r i\u00e7i",
+"Copy": "Kopyala",
+"Align left": "Sola hizala",
+"Visual aids": "G\u00f6rsel ara\u00e7lar",
+"Lower Greek": "K\u00fc\u00e7\u00fck Yunan alfabesi",
+"Square": "Kare",
+"Default": "Varsay\u0131lan",
+"Lower Alpha": "K\u00fc\u00e7\u00fck ABC",
+"Circle": "Daire",
+"Disc": "Disk",
+"Upper Alpha": "B\u00fcy\u00fck ABC",
+"Upper Roman": "B\u00fcy\u00fck Roman alfabesi",
+"Lower Roman": "K\u00fc\u00e7\u00fck Roman alfabesi",
+"Name": "\u0130sim",
+"Anchor": "\u00c7apa",
+"You have unsaved changes are you sure you want to navigate away?": "Kaydedilmemi\u015f de\u011fi\u015fiklikler var, sayfadan ayr\u0131lmak istedi\u011finize emin misiniz?",
+"Restore last draft": "Son tasla\u011f\u0131 kurtar",
+"Special character": "\u00d6zel karakter",
+"Source code": "Kaynak kodu",
+"Right to left": "Sa\u011fdan sola",
+"Left to right": "Soldan sa\u011fa",
+"Emoticons": "G\u00fcl\u00fcc\u00fckler",
+"Robots": "Robotlar",
+"Document properties": "Dok\u00fcman \u00f6zellikleri",
+"Title": "Ba\u015fl\u0131k",
+"Keywords": "Anahtar kelimeler",
+"Encoding": "Kodlama",
+"Description": "A\u00e7\u0131klama",
+"Author": "Yazar",
+"Fullscreen": "Tam ekran",
+"Horizontal line": "Yatay \u00e7izgi",
+"Horizontal space": "Yatay bo\u015fluk",
+"Insert\/edit image": "Resim ekle\/d\u00fczenle",
+"General": "Genel",
+"Advanced": "Geli\u015fmi\u015f",
+"Source": "Kaynak",
+"Border": "\u00c7er\u00e7eve",
+"Constrain proportions": "En - Boy oran\u0131n\u0131 koru",
+"Vertical space": "Dikey bo\u015fluk",
+"Image description": "Resim a\u00e7\u0131klamas\u0131",
+"Style": "Stil",
+"Dimensions": "Boyutlar",
+"Insert image": "Resim ekle",
+"Insert date\/time": "Tarih \/ Zaman ekle",
+"Remove link": "Ba\u011flant\u0131y\u0131 kald\u0131r",
+"Url": "Url",
+"Text to display": "G\u00f6r\u00fcnen yaz\u0131",
+"Anchors": "\u00c7apalar",
+"Insert link": "Ba\u011flant\u0131 ekle",
+"New window": "Yeni pencere",
+"None": "Hi\u00e7biri",
+"Target": "Hedef",
+"Insert\/edit link": "Ba\u011flant\u0131 ekle\/d\u00fczenle",
+"Insert\/edit video": "Video ekle\/d\u00fczenle",
+"Poster": "Poster",
+"Alternative source": "Alternatif kaynak",
+"Paste your embed code below:": "Medya g\u00f6mme kodunu buraya yap\u0131\u015ft\u0131r:",
+"Insert video": "Video ekle",
+"Embed": "G\u00f6mme",
+"Nonbreaking space": "B\u00f6l\u00fcnemez bo\u015fluk",
+"Page break": "Sayfa sonu",
+"Preview": "\u00d6nizleme",
+"Print": "Yazd\u0131r",
+"Save": "Kaydet",
+"Could not find the specified string.": "Herhangi bir sonu\u00e7 bulunamad\u0131.",
+"Replace": "De\u011fi\u015ftir",
+"Next": "Sonraki",
+"Whole words": "Tam s\u00f6zc\u00fckler",
+"Find and replace": "Bul ve de\u011fi\u015ftir",
+"Replace with": "Bununla de\u011fi\u015ftir",
+"Find": "Bul",
+"Replace all": "T\u00fcm\u00fcn\u00fc de\u011fi\u015ftir",
+"Match case": "B\u00fcy\u00fck \/ K\u00fc\u00e7\u00fck harfe duyarl\u0131",
+"Prev": "\u00d6nceki",
+"Spellcheck": "Yaz\u0131m denetimi",
+"Finish": "Bitir",
+"Ignore all": "T\u00fcm\u00fcn\u00fc yoksay",
+"Ignore": "Yoksay",
+"Insert row before": "\u00d6ncesine yeni sat\u0131r ekle",
+"Rows": "Sat\u0131rlar",
+"Height": "Y\u00fckseklik",
+"Paste row after": "Sonras\u0131na sat\u0131r yap\u0131\u015ft\u0131r",
+"Alignment": "Hizalama",
+"Column group": "S\u00fctun grubu",
+"Row": "Sat\u0131r",
+"Insert column before": "\u00d6ncesine yeni s\u00fctun ekle",
+"Split cell": "H\u00fccreleri ay\u0131r",
+"Cell padding": "H\u00fccre i\u00e7 bo\u015flu\u011fu",
+"Cell spacing": "H\u00fccre aral\u0131\u011f\u0131",
+"Row type": "Sat\u0131r tipi",
+"Insert table": "Tablo ekle",
+"Body": "G\u00f6vde",
+"Caption": "Ba\u015fl\u0131k",
+"Footer": "Alt",
+"Delete row": "Sat\u0131r\u0131 sil",
+"Paste row before": "\u00d6ncesine sat\u0131r yap\u0131\u015ft\u0131r",
+"Scope": "Kapsam",
+"Delete table": "Tabloyu sil",
+"Header cell": "Ba\u015fl\u0131k h\u00fccresi",
+"Column": "S\u00fctun",
+"Cell": "H\u00fccre",
+"Header": "Ba\u015fl\u0131k",
+"Cell type": "H\u00fccre tipi",
+"Copy row": "Sat\u0131r\u0131 kopyala",
+"Row properties": "Sat\u0131r \u00f6zellikleri",
+"Table properties": "Tablo \u00f6zellikleri",
+"Row group": "Sat\u0131r grubu",
+"Right": "Sa\u011f",
+"Insert column after": "Sonras\u0131na yeni s\u00fctun ekle",
+"Cols": "S\u00fctunlar",
+"Insert row after": "Sonras\u0131na yeni sat\u0131r ekle",
+"Width": "Geni\u015flik",
+"Cell properties": "H\u00fccre \u00f6zellikleri",
+"Left": "Sol",
+"Cut row": "Sat\u0131r\u0131 kes",
+"Delete column": "S\u00fctunu sil",
+"Center": "Orta",
+"Merge cells": "H\u00fccreleri birle\u015ftir",
+"Insert template": "\u015eablon ekle",
+"Templates": "\u015eablonlar",
+"Background color": "Arkaplan rengi",
+"Text color": "Yaz\u0131 rengi",
+"Show blocks": "Bloklar\u0131 g\u00f6r\u00fcnt\u00fcle",
+"Show invisible characters": "G\u00f6r\u00fcnmez karakterleri g\u00f6ster",
+"Words: {0}": "Kelime: {0}",
+"Insert": "Ekle",
+"File": "Dosya",
+"Edit": "D\u00fczenle",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zengin Metin Alan\u0131. Men\u00fc i\u00e7in ALT-F9 k\u0131sayolunu kullan\u0131n. Ara\u00e7 \u00e7ubu\u011fu i\u00e7in ALT-F10 k\u0131sayolunu kullan\u0131n. Yard\u0131m i\u00e7in ALT-0 k\u0131sayolunu kullan\u0131n.",
+"Tools": "Ara\u00e7lar",
+"View": "G\u00f6r\u00fcnt\u00fcle",
+"Table": "Tablo",
+"Format": "Bi\u00e7im"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/ug.js b/framework/Web/Javascripts/source/tinymce-405/langs/ug.js
new file mode 100755
index 00000000..b4bd955f
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/ug.js
@@ -0,0 +1,156 @@
+tinymce.addI18n('ug',{
+"Cut": "\u0643\u06d0\u0633\u0649\u0634",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0633\u0649\u0632\u0646\u0649\u06ad \u062a\u0648\u0631 \u0643\u06c6\u0631\u06af\u06c8\u0686\u0649\u06ad\u0649\u0632 \u0642\u0649\u064a\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634 \u062a\u0627\u062e\u062a\u0649\u0633\u0649 \u0632\u0649\u064a\u0627\u0631\u06d5\u062a \u0642\u0649\u0644\u0649\u0634\u0646\u0649 \u0642\u0648\u0644\u0644\u0649\u0645\u0627\u064a\u062f\u06c7. Ctrl+X\/C\/V \u062a\u06d0\u0632\u0644\u06d5\u062a\u0645\u06d5 \u0643\u0648\u0646\u06c7\u067e\u0643\u0649\u0633\u0649 \u0626\u0627\u0631\u0642\u0649\u0644\u0649\u0642 \u0643\u06d0\u0633\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634 \u0645\u06d5\u0634\u063a\u06c7\u0644\u0627\u062a\u0649 \u0642\u0649\u0644\u0649\u06ad.",
+"Paste": "\u0686\u0627\u067e\u0644\u0627\u0634",
+"Close": "\u062a\u0627\u0642\u0627\u0634",
+"Align right": "\u0626\u0648\u06ad\u063a\u0627 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
+"New document": "\u064a\u06d0\u06ad\u0649 \u06be\u06c6\u062c\u062c\u06d5\u062a \u0642\u06c7\u0631\u06c7\u0634",
+"Numbered list": "\u0633\u0627\u0646\u0644\u0649\u0642 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
+"Increase indent": "\u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0633\u06c8\u0631\u06c8\u0634",
+"Formats": "\u0641\u0648\u0631\u0645\u0627\u062a",
+"Select all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u062a\u0627\u0644\u0644\u0627\u0634",
+"Undo": "\u0626\u0627\u0631\u0642\u0649\u063a\u0627 \u064a\u06d0\u0646\u0649\u0634",
+"Strikethrough": "\u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634 \u0633\u0649\u0632\u0649\u0642\u0649",
+"Bullet list": "\u0628\u06d5\u0644\u06af\u06d5 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
+"Superscript": "\u0626\u06c8\u0633\u062a\u06c8\u0646\u0643\u0649 \u0628\u06d5\u0644\u06af\u06d5",
+"Clear formatting": "\u0641\u0648\u0631\u0645\u0627\u062a\u0646\u0649 \u062a\u0627\u0632\u0644\u0627\u0634",
+"Subscript": "\u0626\u0627\u0633\u062a\u0649\u0646\u0642\u0649 \u0628\u06d5\u0644\u06af\u06d5",
+"Redo": "\u0642\u0627\u064a\u062a\u0627 \u0642\u0649\u0644\u0649\u0634",
+"Ok": "\u062c\u06d5\u0632\u0649\u0645\u0644\u06d5\u0634",
+"Bold": "\u062a\u0648\u0645",
+"Italic": "\u064a\u0627\u0646\u062a\u06c7",
+"Align center": "\u0645\u06d5\u0631\u0643\u06d5\u0632\u06af\u06d5 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
+"Decrease indent": "\u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0633\u06c8\u0631\u06c8\u0634",
+"Underline": "\u0626\u0627\u0633\u062a\u0649 \u0633\u0649\u0632\u0649\u0642",
+"Cancel": "\u0642\u0627\u0644\u062f\u06c7\u0631\u06c7\u0634",
+"Justify": "\u0626\u0649\u0643\u0643\u0649 \u064a\u0627\u0646\u063a\u0627 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
+"Copy": "\u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Align left": "\u0633\u0648\u0644\u063a\u0627 \u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
+"Visual aids": "\u0626\u06d5\u0633\u0643\u06d5\u0631\u062a\u0649\u0634",
+"Lower Greek": "\u06af\u0631\u06d0\u062a\u0633\u0649\u064a\u0649\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Square": "\u0643\u06cb\u0627\u062f\u0631\u0627\u062a",
+"Default": "\u0633\u06c8\u0643\u06c8\u062a",
+"Lower Alpha": "\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Circle": "\u0686\u06d5\u0645\u0628\u06d5\u0631",
+"Disc": "\u062f\u06d0\u0633\u0643\u0627",
+"Upper Alpha": "\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5 \u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Upper Roman": "\u0631\u0649\u0645\u0686\u06d5 \u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Lower Roman": "\u0631\u0649\u0645\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Name": "\u0646\u0627\u0645\u0649",
+"Anchor": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
+"You have unsaved changes are you sure you want to navigate away?": "\u0633\u0649\u0632 \u062a\u06d0\u062e\u0649 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649 \u0633\u0627\u0642\u0644\u0649\u0645\u0649\u062f\u0649\u06ad\u0649\u0632\u060c \u0626\u0627\u064a\u0631\u0649\u0644\u0627\u0645\u0633\u0649\u0632\u061f",
+"Restore last draft": "\u0626\u0627\u062e\u0649\u0631\u0642\u0649 \u0643\u06c7\u067e\u0649\u064a\u0649\u06af\u06d5 \u0642\u0627\u064a\u062a\u0649\u0634",
+"Special character": "\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5 \u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631",
+"Source code": "\u0626\u06d5\u0633\u0644\u0649 \u0643\u0648\u062f\u0649",
+"Right to left": "\u0626\u0648\u06ad\u062f\u0649\u0646 \u0633\u0648\u0644\u063a\u0627",
+"Left to right": "\u0633\u0648\u0644\u062f\u0649\u0646 \u0626\u0648\u06ad\u063a\u0627 ",
+"Emoticons": "\u0686\u0649\u0631\u0627\u064a \u0626\u0649\u067e\u0627\u062f\u06d5",
+"Robots": "\u0645\u0627\u0634\u0649\u0646\u0627 \u0626\u0627\u062f\u06d5\u0645",
+"Document properties": "\u06be\u06c6\u062c\u062c\u06d5\u062a \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Title": "\u062a\u06d0\u0645\u0627",
+"Keywords": "\u06be\u0627\u0644\u0642\u0649\u0644\u0649\u0642 \u0633\u06c6\u0632",
+"Encoding": "\u0643\u0648\u062f\u0644\u0627\u0634",
+"Description": "\u062a\u06d5\u0633\u0649\u06cb\u0649\u0631",
+"Author": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
+"Fullscreen": "\u067e\u06c8\u062a\u06c8\u0646 \u0626\u06d0\u0643\u0631\u0627\u0646",
+"Horizontal line": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u0642\u06c7\u0631",
+"Horizontal space": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u0628\u0648\u0634\u0644\u06c7\u0642",
+"Insert\/edit image": "\u0631\u06d5\u0633\u0649\u0645 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634 \u064a\u0627\u0643\u0649 \u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"General": "\u0626\u0627\u062f\u06d5\u062a\u062a\u0649\u0643\u0649",
+"Advanced": "\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5",
+"Source": "\u0645\u06d5\u0646\u0628\u06d5",
+"Border": "\u064a\u0627\u0642\u0627",
+"Constrain proportions": "\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643-\u0643\u06d5\u06ad\u0644\u0649\u0643 \u0646\u0649\u0633\u067e\u0649\u062a\u0649\u0646\u0649 \u0633\u0627\u0642\u0644\u0627\u0634",
+"Vertical space": "\u06cb\u06d0\u0631\u062a\u0649\u0643\u0627\u0644 \u0628\u0648\u0634\u0644\u06c7\u0642",
+"Image description": "\u0631\u06d5\u0633\u0649\u0645 \u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
+"Style": "\u0626\u06c7\u0633\u0644\u06c7\u067e",
+"Dimensions": "\u0686\u0648\u06ad-\u0643\u0649\u0686\u0649\u0643",
+"Insert date\/time": "\u0686\u0649\u0633\u0644\u0627\/\u06cb\u0627\u0642\u0649\u062a \u0643\u0649\u0631\u06af\u06c8\u0632\u06c8\u0634",
+"Url": "\u0626\u0627\u062f\u0631\u0649\u0633",
+"Text to display": "\u0643\u06c6\u0631\u06c8\u0646\u0649\u062f\u0649\u063a\u0627\u0646 \u0645\u06d5\u0632\u0645\u06c7\u0646",
+"Insert link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"New window": "\u064a\u06d0\u06ad\u0649 \u0643\u06c6\u0632\u0646\u06d5\u0643",
+"None": "\u064a\u0648\u0642",
+"Target": "\u0646\u0649\u0634\u0627\u0646",
+"Insert\/edit link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0642\u06c7\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"Insert\/edit video": "\u0633\u0649\u0646 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"Poster": "\u064a\u0648\u0644\u0644\u0649\u063a\u06c7\u0686\u0649",
+"Alternative source": "\u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
+"Paste your embed code below:": "\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0627\u0642\u0686\u0649 \u0628\u0648\u0644\u063a\u0627\u0646 \u0643\u0648\u062f\u0646\u0649 \u0686\u0627\u067e\u0644\u0627\u06ad",
+"Insert video": "\u0633\u0649\u0646 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Embed": "\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Nonbreaking space": "\u0628\u0648\u0634\u0644\u06c7\u0642",
+"Page break": "\u0628\u06d5\u062a \u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Preview": "\u0643\u06c6\u0631\u06c8\u0634",
+"Print": "\u0628\u0627\u0633\u0645\u0627\u0642 ",
+"Save": "\u0633\u0627\u0642\u0644\u0627\u0634",
+"Could not find the specified string.": "\u0626\u0649\u0632\u062f\u0649\u0645\u06d5\u0643\u0686\u0649 \u0628\u0648\u0644\u063a\u0627\u0646 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649 \u062a\u0627\u067e\u0627\u0644\u0645\u0649\u062f\u0649.",
+"Replace": "\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Next": "\u0643\u06d0\u064a\u0649\u0646\u0643\u0649\u0633\u0649",
+"Whole words": "\u062a\u0648\u0644\u06c7\u0642 \u0645\u0627\u0633\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Find and replace": "\u0626\u0649\u0632\u062f\u06d5\u0634 \u06cb\u06d5 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Replace with": "\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Find": "\u0626\u0649\u0632\u062f\u06d5\u0634",
+"Replace all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Match case": "\u0686\u0648\u06ad \u0643\u0649\u0686\u0649\u0643 \u06be\u06d5\u0631\u0649\u067e\u0646\u0649 \u067e\u06d5\u0631\u0649\u0642\u0644\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
+"Prev": "\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649\u0633\u0649",
+"Spellcheck": "\u0626\u0649\u0645\u0644\u0627 \u062a\u06d5\u0643\u0634\u06c8\u0631\u06c8\u0634",
+"Finish": "\u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Ignore all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
+"Ignore": "\u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
+"Insert row before": "\u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0642\u06c7\u0631 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Rows": "\u0642\u06c7\u0631",
+"Height": "\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643\u0649",
+"Paste row after": "\u0642\u06c7\u0631 \u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0686\u0627\u067e\u0644\u0627\u0634",
+"Alignment": "\u064a\u06c6\u0644\u0649\u0646\u0649\u0634\u0649",
+"Column group": "\u0631\u06d5\u062a \u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
+"Row": "\u0642\u06c7\u0631",
+"Insert column before": "\u0631\u06d5\u062a \u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Split cell": "\u0643\u0627\u062a\u06d5\u0643 \u067e\u0627\u0631\u0686\u0649\u0644\u0627\u0634",
+"Cell padding": "\u0643\u0627\u062a\u06d5\u0643 \u0626\u0649\u0686\u0643\u0649 \u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
+"Cell spacing": "\u0643\u0627\u062a\u06d5\u0643 \u0633\u0649\u0631\u062a\u0642\u0649 \u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
+"Row type": "\u0642\u06c7\u0631 \u062a\u0649\u067e\u0649",
+"Insert table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Body": "\u0628\u06d5\u062f\u0649\u0646\u0649",
+"Caption": "\u0686\u06c8\u0634\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
+"Footer": "\u067e\u06c7\u062a\u0649",
+"Delete row": "\u0642\u06c7\u0631 \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Paste row before": "\u0642\u06c7\u0631 \u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0686\u0627\u067e\u0644\u0627\u0634",
+"Scope": "\u062f\u0627\u0626\u0649\u0631\u06d5",
+"Delete table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u0626\u06c6\u0686\u06c8\u0631\u0634",
+"Header cell": "\u0628\u0627\u0634 \u0643\u0627\u062a\u06d5\u0643",
+"Column": "\u0631\u06d5\u062a",
+"Cell": "\u0643\u0627\u062a\u06d5\u0643",
+"Header": "\u0628\u06d0\u0634\u0649",
+"Cell type": "\u0643\u0627\u062a\u06d5\u0643 \u062a\u0649\u067e\u0649",
+"Copy row": "\u0642\u06c7\u0631 \u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Row properties": "\u0642\u06c7\u0631 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Table properties": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Row group": "\u0642\u06c7\u0631 \u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
+"Right": "\u0626\u0648\u06ad",
+"Insert column after": "\u0631\u06d5\u062a \u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Cols": "\u0631\u06d5\u062a",
+"Insert row after": "\u0626\u0627\u0631\u0642\u0649\u063a\u0627 \u0642\u06c7\u0631 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Width": "\u0643\u06d5\u06ad\u0644\u0649\u0643\u0649",
+"Cell properties": "\u0643\u0627\u062a\u06d5\u0643 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Left": "\u0633\u0648\u0644",
+"Cut row": "\u0642\u06c7\u0631 \u0643\u06d0\u0633\u0649\u0634",
+"Delete column": "\u0631\u06d5\u062a \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Center": "\u0645\u06d5\u0631\u0643\u06d5\u0632",
+"Merge cells": "\u0643\u0627\u062a\u06d5\u0643 \u0628\u0649\u0631\u0644\u06d5\u0634\u062a\u06c8\u0631\u06c8\u0634",
+"Insert template": "\u0626\u06c8\u0644\u06af\u06d5 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Templates": "\u0626\u06c8\u0644\u06af\u0649\u0644\u06d5\u0631",
+"Background color": "\u0626\u0627\u0631\u0642\u0627 \u0631\u06d5\u06ad\u06af\u0649",
+"Text color": "\u062e\u06d5\u062a \u0631\u06d5\u06ad\u06af\u0649",
+"Show blocks": "\u0631\u0627\u064a\u0648\u0646 \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
+"Show invisible characters": "\u0643\u06c6\u0631\u06c8\u0646\u0645\u06d5\u064a\u062f\u0649\u063a\u0627\u0646 \u06be\u06d5\u0631\u0649\u067e\u0644\u06d5\u0631\u0646\u0649 \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
+"Words: {0}": "\u0633\u06c6\u0632: {0}",
+"Insert": "\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"File": "\u06be\u06c6\u062c\u062c\u06d5\u062a",
+"Edit": "\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "\u0642\u06c7\u0631\u0627\u0644",
+"View": "\u0643\u06c6\u0631\u06c8\u0634",
+"Table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644",
+"Format": "\u0641\u0648\u0631\u0645\u0627\u062a"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/uk.js b/framework/Web/Javascripts/source/tinymce-405/langs/uk.js
new file mode 100755
index 00000000..d8fccd33
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/uk.js
@@ -0,0 +1,159 @@
+tinymce.addI18n('uk',{
+"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0456\u043d\u0443. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 Ctrl+X\/C\/V \u0437\u0430\u043c\u0456\u0441\u0442\u044c \u0441\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448.",
+"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
+"Align right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"New document": "\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
+"Select all": "\u0412\u0438\u0434\u0456\u043b\u0438\u0442\u0438 \u0432\u0441\u0435",
+"Undo": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Strikethrough": "\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Bullet list": "\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
+"Subscript": "\u041d\u0438\u0436\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441",
+"Redo": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438",
+"Ok": "\u0413\u0430\u0440\u0430\u0437\u0434",
+"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439",
+"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
+"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Cancel": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",
+"Align left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Visual aids": "\u041d\u0430\u043e\u0447\u043d\u0456 \u043f\u0440\u0438\u043b\u0430\u0434\u0434\u044f",
+"Lower Greek": "\u041c\u0430\u043b\u0456 \u0433\u0440\u0435\u0446\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
+"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
+"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438\u0439",
+"Lower Alpha": "\u041c\u0430\u043b\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
+"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0456",
+"Disc": "\u041a\u0440\u0443\u0433\u0438",
+"Upper Alpha": "\u0412\u0435\u043b\u0438\u043a\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
+"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438",
+"Lower Roman": "\u041c\u0430\u043b\u0456 \u0440\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438",
+"Name": "\u041d\u0430\u0437\u0432\u0430",
+"Anchor": "\u042f\u043a\u0456\u0440",
+"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0412\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438?",
+"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043e\u0441\u0442\u0430\u043d\u043d\u044c\u043e\u0433\u043e \u0432\u0430\u0440\u0456\u0430\u043d\u0442\u0443",
+"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
+"Source code": "\u0412\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u043a\u043e\u0434",
+"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",
+"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
+"Emoticons": "\u0415\u043c\u043e\u0446\u0456\u0457",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
+"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",
+"Description": "\u041e\u043f\u0438\u0441",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c",
+"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043b\u0456\u043d\u0456\u044f",
+"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456",
+"Advanced": "\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456",
+"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
+"Border": "\u041c\u0435\u0436\u0430",
+"Constrain proportions": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Style": "\u0421\u0442\u0438\u043b\u044c",
+"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440",
+"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
+"Url": "\u0410\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"New window": "\u0423 \u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456",
+"None": "\u041d\u0456",
+"Target": "\u0412\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Poster": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e",
+"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:",
+"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438",
+"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0456\u043b",
+"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438",
+"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0430\u0440\u0430\u0437 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u0417\u043c\u0456\u0441\u0442 \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u044f\u043a \u043f\u0440\u043e\u0441\u0442\u0438\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0438 \u0412\u0438 \u043d\u0435 \u0432\u0438\u043c\u043a\u043d\u0435\u0442\u0435 \u0446\u044e \u043e\u043f\u0446\u0456\u044e.",
+"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",
+"Print": "\u0414\u0440\u0443\u043a\u0443\u0432\u0430\u0442\u0438",
+"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
+"Could not find the specified string.": "\u0412\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e",
+"Replace": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
+"Next": "\u0412\u043d\u0438\u0437",
+"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456 \u0437\u0430\u043c\u0456\u043d\u0430",
+"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430",
+"Find": "\u0417\u043d\u0430\u0439\u0442\u0438",
+"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435",
+"Match case": "\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
+"Prev": "\u0412\u0433\u043e\u0440\u0443",
+"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
+"Finish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438",
+"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0435",
+"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438",
+"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
+"Rows": "\u0420\u044f\u0434\u043a\u0438",
+"Height": "\u0412\u0438\u0441\u043e\u0442\u0430",
+"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
+"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",
+"Row": "\u0420\u044f\u0434\u043e\u043a",
+"Insert column before": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043b\u0456\u0432\u043e\u0440\u0443\u0447",
+"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0443",
+"Cell padding": "\u041f\u043e\u043b\u044f \u043a\u043e\u043c\u0456\u0440\u043e\u043a",
+"Cell spacing": "\u0412\u0456\u0434\u0441\u0442\u0430\u043d\u044c \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",
+"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u043a\u0430",
+"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"Body": "\u0422\u0456\u043b\u043e",
+"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
+"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
+"Scope": "\u0421\u0444\u0435\u0440\u0430",
+"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430",
+"Header": "\u0428\u0430\u043f\u043a\u0430",
+"Cell type": "\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0440\u044f\u0434\u043a\u0430",
+"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",
+"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u043a\u0456\u0432",
+"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Insert column after": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
+"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456",
+"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
+"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",
+"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
+"Words: {0}": "\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u043b\u0456\u0432: {0}",
+"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 \u0449\u043e\u0431 \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438 \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432, ALT-0 \u0434\u043b\u044f \u0432\u0438\u043a\u043b\u0438\u043a\u0443 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0438.",
+"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
+"View": "\u0412\u0438\u0433\u043b\u044f\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/uk_UA.js b/framework/Web/Javascripts/source/tinymce-405/langs/uk_UA.js
new file mode 100755
index 00000000..e10a5f5c
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/uk_UA.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('uk_UA',{
+"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438",
+"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0456\u043d\u0443. \u0417\u0430\u043c\u0456\u0441\u0442\u044c \u0446\u044c\u043e\u0433\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043f\u043e\u0454\u0434\u043d\u0430\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448 Ctrl + X\/C\/V.",
+"Div": "Div",
+"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
+"Pre": "Pre",
+"Align right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
+"New document": "\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
+"Numbered list": "\u041f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
+"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
+"Select all": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0443\u0441\u0435",
+"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u0438",
+"Undo": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Strikethrough": "\u041f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Bullet list": "\u041c\u0430\u0440\u043a\u0456\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
+"Subscript": "\u0406\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Redo": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438",
+"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
+"Ok": "Ok",
+"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
+"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0430\u0440\u0430\u0437 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u0417\u043c\u0456\u0441\u0442 \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u044f\u043a \u043f\u0440\u043e\u0441\u0442\u0438\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0438 \u0412\u0438 \u043d\u0435 \u0432\u0438\u043c\u043a\u043d\u0435\u0442\u0435 \u0446\u044e \u043e\u043f\u0446\u0456\u044e.",
+"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Cancel": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044f\u0442\u0438",
+"Inline": "\u0412\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0439",
+"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",
+"Align left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447",
+"Visual aids": "\u0412\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0456 \u0437\u0430\u0441\u043e\u0431\u0438",
+"Lower Greek": "\u041d\u0438\u0436\u043d\u044f \u0433\u0440\u0435\u0446\u044c\u043a\u0430",
+"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442",
+"Default": "\u0423\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f",
+"Lower Alpha": "\u041d\u0438\u0436\u0447\u0430 \u0410\u043b\u044c\u0444\u0430",
+"Circle": "\u041a\u0440\u0443\u0433",
+"Disc": "\u0414\u0438\u0441\u043a",
+"Upper Alpha": "\u0412\u0435\u0440\u0445\u043d\u044f \u0410\u043b\u044c\u0444\u0430",
+"Upper Roman": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0440\u0438\u043c\u0441\u044c\u043a\u0430",
+"Lower Roman": "\u041d\u0438\u0436\u043d\u044f \u0440\u0438\u043c\u0441\u044c\u043a\u0430",
+"Name": "\u0406\u043c'\u044f",
+"Anchor": "\u041f\u0440\u0438\u0432'\u044f\u0437\u043a\u0430",
+"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438, \u0412\u0438 \u0443\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438 ?",
+"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u043f\u0440\u043e\u0435\u043a\u0442",
+"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b",
+"Source code": "\u041f\u043e\u0447\u0430\u0442\u043a\u043e\u0432\u0438\u0439 \u043a\u043e\u0434",
+"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",
+"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
+"Emoticons": "\u0421\u043c\u0430\u0439\u043b\u0438\u043a\u0438",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
+"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443",
+"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",
+"Description": "\u041e\u043f\u0438\u0441",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439",
+"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c",
+"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
+"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430\/\u043f\u0440\u0430\u0432\u043a\u0430 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",
+"Advanced": "\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",
+"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
+"Border": "\u041c\u0435\u0436\u0430",
+"Constrain proportions": "\u0421\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
+"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Style": "\u0421\u0442\u0438\u043b\u044c",
+"Dimensions": "\u0412\u0438\u043c\u0456\u0440\u0438",
+"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
+"Remove link": "\u0412\u0438\u0434\u0430\u043b\u0456\u0442\u044c \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Url": "Url",
+"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Anchors": "\u042f\u043a\u043e\u0440\u044f",
+"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"New window": "\u041d\u043e\u0432\u0435 \u0432\u0456\u043a\u043d\u043e",
+"None": "\u041d\u0456",
+"Target": "\u041c\u0435\u0442\u0430",
+"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u043f\u0440\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u043f\u0440\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Poster": "\u0410\u0444\u0456\u0448\u0430",
+"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e",
+"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u0432\u043f\u0440\u043e\u0432\u0430\u0434\u0436\u0435\u043d\u0438\u0439 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:",
+"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Embed": "\u0412\u043f\u0440\u043e\u0432\u0430\u0434\u0438\u0442\u0438",
+"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
+"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438",
+"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442",
+"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",
+"Print": "\u0414\u0440\u0443\u043a",
+"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
+"Could not find the specified string.": "\u041d\u0435 \u0437\u043c\u0456\u0433 \u0437\u043d\u0430\u0439\u0442\u0438 \u0432\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a.",
+"Replace": "\u0417\u0430\u043c\u0456\u043d\u0430",
+"Next": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439",
+"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Find and replace": "\u0417\u043d\u0430\u0439\u0442\u0438 \u0456 \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
+"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0430 \u043d\u0430",
+"Find": "\u0417\u043d\u0430\u0439\u0442\u0438",
+"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0456\u0442\u044c \u0443\u0441\u0435",
+"Match case": "\u0417 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0430",
+"Prev": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",
+"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
+"Finish": "\u0424\u0456\u043d\u0456\u0448",
+"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0443\u0441\u0435",
+"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438",
+"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0440\u044f\u0434\u043e\u043a \u0440\u0430\u043d\u0456\u0448\u0435",
+"Rows": "\u0420\u044f\u0434\u0438",
+"Height": "\u0412\u0438\u0441\u043e\u0442\u0430",
+"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f",
+"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",
+"Row": "\u0420\u044f\u0434\u043e\u043a",
+"Insert column before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u0440\u0430\u043d\u0456\u0448\u0435",
+"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0439\u0442\u0435 \u043e\u0441\u0435\u0440\u0435\u0434\u043e\u043a",
+"Cell padding": "\u0417\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f \u043e\u0441\u0435\u0440\u0435\u0434\u043a\u0456\u0432",
+"Cell spacing": "\u0406\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0456\u0436 \u043e\u0441\u0435\u0440\u0435\u0434\u043a\u0430\u043c\u0438",
+"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u0443",
+"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"Body": "\u0422\u0456\u043b\u043e",
+"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
+"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0440\u044f\u0434\u043e\u043a \u0440\u0430\u043d\u0456\u0448\u0435",
+"Scope": "\u0423 \u043c\u0435\u0436\u0430\u0445",
+"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"Header cell": "\u041e\u0441\u0435\u0440\u0435\u0434\u043e\u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430",
+"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Cell": "\u041e\u0441\u0435\u0440\u0435\u0434\u043e\u043a",
+"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
+"Cell type": "\u0422\u0438\u043f \u043e\u0441\u0435\u0440\u0435\u0434\u043a\u0443",
+"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Row properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0440\u044f\u0434\u043a\u0430",
+"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",
+"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u0456\u0432",
+"Right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
+"Insert column after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0456\u0441\u043b\u044f",
+"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456",
+"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043e\u0441\u0435\u0440\u0435\u0434\u043a\u0443",
+"Left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447",
+"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0456\u0442\u044c \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Center": "\u0426\u0435\u043d\u0442\u0440",
+"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0439\u0442\u0435 \u043e\u0441\u0435\u0440\u0435\u0434\u043a\u0438",
+"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
+"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",
+"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
+"Words: {0}": "\u0421\u043b\u043e\u0432\u0430: {0}",
+"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u041f\u0440\u0430\u0432\u043a\u0430",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c Rich \u0442\u0435\u043a\u0441\u0442\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 - \u043c\u0435\u043d\u044e. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F10 - \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-0 - \u0434\u043e\u0432\u0456\u0434\u043a\u0430",
+"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
+"View": "\u0412\u0438\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/vi.js b/framework/Web/Javascripts/source/tinymce-405/langs/vi.js
new file mode 100755
index 00000000..cc860c0e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/vi.js
@@ -0,0 +1,96 @@
+tinymce.addI18n('vi',{
+"Cut": "C\u1eaft",
+"Header 2": "Ti\u00eau \u0111\u1ec1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n kh\u00f4ng h\u1ed7 tr\u1ee3 truy c\u1eadp truy c\u1eadp b\u1ed9 nh\u1edb \u1ea3o, vui l\u00f2ng s\u1eed d\u1ee5ng c\u00e1c t\u1ed5 h\u1ee3p ph\u00edm Ctrl + X, C, V.",
+"Div": "Khung",
+"Paste": "D\u00e1n",
+"Close": "\u0110\u00f3ng L\u1ea1i",
+"Pre": "\u0110\u1ecbnh d\u1ea1ng",
+"Align right": "Canh ph\u1ea3i",
+"New document": "T\u1ea1o t\u00e0i li\u1ec7u m\u1edbi",
+"Blockquote": "\u0110o\u1ea1n Tr\u00edch D\u1eabn",
+"Numbered list": "Danh s\u00e1ch d\u1ea1ng s\u1ed1",
+"Increase indent": "T\u0103ng kho\u1ea3ng c\u00e1ch d\u00f2ng",
+"Formats": "\u0110\u1ecbnh d\u1ea1ng",
+"Headers": "\u0110\u1ea7u trang",
+"Select all": "Ch\u1ecdn t\u1ea5t c\u1ea3",
+"Header 3": "Ti\u00eau \u0111\u1ec1 3",
+"Blocks": "Bao",
+"Undo": "H\u1ee7y thao t\u00e1c",
+"Strikethrough": "G\u1ea1ch ngang",
+"Bullet list": "Danh s\u00e1ch d\u1ea1ng bi\u1ec3u t\u01b0\u1ee3ng",
+"Header 1": "Ti\u00eau \u0111\u1ec1 1",
+"Superscript": "K\u00fd t\u1ef1 m\u0169",
+"Clear formatting": "L\u01b0\u1ee3c b\u1ecf ph\u1ea7n hi\u1ec7u \u1ee9ng",
+"Subscript": "K\u00fd t\u1ef1 th\u1ea5p",
+"Header 6": "Ti\u00eau \u0111\u1ec1 6",
+"Redo": "L\u00e0m l\u1ea1i",
+"Paragraph": "\u0110o\u1ea1n v\u0103n",
+"Ok": "\u0110\u1ed3ng \u00dd",
+"Bold": "In \u0111\u1eadm",
+"Code": "M\u00e3",
+"Italic": "In nghi\u00eang",
+"Align center": "Canh gi\u1eefa",
+"Header 5": "Ti\u00eau \u0111\u1ec1 5",
+"Decrease indent": "Th\u1ee5t l\u00f9i d\u00f2ng",
+"Header 4": "Ti\u00eau \u0111\u1ec1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00e1n \u0111ang trong tr\u1ea1ng th\u00e1i v\u0103n b\u1ea3n thu\u1ea7n. N\u1ed9i dung s\u1ebd \u0111\u01b0\u1ee3c d\u00e1n d\u01b0\u1edbi d\u1ea1ng v\u0103n b\u1ea3n thu\u1ea7n, kh\u00f4ng \u0111\u1ecbnh d\u1ea1ng.",
+"Underline": "G\u1ea1ch d\u01b0\u1edbi",
+"Cancel": "Hu\u1ef7 B\u1ecf",
+"Justify": "Canh \u0111\u1ec1u hai b\u00ean",
+"Inline": "C\u00f9ng d\u00f2ng",
+"Copy": "Sao ch\u00e9p",
+"Align left": "Canh tr\u00e1i",
+"Visual aids": "M\u1edf khung so\u1ea1n th\u1ea3o",
+"Lower Greek": "S\u1ed1 hy l\u1ea1p th\u01b0\u1eddng",
+"Square": "\u00d4 vu\u00f4ng",
+"Default": "Ng\u1ea7m \u0111\u1ecbnh",
+"Lower Alpha": "K\u00fd t\u1ef1 th\u01b0\u1eddng",
+"Circle": "H\u00ecnh tr\u00f2n",
+"Disc": "H\u00ecnh tr\u00f2n m\u1ecfng",
+"Upper Alpha": "K\u00fd t\u1ef1 hoa",
+"Upper Roman": "S\u1ed1 la m\u00e3 hoa",
+"Lower Roman": "S\u1ed1 la m\u00e3 th\u01b0\u1eddng",
+"Insert row before": "Th\u00eam d\u00f2ng ph\u00eda tr\u00ean",
+"Rows": "D\u00f2ng",
+"Height": "Cao",
+"Paste row after": "D\u00e1n v\u00e0o ph\u00eda sau, d\u01b0\u1edbi",
+"Alignment": "Canh ch\u1ec9nh",
+"Column group": "Nh\u00f3m c\u1ed9t",
+"Row": "D\u00f2ng",
+"Insert column before": "Th\u00eam c\u1ed9t b\u00ean tr\u00e1i",
+"Split cell": "Chia \u00f4",
+"Cell padding": "Kho\u1ea3ng c\u00e1ch trong \u00f4",
+"Cell spacing": "Kho\u1ea3ng c\u00e1ch \u00f4",
+"Row type": "Lo\u1ea1i d\u00f2ng",
+"Insert table": "Th\u00eam b\u1ea3ng",
+"Body": "N\u1ed9i dung",
+"Caption": "Ti\u00eau \u0111\u1ec1",
+"Footer": "Ch\u00e2n",
+"Delete row": "Xo\u00e1 d\u00f2ng",
+"Paste row before": "D\u00e1n v\u00e0o ph\u00eda tr\u01b0\u1edbc, tr\u00ean",
+"Scope": "Quy\u1ec1n",
+"Delete table": "Xo\u00e1 b\u1ea3ng",
+"Header cell": "Ti\u00eau \u0111\u1ec1 \u00f4",
+"Column": "C\u1ed9t",
+"None": "Kh\u00f4ng",
+"Cell": "\u00d4",
+"Header": "Ti\u00eau \u0111\u1ec1",
+"Border": "\u0110\u01b0\u1eddng vi\u1ec1n",
+"Cell type": "Lo\u1ea1i \u00f4",
+"Copy row": "Ch\u00e9p d\u00f2ng",
+"Row properties": "Thu\u1ed9c t\u00ednh d\u00f2ng",
+"Table properties": "Thu\u1ed9c t\u00ednh b\u1ea3ng",
+"Row group": "Nh\u00f3m d\u00f2ng",
+"Right": "Ph\u1ea3i",
+"Insert column after": "Th\u00eam c\u1ed9t b\u00ean ph\u1ea3i",
+"Cols": "C\u1ed9t",
+"Insert row after": "Th\u00eam d\u00f2ng ph\u00eda d\u01b0\u1edbi",
+"Width": "R\u1ed9ng",
+"Cell properties": "Thu\u1ed9c t\u00ednh \u00f4",
+"Left": "Tr\u00e1i",
+"Cut row": "C\u1eaft d\u00f2ng",
+"Delete column": "Xo\u00e1 c\u1ed9t",
+"Center": "Gi\u1eefa",
+"Merge cells": "N\u1ed1i \u00f4"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/vi_VN.js b/framework/Web/Javascripts/source/tinymce-405/langs/vi_VN.js
new file mode 100755
index 00000000..d1f1bae2
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/vi_VN.js
@@ -0,0 +1,173 @@
+tinymce.addI18n('vi_VN',{
+"Cut": "C\u1eaft",
+"Header 2": "Ti\u00eau \u0111\u1ec1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n kh\u00f4ng h\u1ed7 tr\u1ee3 truy c\u1eadp clipboard, vui l\u00f2ng s\u1eed d\u1ee5ng c\u00e1c t\u1ed5 h\u1ee3p Ctrl + X, C, V.",
+"Div": "Khung",
+"Paste": "D\u00e1n",
+"Close": "\u0110\u00f3ng",
+"Pre": "\u0110\u1ecbnh d\u1ea1ng",
+"Align right": "Canh ph\u1ea3i",
+"New document": "T\u1ea1o t\u00e0i li\u1ec7u m\u1edbi",
+"Blockquote": "Tr\u00edch",
+"Numbered list": "Danh s\u00e1ch s\u1ed1",
+"Increase indent": "L\u00f9i v\u00e0o",
+"Formats": "\u0110\u1ecbnh d\u1ea1ng",
+"Headers": "\u0110\u1ea7u trang",
+"Select all": "Ch\u1ecdn t\u1ea5t c\u1ea3",
+"Header 3": "Ti\u00eau \u0111\u1ec1 3",
+"Blocks": "Bao",
+"Undo": "Hu\u1ef7 thao t\u00e1c",
+"Strikethrough": "G\u1ea1ch ngang",
+"Bullet list": "D\u1ea5u \u0111\u1ea7u d\u00f2ng",
+"Header 1": "Ti\u00eau \u0111\u1ec1 1",
+"Superscript": "Tr\u00ean d\u00f2ng",
+"Clear formatting": "Xo\u00e1 \u0111\u1ecbnh d\u1ea1ng",
+"Subscript": "D\u01b0\u1edbi d\u00f2ng",
+"Header 6": "Ti\u00eau \u0111\u1ec1 6",
+"Redo": "Ho\u00e0n t\u00e1t",
+"Paragraph": "\u0110o\u1ea1n v\u0103n",
+"Ok": "OK",
+"Bold": "T\u00f4 \u0111\u1eadm",
+"Code": "M\u00e3",
+"Italic": "In nghi\u00eang",
+"Align center": "Canh gi\u1eefa",
+"Header 5": "Ti\u00eau \u0111\u1ec1 5",
+"Decrease indent": "L\u00f9i ra",
+"Header 4": "Ti\u00eau \u0111\u1ec1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00e1n \u0111ang trong tr\u1ea1ng th\u00e1i v\u0103n b\u1ea3n thu\u1ea7n. N\u1ed9i dung s\u1ebd \u0111\u01b0\u1ee3c d\u00e1n d\u01b0\u1edbi d\u1ea1ng v\u0103n b\u1ea3n thu\u1ea7n (Kh\u00f4ng \u0111\u1ecbnh d\u1ea1ng)",
+"Underline": "G\u1ea1ch d\u01b0\u1edbi",
+"Cancel": "Hu\u1ef7",
+"Justify": "Canh \u0111\u1ec1u hai b\u00ean",
+"Inline": "C\u00f9ng d\u00f2ng",
+"Copy": "Ch\u00e9p",
+"Align left": "Canh tr\u00e1i",
+"Visual aids": "Hi\u1ec7n khung so\u1ea1n th\u1ea3o",
+"Lower Greek": "S\u1ed1 hy l\u1ea1p th\u01b0\u1eddng",
+"Square": "\u00d4 vu\u00f4ng",
+"Default": "Ng\u1ea7m \u0111\u1ecbnh",
+"Lower Alpha": "K\u00fd t\u1ef1 th\u01b0\u1eddng",
+"Circle": "H\u00ecnh tr\u00f2n",
+"Disc": "H\u00ecnh tr\u00f2n m\u1ecfng",
+"Upper Alpha": "K\u00fd t\u1ef1 hoa",
+"Upper Roman": "S\u1ed1 la m\u00e3 hoa",
+"Lower Roman": "S\u1ed1 la m\u00e3 th\u01b0\u1eddng",
+"Name": "T\u00ean",
+"Anchor": "Neo",
+"You have unsaved changes are you sure you want to navigate away?": "B\u1ea1n ch\u01b0a l\u01b0u c\u00e1c thay \u0111\u1ed5i, b\u1ea1n c\u00f3 th\u1eadt s\u1ef1 mu\u1ed1n \u0111\u00f3ng ?",
+"Restore last draft": "Ph\u1ee5c h\u1ed3i b\u1ea3n l\u01b0u g\u1ea7n nh\u1ea5t",
+"Special character": "K\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t",
+"Source code": "M\u00e3 ngu\u1ed3n",
+"Right to left": "Ph\u1ea3i sang tr\u00e1i",
+"Left to right": "Tr\u00e1i sang ph\u1ea3i",
+"Emoticons": "Bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac",
+"Robots": "Robots",
+"Document properties": "Thu\u1ed9c t\u00ednh t\u00e0i li\u1ec7u",
+"Title": "Ti\u00eau \u0111\u1ec1",
+"Keywords": "T\u1eeb kho\u00e1",
+"Encoding": "M\u00e3 ho\u00e1",
+"Description": "Mi\u00eau t\u1ea3",
+"Author": "Neo",
+"Fullscreen": "\u0110\u1ea7y m\u00e0n h\u00ecnh",
+"Horizontal line": "G\u1ea1ch ngang",
+"Horizontal space": "Kho\u1ea3ng c\u00e1ch ngang",
+"Insert\/edit image": "Th\u00eam \/ s\u1eeda h\u00ecnh \u1ea3nh",
+"General": "T\u1ed5ng h\u1ee3p",
+"Advanced": "N\u00e2ng cao",
+"Source": "Ngu\u1ed3n",
+"Border": "\u0110\u01b0\u1eddng vi\u1ec1n",
+"Constrain proportions": "H\u1ea1n ch\u1ebf t\u1ef7 l\u1ec7",
+"Vertical space": "Kho\u1ea3ng c\u00e1ch d\u1ecdc",
+"Image description": "Mi\u00eau t\u1ea3 h\u00ecnh \u1ea3nh",
+"Style": "Ki\u1ec3u",
+"Dimensions": "K\u00edch th\u01b0\u1edbc",
+"Insert image": "Ch\u00e8n \u1ea3nh",
+"Insert date\/time": "Th\u00eam ng\u00e0y \/ gi\u1edd",
+"Remove link": "Xo\u00e1 li\u00ean k\u1ebft",
+"Url": "Li\u00ean k\u1ebft",
+"Text to display": "Ch\u1eef hi\u1ec3n th\u1ecb",
+"Insert link": "Th\u00eam li\u00ean k\u1ebft",
+"New window": "C\u1eeda s\u1ed5 m\u1edbi",
+"None": "Kh\u00f4ng",
+"Target": "M\u1ee5c ti\u00eau",
+"Insert\/edit link": "Th\u00eam \/ s\u1eeda li\u00ean k\u1ebft",
+"Insert\/edit video": "Th\u00eam \/ s\u1eeda video",
+"Poster": "Ng\u01b0\u1eddi \u0111\u0103ng",
+"Alternative source": "Ngu\u1ed3n thay th\u1ebf",
+"Paste your embed code below:": "D\u00e1n m\u00e3 embed v\u00e0o:",
+"Insert video": "Th\u00eam video",
+"Embed": "Embed",
+"Nonbreaking space": "Kh\u00f4ng ng\u1eaft kho\u1ea3ng",
+"Page break": "Ng\u1eaft trang",
+"Preview": "Xem tr\u01b0\u1edbc",
+"Print": "In",
+"Save": "L\u01b0u",
+"Could not find the specified string.": "Kh\u00f4ng t\u00ecm th\u1ea5y chu\u1ed7i y\u00eau c\u1ea7u",
+"Replace": "Thay th\u1ebf",
+"Next": "Sau",
+"Whole words": "T\u1ea5t c\u1ea3 \u0111o\u1ea1n",
+"Find and replace": "T\u00ecm v\u00e0 thay th\u1ebf",
+"Replace with": "Thay th\u1ebf b\u1eb1ng",
+"Find": "T\u00ecm",
+"Replace all": "Thay th\u1ebf t\u1ea5t c\u1ea3",
+"Match case": "Ph\u00e2n bi\u1ec7t hoa th\u01b0\u1eddng",
+"Prev": "Tr\u01b0\u1edbc",
+"Spellcheck": "Ki\u1ec3m tra ch\u00ednh t\u1ea3",
+"Finish": "K\u1ebft th\u00fac",
+"Ignore all": "L\u1edd t\u1ea5t c\u1ea3",
+"Ignore": "L\u1edd qua",
+"Insert row before": "Th\u00eam d\u00f2ng ph\u00eda tr\u00ean",
+"Rows": "D\u00f2ng",
+"Height": "Cao",
+"Paste row after": "D\u00e1n v\u00e0o ph\u00eda sau, d\u01b0\u1edbi",
+"Alignment": "Canh ch\u1ec9nh",
+"Column group": "Nh\u00f3m c\u1ed9t",
+"Row": "D\u00f2ng",
+"Insert column before": "Th\u00eam c\u1ed9t b\u00ean tr\u00e1i",
+"Split cell": "Chia \u00f4",
+"Cell padding": "Kho\u1ea3ng c\u00e1ch trong \u00f4",
+"Cell spacing": "Kho\u1ea3ng c\u00e1ch \u00f4",
+"Row type": "Lo\u1ea1i d\u00f2ng",
+"Insert table": "Th\u00eam b\u1ea3ng",
+"Body": "N\u1ed9i dung",
+"Caption": "Ti\u00eau \u0111\u1ec1",
+"Footer": "Ch\u00e2n",
+"Delete row": "Xo\u00e1 d\u00f2ng",
+"Paste row before": "D\u00e1n v\u00e0o ph\u00eda tr\u01b0\u1edbc, tr\u00ean",
+"Scope": "Quy\u1ec1n",
+"Delete table": "Xo\u00e1 b\u1ea3ng",
+"Header cell": "Ti\u00eau \u0111\u1ec1 \u00f4",
+"Column": "C\u1ed9t",
+"Cell": "\u00d4",
+"Header": "Ti\u00eau \u0111\u1ec1",
+"Cell type": "Lo\u1ea1i \u00f4",
+"Copy row": "Ch\u00e9p d\u00f2ng",
+"Row properties": "Thu\u1ed9c t\u00ednh d\u00f2ng",
+"Table properties": "Thu\u1ed9c t\u00ednh b\u1ea3ng",
+"Row group": "Nh\u00f3m d\u00f2ng",
+"Right": "Ph\u1ea3i",
+"Insert column after": "Th\u00eam c\u1ed9t b\u00ean ph\u1ea3i",
+"Cols": "C\u1ed9t",
+"Insert row after": "Th\u00eam d\u00f2ng ph\u00eda d\u01b0\u1edbi",
+"Width": "R\u1ed9ng",
+"Cell properties": "Thu\u1ed9c t\u00ednh \u00f4",
+"Left": "Tr\u00e1i",
+"Cut row": "C\u1eaft d\u00f2ng",
+"Delete column": "Xo\u00e1 c\u1ed9t",
+"Center": "Gi\u1eefa",
+"Merge cells": "N\u1ed1i \u00f4",
+"Insert template": "Th\u00eam giao di\u1ec7n",
+"Templates": "Giao di\u1ec7n",
+"Background color": "M\u00e0u n\u1ec1n",
+"Text color": "M\u00e0u ch\u1eef",
+"Show blocks": "Hi\u1ec3n th\u1ecb kh\u1ed1i",
+"Show invisible characters": "Hi\u1ec3n th\u1ecb c\u00e1c k\u00fd t\u1ef1 \u1ea9n",
+"Words: {0}": "T\u1eeb: {0}",
+"Insert": "Th\u00eam",
+"File": "T\u1eadp tin",
+"Edit": "S\u1eeda",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Khu v\u1ef1c so\u1ea1n th\u1ea3o. Nh\u1ea5n ALT+F9 \u0111\u1ec3 hi\u1ec7n menu, ALT+F10 \u0111\u1ec3 hi\u1ec7n thanh c\u00f4ng c\u1ee5. C\u1ea7n tr\u1ee3 gi\u00fap nh\u1ea5n ALT+0",
+"Tools": "C\u00f4ng c\u1ee5",
+"View": "Xem",
+"Table": "B\u1ea3ng",
+"Format": "\u0110\u1ecbnh d\u1ea1ng"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/zh_CN.js b/framework/Web/Javascripts/source/tinymce-405/langs/zh_CN.js
new file mode 100755
index 00000000..a537641d
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/zh_CN.js
@@ -0,0 +1,173 @@
+tinymce.addI18n('zh_CN',{
+"Cut": "\u526a\u5207",
+"Header 2": "\u6807\u98982",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
+"Div": "Div\u533a\u5757",
+"Paste": "\u7c98\u8d34",
+"Close": "\u5173\u95ed",
+"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
+"Align right": "\u53f3\u5bf9\u9f50",
+"New document": "\u65b0\u6587\u6863",
+"Blockquote": "\u5f15\u7528",
+"Numbered list": "\u7f16\u53f7\u5217\u8868",
+"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
+"Formats": "\u683c\u5f0f",
+"Headers": "\u6807\u9898",
+"Select all": "\u5168\u9009",
+"Header 3": "\u6807\u98983",
+"Blocks": "\u5757",
+"Undo": "\u64a4\u6d88",
+"Strikethrough": "\u5220\u9664\u7ebf",
+"Bullet list": "\u9879\u76ee\u7b26\u53f7",
+"Header 1": "\u6807\u98981",
+"Superscript": "\u4e0a\u6807",
+"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
+"Subscript": "\u4e0b\u6807",
+"Header 6": "\u6807\u98986",
+"Redo": "\u91cd\u590d",
+"Paragraph": "\u6bb5\u843d",
+"Ok": "\u786e\u5b9a",
+"Bold": "\u7c97\u4f53",
+"Code": "\u4ee3\u7801",
+"Italic": "\u659c\u4f53",
+"Align center": "\u5c45\u4e2d",
+"Header 5": "\u6807\u98985",
+"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
+"Header 4": "\u6807\u98984",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
+"Underline": "\u4e0b\u5212\u7ebf",
+"Cancel": "\u53d6\u6d88",
+"Justify": "\u4e24\u7aef\u5bf9\u9f50",
+"Inline": "\u5185\u5d4c",
+"Copy": "\u590d\u5236",
+"Align left": "\u5de6\u5bf9\u9f50",
+"Visual aids": "\u63d0\u793a",
+"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
+"Square": "\u65b9\u5757",
+"Default": "\u9ed8\u8ba4",
+"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
+"Circle": "\u7a7a\u5fc3\u5706",
+"Disc": "\u5b9e\u5fc3\u5706",
+"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
+"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Name": "\u540d\u79f0",
+"Anchor": "\u951a\u70b9",
+"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
+"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
+"Special character": "\u7279\u6b8a\u7b26\u53f7",
+"Source code": "\u6e90\u4ee3\u7801",
+"Right to left": "\u4ece\u53f3\u5230\u5de6",
+"Left to right": "\u4ece\u5de6\u5230\u53f3",
+"Emoticons": "\u8868\u60c5",
+"Robots": "\u673a\u5668\u4eba",
+"Document properties": "\u6587\u6863\u5c5e\u6027",
+"Title": "\u6807\u9898",
+"Keywords": "\u5173\u952e\u8bcd",
+"Encoding": "\u7f16\u7801",
+"Description": "\u63cf\u8ff0",
+"Author": "\u4f5c\u8005",
+"Fullscreen": "\u5168\u5c4f",
+"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
+"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
+"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
+"General": "\u666e\u901a",
+"Advanced": "\u9ad8\u7ea7",
+"Source": "\u5730\u5740",
+"Border": "\u8fb9\u6846",
+"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
+"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
+"Image description": "\u56fe\u7247\u63cf\u8ff0",
+"Style": "\u6837\u5f0f",
+"Dimensions": "\u5927\u5c0f",
+"Insert image": "\u63d2\u5165\u56fe\u7247",
+"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
+"Remove link": "\u5220\u9664\u94fe\u63a5",
+"Url": "\u5730\u5740",
+"Text to display": "\u663e\u793a\u6587\u5b57",
+"Insert link": "\u63d2\u5165\u94fe\u63a5",
+"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
+"None": "\u65e0",
+"Target": "\u6253\u5f00\u65b9\u5f0f",
+"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
+"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
+"Poster": "\u5c01\u9762",
+"Alternative source": "\u955c\u50cf",
+"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
+"Insert video": "\u63d2\u5165\u89c6\u9891",
+"Embed": "\u5185\u5d4c",
+"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
+"Page break": "\u5206\u9875\u7b26",
+"Preview": "\u9884\u89c8",
+"Print": "\u6253\u5370",
+"Save": "\u4fdd\u5b58",
+"Could not find the specified string.": "\u627e\u4e0d\u5230\u8be5\u5b57\u7b26\u4e32",
+"Replace": "\u66ff\u6362",
+"Next": "\u4e0b\u4e00\u4e2a",
+"Whole words": "\u5b8c\u5168\u5339\u914d",
+"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
+"Replace with": "\u66ff\u6362\u4e3a",
+"Find": "\u67e5\u627e",
+"Replace all": "\u5168\u90e8\u66ff\u6362",
+"Match case": "\u5927\u5c0f\u5199\u533a\u5206",
+"Prev": "\u4e0a\u4e00\u4e2a",
+"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
+"Finish": "\u5b8c\u6210",
+"Ignore all": "\u5168\u90e8\u5ffd\u7565",
+"Ignore": "\u5ffd\u7565",
+"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
+"Rows": "\u884c",
+"Height": "\u9ad8",
+"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
+"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
+"Column group": "\u5217\u7ec4",
+"Row": "\u884c",
+"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
+"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
+"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
+"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
+"Row type": "\u884c\u7c7b\u578b",
+"Insert table": "\u63d2\u5165\u8868\u683c",
+"Body": "\u8868\u4f53",
+"Caption": "\u6807\u9898",
+"Footer": "\u8868\u5c3e",
+"Delete row": "\u5220\u9664\u884c",
+"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
+"Scope": "\u8303\u56f4",
+"Delete table": "\u5220\u9664\u8868\u683c",
+"Header cell": "\u8868\u5934\u5355\u5143\u683c",
+"Column": "\u5217",
+"Cell": "\u5355\u5143\u683c",
+"Header": "\u8868\u5934",
+"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
+"Copy row": "\u590d\u5236\u884c",
+"Row properties": "\u884c\u5c5e\u6027",
+"Table properties": "\u8868\u683c\u5c5e\u6027",
+"Row group": "\u884c\u7ec4",
+"Right": "\u53f3\u5bf9\u9f50",
+"Insert column after": "\u63d2\u5165\u5217\u4e8e\u4e4b\u540e",
+"Cols": "\u5217",
+"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
+"Width": "\u5bbd",
+"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
+"Left": "\u5de6\u5bf9\u9f50",
+"Cut row": "\u526a\u5207\u884c",
+"Delete column": "\u5220\u9664\u5217",
+"Center": "\u5c45\u4e2d",
+"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
+"Insert template": "\u63d2\u5165\u6a21\u677f",
+"Templates": "\u6a21\u677f",
+"Background color": "\u80cc\u666f\u8272",
+"Text color": "\u6587\u5b57\u989c\u8272",
+"Show blocks": "\u663e\u793a\u865a\u7ebf\u6846",
+"Show invisible characters": "\u663e\u793a\u53ef\u89c1\u5b57\u7b26",
+"Words: {0}": "\u5b57\u6570\uff1a{0}",
+"Insert": "\u63d2\u5165",
+"File": "\u6587\u4ef6",
+"Edit": "\u7f16\u8f91",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
+"Tools": "\u5de5\u5177",
+"View": "\u89c6\u56fe",
+"Table": "\u8868\u683c",
+"Format": "\u683c\u5f0f"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/langs/zh_TW.js b/framework/Web/Javascripts/source/tinymce-405/langs/zh_TW.js
new file mode 100755
index 00000000..64826fe1
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/langs/zh_TW.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('zh_TW',{
+"Cut": "\u526a\u4e0b",
+"Header 2": "\u6a19\u984c 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002",
+"Div": "Div",
+"Paste": "\u8cbc\u4e0a",
+"Close": "\u95dc\u9589",
+"Pre": "Pre",
+"Align right": "\u7f6e\u53f3\u5c0d\u9f4a",
+"New document": "\u65b0\u6587\u4ef6",
+"Blockquote": "\u5f15\u7528",
+"Numbered list": "\u6578\u5b57\u6e05\u55ae",
+"Increase indent": "\u589e\u52a0\u7e2e\u6392",
+"Formats": "\u683c\u5f0f",
+"Headers": "\u6a19\u984c",
+"Select all": "\u5168\u9078",
+"Header 3": "\u6a19\u984c 3",
+"Blocks": "\u5340\u584a",
+"Undo": "\u5fa9\u539f",
+"Strikethrough": "\u522a\u9664\u7dda",
+"Bullet list": "\u9805\u76ee\u6e05\u55ae",
+"Header 1": "\u6a19\u984c 1",
+"Superscript": "\u4e0a\u6a19",
+"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
+"Subscript": "\u4e0b\u6a19",
+"Header 6": "\u6a19\u984c 6",
+"Redo": "\u53d6\u6d88\u5fa9\u539f",
+"Paragraph": "\u6bb5\u843d",
+"Ok": "\u78ba\u5b9a",
+"Bold": "\u7c97\u9ad4",
+"Code": "\u7a0b\u5f0f\u78bc",
+"Italic": "\u659c\u9ad4",
+"Align center": "\u7f6e\u4e2d\u5c0d\u9f4a",
+"Header 5": "\u6a19\u984c 5",
+"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392",
+"Header 4": "\u6a19\u984c 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002",
+"Underline": "\u5e95\u7dda",
+"Cancel": "\u53d6\u6d88",
+"Justify": "\u5de6\u53f3\u5c0d\u9f4a",
+"Inline": "Inline",
+"Copy": "\u8907\u88fd",
+"Align left": "\u7f6e\u5de6\u5c0d\u9f4a",
+"Visual aids": "\u5c0f\u5e6b\u624b",
+"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd",
+"Square": "\u6b63\u65b9\u5f62",
+"Default": "\u9810\u8a2d",
+"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd",
+"Circle": "\u7a7a\u5fc3\u5713",
+"Disc": "\u5be6\u5fc3\u5713",
+"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd",
+"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57",
+"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57",
+"Name": "\u540d\u7a31",
+"Anchor": "\u52a0\u5165\u9328\u9ede",
+"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f",
+"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f",
+"Special character": "\u7279\u6b8a\u5b57\u5143",
+"Source code": "\u539f\u59cb\u78bc",
+"Right to left": "\u5f9e\u53f3\u5230\u5de6",
+"Left to right": "\u5f9e\u5de6\u5230\u53f3",
+"Emoticons": "\u8868\u60c5",
+"Robots": "\u6a5f\u5668\u4eba",
+"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027",
+"Title": "\u6a19\u984c",
+"Keywords": "\u95dc\u9375\u5b57",
+"Encoding": "\u7de8\u78bc",
+"Description": "\u63cf\u8ff0",
+"Author": "\u4f5c\u8005",
+"Fullscreen": "\u5168\u87a2\u5e55",
+"Horizontal line": "\u6c34\u5e73\u7dda",
+"Horizontal space": "\u5bec\u5ea6",
+"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247",
+"General": "\u4e00\u822c\u7684",
+"Advanced": "\u9032\u968e",
+"Source": "\u5716\u7247\u7db2\u5740",
+"Border": "\u908a\u6846",
+"Constrain proportions": "\u88ab\u9650\u5236\u7684\u90e8\u5206",
+"Vertical space": "\u9ad8\u5ea6",
+"Image description": "\u5716\u7247\u63cf\u8ff0",
+"Style": "\u985e\u578b",
+"Dimensions": "\u5c3a\u5bf8",
+"Insert image": "\u63d2\u5165\u5716\u7247",
+"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593",
+"Remove link": "\u79fb\u9664\u9023\u7d50",
+"Url": "\u7db2\u5740",
+"Text to display": "\u986f\u793a\u6587\u5b57",
+"Anchors": "\u52a0\u5165\u9328\u9ede",
+"Insert link": "\u63d2\u5165\u9023\u7d50",
+"New window": "\u65b0\u8996\u7a97",
+"None": "\u7121",
+"Target": "\u76ee\u6a19",
+"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
+"Insert\/edit video": "\u63d2\u4ef6\u5f0f\/\u53ef\u7de8\u8f2f \u5f71\u97f3",
+"Poster": "\u6a19\u8a9e",
+"Alternative source": "\u984d\u5916\u8cc7\u6e90",
+"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:",
+"Insert video": "\u63d2\u4ef6\u5f0f\u5f71\u97f3",
+"Embed": "\u5d4c\u5165",
+"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c",
+"Page break": "\u5206\u9801",
+"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a",
+"Preview": "\u9810\u89bd",
+"Print": "\u5217\u5370",
+"Save": "\u5132\u5b58",
+"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32",
+"Replace": "\u66ff\u63db",
+"Next": "\u4e0b\u4e00\u500b",
+"Whole words": "\u6574\u500b\u55ae\u5b57",
+"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3",
+"Replace with": "\u66f4\u63db",
+"Find": "\u641c\u5c0b",
+"Replace all": "\u66ff\u63db\u5168\u90e8",
+"Match case": "\u76f8\u5339\u914d\u6848\u4ef6",
+"Prev": "\u4e0a\u4e00\u500b",
+"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5",
+"Finish": "\u5b8c\u6210",
+"Ignore all": "\u5ffd\u7565\u6240\u6709",
+"Ignore": "\u5ffd\u7565",
+"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d",
+"Rows": "\u5217",
+"Height": "\u9ad8\u5ea6",
+"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c",
+"Alignment": "\u5c0d\u9f4a",
+"Column group": "\u6b04\u4f4d\u7fa4\u7d44",
+"Row": "\u5217",
+"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d",
+"Split cell": "\u5206\u5272\u5132\u5b58\u683c",
+"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd",
+"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd",
+"Row type": "\u884c\u7684\u985e\u578b",
+"Insert table": "\u63d2\u5165\u8868\u683c",
+"Body": "\u4e3b\u9ad4",
+"Caption": "\u8868\u683c\u6a19\u984c",
+"Footer": "\u9801\u5c3e",
+"Delete row": "\u522a\u9664\u5217",
+"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d",
+"Scope": "\u7bc4\u570d",
+"Delete table": "\u522a\u9664\u8868\u683c",
+"Header cell": "\u6a19\u982d\u5132\u5b58\u683c",
+"Column": "\u884c",
+"Cell": "\u5132\u5b58\u683c",
+"Header": "\u6a19\u982d",
+"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b",
+"Copy row": "\u8907\u88fd\u5217",
+"Row properties": "\u5217\u5c6c\u6027",
+"Table properties": "\u8868\u683c\u5c6c\u6027",
+"Row group": "\u5217\u7fa4\u7d44",
+"Right": "\u53f3\u908a",
+"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c",
+"Cols": "\u6b04\u4f4d\u6bb5",
+"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c",
+"Width": "\u5bec\u5ea6",
+"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027",
+"Left": "\u5de6\u908a",
+"Cut row": "\u526a\u4e0b\u5217",
+"Delete column": "\u522a\u9664\u884c",
+"Center": "\u4e2d\u9593",
+"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c",
+"Insert template": "\u63d2\u5165\u6a23\u7248",
+"Templates": "\u6a23\u7248",
+"Background color": "\u80cc\u666f\u984f\u8272",
+"Text color": "\u6587\u5b57\u984f\u8272",
+"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a",
+"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143",
+"Words: {0}": "\u5b57\u6578\uff1a{0}",
+"Insert": "\u63d2\u5165",
+"File": "\u6a94\u6848",
+"Edit": "\u7de8\u8f2f",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9",
+"Tools": "\u5de5\u5177",
+"View": "\u6aa2\u8996",
+"Table": "\u8868\u683c",
+"Format": "\u683c\u5f0f"
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/license.txt b/framework/Web/Javascripts/source/tinymce-405/license.txt
new file mode 100755
index 00000000..1837b0ac
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/license.txt
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/advlist/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/advlist/plugin.min.js
new file mode 100755
index 00000000..da1cdb2b
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/advlist/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("advlist",function(t){function e(t,e){var n=[];return tinymce.each(e.split(/[ ,]/),function(t){n.push({text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"==t?"":t})}),n}function n(e,n){var i,r=t.dom,a=t.selection;i=r.getParent(a.getNode(),"ol,ul"),i&&i.nodeName==e&&n!==!1||t.execCommand("UL"==e?"InsertUnorderedList":"InsertOrderedList"),n=n===!1?o[e]:n,o[e]=n,i=r.getParent(a.getNode(),"ol,ul"),i&&(r.setStyle(i,"listStyleType",n),i.removeAttribute("data-mce-style")),t.focus()}function i(e){var n=t.dom.getStyle(t.dom.getParent(t.selection.getNode(),"ol,ul"),"listStyleType")||"";e.control.items().each(function(t){t.active(t.settings.data===n)})}var r,a,o={};r=e("OL",t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),a=e("UL",t.getParam("advlist_bullet_styles","default,circle,disc,square")),t.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:r,onshow:i,onselect:function(t){n("OL",t.control.settings.data)},onclick:function(){n("OL",!1)}}),t.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:a,onshow:i,onselect:function(t){n("UL",t.control.settings.data)},onclick:function(){n("UL",!1)}})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/anchor/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/anchor/plugin.min.js
new file mode 100755
index 00000000..6a3fd792
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/anchor/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("anchor",function(e){function t(){var t=e.selection.getNode();e.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:t.name||t.id},onsubmit:function(t){e.execCommand("mceInsertContent",!1,e.dom.createHTML("a",{id:t.data.name}))}})}e.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:t,stateSelector:"a:not([href])"}),e.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:t})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/autolink/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/autolink/plugin.min.js
new file mode 100755
index 00000000..3d2f58ee
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/autolink/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("autolink",function(t){function e(t){o(t,-1,"(",!0)}function n(t){o(t,0,"",!0)}function i(t){o(t,-1,"",!1)}function o(t,e,n){var i,o,r,a,s,l,c,u,d;if(i=t.selection.getRng(!0).cloneRange(),i.startOffset<5){if(u=i.endContainer.previousSibling,!u){if(!i.endContainer.firstChild||!i.endContainer.firstChild.nextSibling)return;u=i.endContainer.firstChild.nextSibling}if(d=u.length,i.setStart(u,d),i.setEnd(u,d),i.endOffset<5)return;o=i.endOffset,a=u}else{if(a=i.endContainer,3!=a.nodeType&&a.firstChild){for(;3!=a.nodeType&&a.firstChild;)a=a.firstChild;3==a.nodeType&&(i.setStart(a,0),i.setEnd(a,a.nodeValue.length))}o=1==i.endOffset?2:i.endOffset-1-e}r=o;do i.setStart(a,o>=2?o-2:0),i.setEnd(a,o>=1?o-1:0),o-=1;while(" "!=i.toString()&&""!==i.toString()&&160!=i.toString().charCodeAt(0)&&o-2>=0&&i.toString()!=n);if(i.toString()==n||160==i.toString().charCodeAt(0)?(i.setStart(a,o),i.setEnd(a,r),o+=1):0===i.startOffset?(i.setStart(a,0),i.setEnd(a,r)):(i.setStart(a,o),i.setEnd(a,r)),l=i.toString(),"."==l.charAt(l.length-1)&&i.setEnd(a,r-1),l=i.toString(),c=l.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i),c&&("www."==c[1]?c[1]="http://www.":/@$/.test(c[1])&&!/^mailto:/.test(c[1])&&(c[1]="mailto:"+c[1]),s=t.selection.getBookmark(),t.selection.setRng(i),t.execCommand("createlink",!1,c[1]+c[2]),t.selection.moveToBookmark(s),t.nodeChanged(),tinymce.Env.webkit)){t.selection.collapse(!1);var m=Math.min(a.length,r+1);i.setStart(a,m),i.setEnd(a,m),t.selection.setRng(i)}}t.on("keydown",function(e){return 13==e.keyCode?i(t):void 0}),tinymce.Env.ie||(t.on("keypress",function(n){return 41==n.which?e(t):void 0}),t.on("keyup",function(e){return 32==e.keyCode?n(t):void 0}))}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/autoresize/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/autoresize/plugin.min.js
new file mode 100755
index 00000000..12355aa9
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/autoresize/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("autoresize",function(e){function t(a){var r,o,c=e.getDoc(),s=c.body,u=c.documentElement,l=tinymce.DOM,m=n.autoresize_min_height;"setcontent"==a.type&&a.initial||e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()||(o=tinymce.Env.ie?s.scrollHeight:tinymce.Env.webkit&&0===s.clientHeight?0:s.offsetHeight,o>n.autoresize_min_height&&(m=o),n.autoresize_max_height&&o>n.autoresize_max_height?(m=n.autoresize_max_height,s.style.overflowY="auto",u.style.overflowY="auto"):(s.style.overflowY="hidden",u.style.overflowY="hidden",s.scrollTop=0),m!==i&&(r=m-i,l.setStyle(l.get(e.id+"_ifr"),"height",m+"px"),i=m,tinymce.isWebKit&&0>r&&t(a)))}var n=e.settings,i=0;e.settings.inline||(n.autoresize_min_height=parseInt(e.getParam("autoresize_min_height",e.getElement().offsetHeight),10),n.autoresize_max_height=parseInt(e.getParam("autoresize_max_height",0),10),e.on("init",function(){e.dom.setStyle(e.getBody(),"paddingBottom",e.getParam("autoresize_bottom_margin",50)+"px")}),e.on("change setcontent paste keyup",t),e.getParam("autoresize_on_init",!0)&&e.on("load",t),e.addCommand("mceAutoResize",t))}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/autosave/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/autosave/plugin.min.js
new file mode 100755
index 00000000..93ee1df5
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/autosave/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("autosave",function(e){function t(e,t){var n={s:1e3,m:6e4};return e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function n(){var e=parseInt(f.getItem(h+"autosave.time"),10)||0;return(new Date).getTime()-e>d.autosave_retention?(i(!1),!1):!0}function i(t){f.removeItem(h+"autosave.draft"),f.removeItem(h+"autosave.time"),t!==!1&&e.fire("RemoveDraft")}function a(){c()||(f.setItem(h+"autosave.draft",e.getContent({format:"raw",no_events:!0})),f.setItem(h+"autosave.time",(new Date).getTime()),e.fire("StoreDraft"))}function r(){n()&&(e.setContent(f.getItem(h+"autosave.draft"),{format:"raw"}),e.fire("RestoreDraft"))}function o(){m||(setInterval(function(){e.removed||a()},d.autosave_interval),m=!0)}function s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft RemoveDraft",function(){t.disabled(!n())}),o()}function l(){e.undoManager.beforeChange(),r(),i(),e.undoManager.add()}function u(){var e;return tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e}function c(t){var n=e.settings.forced_root_block;return t=tinymce.trim("undefined"==typeof t?e.getBody().innerHTML:t),""===t||new RegExp("^<"+n+">(( |&nbsp;|[ ]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(t)}var m,d=e.settings,f=tinymce.util.LocalStorage,h=e.id;d.autosave_interval=t(d.autosave_interval,"30s"),d.autosave_retention=t(d.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore last draft",onclick:l,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore last draft",onclick:l,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&c()&&r()}),e.on("saveContent",function(){i()})),window.onbeforeunload=u,this.hasDraft=n,this.storeDraft=a,this.restoreDraft=r,this.removeDraft=i,this.isEmpty=c}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/bbcode/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/bbcode/plugin.min.js
new file mode 100755
index 00000000..70a88a7d
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/bbcode/plugin.min.js
@@ -0,0 +1 @@
+!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(e){var t=this,n=e.getParam("bbcode_dialect","punbb").toLowerCase();e.on("beforeSetContent",function(e){e.content=t["_"+n+"_bbcode2html"](e.content)}),e.on("postProcess",function(e){e.set&&(e.content=t["_"+n+"_bbcode2html"](e.content)),e.get&&(e.content=t["_"+n+"_html2bbcode"](e.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(e){function t(t,n){e=e.replace(t,n)}return e=tinymce.trim(e),t(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),t(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),t(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),t(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),t(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),t(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),t(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),t(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),t(/<font>(.*?)<\/font>/gi,"$1"),t(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),t(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),t(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),t(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),t(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),t(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),t(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),t(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),t(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),t(/<\/(strong|b)>/gi,"[/b]"),t(/<(strong|b)>/gi,"[b]"),t(/<\/(em|i)>/gi,"[/i]"),t(/<(em|i)>/gi,"[i]"),t(/<\/u>/gi,"[/u]"),t(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),t(/<u>/gi,"[u]"),t(/<blockquote[^>]*>/gi,"[quote]"),t(/<\/blockquote>/gi,"[/quote]"),t(/<br \/>/gi,"\n"),t(/<br\/>/gi,"\n"),t(/<br>/gi,"\n"),t(/<p>/gi,""),t(/<\/p>/gi,"\n"),t(/&nbsp;|\u00a0/gi," "),t(/&quot;/gi,'"'),t(/&lt;/gi,"<"),t(/&gt;/gi,">"),t(/&amp;/gi,"&"),e},_punbb_bbcode2html:function(e){function t(t,n){e=e.replace(t,n)}return e=tinymce.trim(e),t(/\n/gi,"<br />"),t(/\[b\]/gi,"<strong>"),t(/\[\/b\]/gi,"</strong>"),t(/\[i\]/gi,"<em>"),t(/\[\/i\]/gi,"</em>"),t(/\[u\]/gi,"<u>"),t(/\[\/u\]/gi,"</u>"),t(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),t(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),t(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),t(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),t(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),t(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),e}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}(); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/charmap/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/charmap/plugin.min.js
new file mode 100755
index 00000000..dff18e6e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/charmap/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("charmap",function(e){function t(){function t(e){for(;e;){if("TD"==e.nodeName)return e;e=e.parentNode}}var i,a,r,o;i='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';var s=25;for(r=0;10>r;r++){for(i+="<tr>",a=0;s>a;a++){var l=n[r*s+a],c="g"+(r*s+a);i+='<td title="'+l[1]+'"><div id="'+c+'" tabIndex="-1">'+(l?String.fromCharCode(parseInt(l[0],10)):"&nbsp;")+"</div></td>"}i+="</tr>"}i+="</tbody></table>";var u={type:"container",html:i,onclick:function(t){var n=t.target;"DIV"==n.nodeName&&e.execCommand("mceInsertContent",!1,n.firstChild.nodeValue)},onmouseover:function(e){var n=t(e.target);n&&o.find("#preview").text(n.firstChild.firstChild.data)}};o=e.windowManager.open({title:"Special character",spacing:10,padding:10,items:[u,{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:100,minHeight:80}],buttons:[{text:"Close",onclick:function(){o.close()}}]})}var n=[["160","no-break space"],["38","ampersand"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"],["173","soft hyphen"]];e.addButton("charmap",{icon:"charmap",tooltip:"Special character",onclick:t}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",onclick:t,context:"insert"})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/code/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/code/plugin.min.js
new file mode 100755
index 00000000..ed9646f5
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/code/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("code",function(e){function t(){e.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:e.getParam("code_dialog_width",600),minHeight:e.getParam("code_dialog_height",500),value:e.getContent({source_view:!0}),spellcheck:!1},onSubmit:function(t){e.undoManager.transact(function(){e.setContent(t.data.code)}),e.nodeChanged()}})}e.addCommand("mceCodeEditor",t),e.addButton("code",{icon:"code",tooltip:"Source code",onclick:t}),e.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:t})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/editable_selects.js b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/editable_selects.js
new file mode 100755
index 00000000..8d30787d
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/editable_selects.js
@@ -0,0 +1,70 @@
+/**
+ * editable_selects.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+var TinyMCE_EditableSelects = {
+ editSelectElm : null,
+
+ init : function() {
+ var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+ for (i=0; i<nl.length; i++) {
+ if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+ o = new Option(tinyMCEPopup.editor.translate('value'), '__mce_add_custom__');
+
+ o.className = 'mceAddSelectValue';
+
+ nl[i].options[nl[i].options.length] = o;
+ nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
+ }
+ }
+ },
+
+ onChangeEditableSelect : function(e) {
+ var d = document, ne, se = window.event ? window.event.srcElement : e.target;
+
+ if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+ ne = d.createElement("input");
+ ne.id = se.id + "_custom";
+ ne.name = se.name + "_custom";
+ ne.type = "text";
+
+ ne.style.width = se.offsetWidth + 'px';
+ se.parentNode.insertBefore(ne, se);
+ se.style.display = 'none';
+ ne.focus();
+ ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+ ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
+ TinyMCE_EditableSelects.editSelectElm = se;
+ }
+ },
+
+ onBlurEditableSelectInput : function() {
+ var se = TinyMCE_EditableSelects.editSelectElm;
+
+ if (se) {
+ if (se.previousSibling.value != '') {
+ addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
+ selectByValue(document.forms[0], se.id, se.previousSibling.value);
+ } else
+ selectByValue(document.forms[0], se.id, '');
+
+ se.style.display = 'inline';
+ se.parentNode.removeChild(se.previousSibling);
+ TinyMCE_EditableSelects.editSelectElm = null;
+ }
+ },
+
+ onKeyDown : function(e) {
+ e = e || window.event;
+
+ if (e.keyCode == 13)
+ TinyMCE_EditableSelects.onBlurEditableSelectInput();
+ }
+};
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/form_utils.js b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/form_utils.js
new file mode 100755
index 00000000..69d338fc
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/form_utils.js
@@ -0,0 +1,210 @@
+/**
+ * form_utils.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
+
+function getColorPickerHTML(id, target_form_element) {
+ var h = "", dom = tinyMCEPopup.dom;
+
+ if (label = dom.select('label[for=' + target_form_element + ']')[0]) {
+ label.id = label.id || dom.uniqueId();
+ }
+
+ h += '<a role="button" aria-labelledby="' + id + '_label" id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
+ h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;<span id="' + id + '_label" class="mceVoiceLabel mceIconOnly" style="display:none;">' + tinyMCEPopup.getLang('browse') + '</span></span></a>';
+
+ return h;
+}
+
+function updateColor(img_id, form_element_id) {
+ document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
+}
+
+function setBrowserDisabled(id, state) {
+ var img = document.getElementById(id);
+ var lnk = document.getElementById(id + "_link");
+
+ if (lnk) {
+ if (state) {
+ lnk.setAttribute("realhref", lnk.getAttribute("href"));
+ lnk.removeAttribute("href");
+ tinyMCEPopup.dom.addClass(img, 'disabled');
+ } else {
+ if (lnk.getAttribute("realhref"))
+ lnk.setAttribute("href", lnk.getAttribute("realhref"));
+
+ tinyMCEPopup.dom.removeClass(img, 'disabled');
+ }
+ }
+}
+
+function getBrowserHTML(id, target_form_element, type, prefix) {
+ var option = prefix + "_" + type + "_browser_callback", cb, html;
+
+ cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
+
+ if (!cb)
+ return "";
+
+ html = "";
+ html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
+ html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
+
+ return html;
+}
+
+function openBrowser(img_id, target_form_element, type, option) {
+ var img = document.getElementById(img_id);
+
+ if (img.className != "mceButtonDisabled")
+ tinyMCEPopup.openBrowser(target_form_element, type, option);
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+ if (!form_obj || !form_obj.elements[field_name])
+ return;
+
+ if (!value)
+ value = "";
+
+ var sel = form_obj.elements[field_name];
+
+ var found = false;
+ for (var i=0; i<sel.options.length; i++) {
+ var option = sel.options[i];
+
+ if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+ option.selected = true;
+ found = true;
+ } else
+ option.selected = false;
+ }
+
+ if (!found && add_custom && value != '') {
+ var option = new Option(value, value);
+ option.selected = true;
+ sel.options[sel.options.length] = option;
+ sel.selectedIndex = sel.options.length - 1;
+ }
+
+ return found;
+}
+
+function getSelectValue(form_obj, field_name) {
+ var elm = form_obj.elements[field_name];
+
+ if (elm == null || elm.options == null || elm.selectedIndex === -1)
+ return "";
+
+ return elm.options[elm.selectedIndex].value;
+}
+
+function addSelectValue(form_obj, field_name, name, value) {
+ var s = form_obj.elements[field_name];
+ var o = new Option(name, value);
+ s.options[s.options.length] = o;
+}
+
+function addClassesToList(list_id, specific_option) {
+ // Setup class droplist
+ var styleSelectElm = document.getElementById(list_id);
+ var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
+ styles = tinyMCEPopup.getParam(specific_option, styles);
+
+ if (styles) {
+ var stylesAr = styles.split(';');
+
+ for (var i=0; i<stylesAr.length; i++) {
+ if (stylesAr != "") {
+ var key, value;
+
+ key = stylesAr[i].split('=')[0];
+ value = stylesAr[i].split('=')[1];
+
+ styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
+ }
+ }
+ } else {
+ tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
+ styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
+ });
+ }
+}
+
+function isVisible(element_id) {
+ var elm = document.getElementById(element_id);
+
+ return elm && elm.style.display != "none";
+}
+
+function convertRGBToHex(col) {
+ var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+ var rgb = col.replace(re, "$1,$2,$3").split(',');
+ if (rgb.length == 3) {
+ r = parseInt(rgb[0]).toString(16);
+ g = parseInt(rgb[1]).toString(16);
+ b = parseInt(rgb[2]).toString(16);
+
+ r = r.length == 1 ? '0' + r : r;
+ g = g.length == 1 ? '0' + g : g;
+ b = b.length == 1 ? '0' + b : b;
+
+ return "#" + r + g + b;
+ }
+
+ return col;
+}
+
+function convertHexToRGB(col) {
+ if (col.indexOf('#') != -1) {
+ col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+ r = parseInt(col.substring(0, 2), 16);
+ g = parseInt(col.substring(2, 4), 16);
+ b = parseInt(col.substring(4, 6), 16);
+
+ return "rgb(" + r + "," + g + "," + b + ")";
+ }
+
+ return col;
+}
+
+function trimSize(size) {
+ return size.replace(/([0-9\.]+)(px|%|in|cm|mm|em|ex|pt|pc)/i, '$1$2');
+}
+
+function getCSSSize(size) {
+ size = trimSize(size);
+
+ if (size == "")
+ return "";
+
+ // Add px
+ if (/^[0-9]+$/.test(size))
+ size += 'px';
+ // Sanity check, IE doesn't like broken values
+ else if (!(/^[0-9\.]+(px|%|in|cm|mm|em|ex|pt|pc)$/i.test(size)))
+ return "";
+
+ return size;
+}
+
+function getStyle(elm, attrib, style) {
+ var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
+
+ if (val != '')
+ return '' + val;
+
+ if (typeof(style) == 'undefined')
+ style = attrib;
+
+ return tinyMCEPopup.dom.getStyle(elm, style);
+}
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/mctabs.js b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/mctabs.js
new file mode 100755
index 00000000..acb5657e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/mctabs.js
@@ -0,0 +1,162 @@
+/**
+ * mctabs.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+function MCTabs() {
+ this.settings = [];
+ this.onChange = tinyMCEPopup.editor.windowManager.createInstance('tinymce.util.Dispatcher');
+};
+
+MCTabs.prototype.init = function(settings) {
+ this.settings = settings;
+};
+
+MCTabs.prototype.getParam = function(name, default_value) {
+ var value = null;
+
+ value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+ // Fix bool values
+ if (value == "true" || value == "false")
+ return (value == "true");
+
+ return value;
+};
+
+MCTabs.prototype.showTab =function(tab){
+ tab.className = 'current';
+ tab.setAttribute("aria-selected", true);
+ tab.setAttribute("aria-expanded", true);
+ tab.tabIndex = 0;
+};
+
+MCTabs.prototype.hideTab =function(tab){
+ var t=this;
+
+ tab.className = '';
+ tab.setAttribute("aria-selected", false);
+ tab.setAttribute("aria-expanded", false);
+ tab.tabIndex = -1;
+};
+
+MCTabs.prototype.showPanel = function(panel) {
+ panel.className = 'current';
+ panel.setAttribute("aria-hidden", false);
+};
+
+MCTabs.prototype.hidePanel = function(panel) {
+ panel.className = 'panel';
+ panel.setAttribute("aria-hidden", true);
+};
+
+MCTabs.prototype.getPanelForTab = function(tabElm) {
+ return tinyMCEPopup.dom.getAttrib(tabElm, "aria-controls");
+};
+
+MCTabs.prototype.displayTab = function(tab_id, panel_id, avoid_focus) {
+ var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i, t = this;
+
+ tabElm = document.getElementById(tab_id);
+
+ if (panel_id === undefined) {
+ panel_id = t.getPanelForTab(tabElm);
+ }
+
+ panelElm= document.getElementById(panel_id);
+ panelContainerElm = panelElm ? panelElm.parentNode : null;
+ tabContainerElm = tabElm ? tabElm.parentNode : null;
+ selectionClass = t.getParam('selection_class', 'current');
+
+ if (tabElm && tabContainerElm) {
+ nodes = tabContainerElm.childNodes;
+
+ // Hide all other tabs
+ for (i = 0; i < nodes.length; i++) {
+ if (nodes[i].nodeName == "LI") {
+ t.hideTab(nodes[i]);
+ }
+ }
+
+ // Show selected tab
+ t.showTab(tabElm);
+ }
+
+ if (panelElm && panelContainerElm) {
+ nodes = panelContainerElm.childNodes;
+
+ // Hide all other panels
+ for (i = 0; i < nodes.length; i++) {
+ if (nodes[i].nodeName == "DIV")
+ t.hidePanel(nodes[i]);
+ }
+
+ if (!avoid_focus) {
+ tabElm.focus();
+ }
+
+ // Show selected panel
+ t.showPanel(panelElm);
+ }
+};
+
+MCTabs.prototype.getAnchor = function() {
+ var pos, url = document.location.href;
+
+ if ((pos = url.lastIndexOf('#')) != -1)
+ return url.substring(pos + 1);
+
+ return "";
+};
+
+
+//Global instance
+var mcTabs = new MCTabs();
+
+tinyMCEPopup.onInit.add(function() {
+ var tinymce = tinyMCEPopup.getWin().tinymce, dom = tinyMCEPopup.dom, each = tinymce.each;
+
+ each(dom.select('div.tabs'), function(tabContainerElm) {
+ var keyNav;
+
+ dom.setAttrib(tabContainerElm, "role", "tablist");
+
+ var items = tinyMCEPopup.dom.select('li', tabContainerElm);
+ var action = function(id) {
+ mcTabs.displayTab(id, mcTabs.getPanelForTab(id));
+ mcTabs.onChange.dispatch(id);
+ };
+
+ each(items, function(item) {
+ dom.setAttrib(item, 'role', 'tab');
+ dom.bind(item, 'click', function(evt) {
+ action(item.id);
+ });
+ });
+
+ dom.bind(dom.getRoot(), 'keydown', function(evt) {
+ if (evt.keyCode === 9 && evt.ctrlKey && !evt.altKey) { // Tab
+ keyNav.moveFocus(evt.shiftKey ? -1 : 1);
+ tinymce.dom.Event.cancel(evt);
+ }
+ });
+
+ each(dom.select('a', tabContainerElm), function(a) {
+ dom.setAttrib(a, 'tabindex', '-1');
+ });
+
+ keyNav = tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
+ root: tabContainerElm,
+ items: items,
+ onAction: action,
+ actOnFocus: true,
+ enableLeftRight: true,
+ enableUpDown: true
+ }, tinyMCEPopup.dom);
+ });
+}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/tiny_mce_popup.js b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/tiny_mce_popup.js
new file mode 100755
index 00000000..6ed0d5e9
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/tiny_mce_popup.js
@@ -0,0 +1,435 @@
+/**
+ * Popup.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+// Some global instances
+var tinymce = null, tinyMCEPopup, tinyMCE;
+
+/**
+ * TinyMCE popup/dialog helper class. This gives you easy access to the
+ * parent editor instance and a bunch of other things. It's higly recommended
+ * that you load this script into your dialogs.
+ *
+ * @static
+ * @class tinyMCEPopup
+ */
+tinyMCEPopup = {
+ /**
+ * Initializes the popup this will be called automatically.
+ *
+ * @method init
+ */
+ init : function() {
+ var t = this, w, ti, settings;
+
+ // Find window & API
+ w = t.getWin();
+ tinymce = w.tinymce;
+ tinyMCE = w.tinyMCE;
+ t.editor = tinymce.EditorManager.activeEditor;
+ t.params = t.editor.windowManager.params;
+ t.features = t.editor.windowManager.features;
+ settings = t.editor.settings;
+
+ // Setup popup CSS path(s)
+ if (settings.popup_css !== false) {
+ if (settings.popup_css) {
+ settings.popup_css = t.documentBaseURI.toAbsolute(settings.popup_css);
+ } else {
+ settings.popup_css = t.baseURI.toAbsolute("themes/" + settings.theme + "/skins/" + settings.skin + "/dialog.css");
+ }
+ }
+
+ if (settings.popup_css_add) {
+ settings.popup_css += ',' + t.documentBaseURI.toAbsolute(settings.popup_css_add);
+ }
+
+ // Setup local DOM
+ t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document, {ownEvents: true, proxy: tinyMCEPopup._eventProxy});
+ t.dom.bind(window, 'ready', t._onDOMLoaded, t);
+
+ // Enables you to skip loading the default css
+ if (t.features.popup_css !== false)
+ t.dom.loadCSS(t.features.popup_css || t.editor.settings.popup_css);
+
+ // Setup on init listeners
+ t.listeners = [];
+
+ /**
+ * Fires when the popup is initialized.
+ *
+ * @event onInit
+ * @param {tinymce.Editor} editor Editor instance.
+ * @example
+ * // Alerts the selected contents when the dialog is loaded
+ * tinyMCEPopup.onInit.add(function(ed) {
+ * alert(ed.selection.getContent());
+ * });
+ *
+ * // Executes the init method on page load in some object using the SomeObject scope
+ * tinyMCEPopup.onInit.add(SomeObject.init, SomeObject);
+ */
+ t.onInit = {
+ add : function(f, s) {
+ t.listeners.push({func : f, scope : s});
+ }
+ };
+
+ t.isWindow = !t.getWindowArg('mce_inline');
+ t.id = t.getWindowArg('mce_window_id');
+ },
+
+ /**
+ * Returns the reference to the parent window that opened the dialog.
+ *
+ * @method getWin
+ * @return {Window} Reference to the parent window that opened the dialog.
+ */
+ getWin : function() {
+ // Added frameElement check to fix bug: #2817583
+ return (!window.frameElement && window.dialogArguments) || opener || parent || top;
+ },
+
+ /**
+ * Returns a window argument/parameter by name.
+ *
+ * @method getWindowArg
+ * @param {String} n Name of the window argument to retrive.
+ * @param {String} dv Optional default value to return.
+ * @return {String} Argument value or default value if it wasn't found.
+ */
+ getWindowArg : function(n, dv) {
+ var v = this.params[n];
+
+ return tinymce.is(v) ? v : dv;
+ },
+
+ /**
+ * Returns a editor parameter/config option value.
+ *
+ * @method getParam
+ * @param {String} n Name of the editor config option to retrive.
+ * @param {String} dv Optional default value to return.
+ * @return {String} Parameter value or default value if it wasn't found.
+ */
+ getParam : function(n, dv) {
+ return this.editor.getParam(n, dv);
+ },
+
+ /**
+ * Returns a language item by key.
+ *
+ * @method getLang
+ * @param {String} n Language item like mydialog.something.
+ * @param {String} dv Optional default value to return.
+ * @return {String} Language value for the item like "my string" or the default value if it wasn't found.
+ */
+ getLang : function(n, dv) {
+ return this.editor.getLang(n, dv);
+ },
+
+ /**
+ * Executed a command on editor that opened the dialog/popup.
+ *
+ * @method execCommand
+ * @param {String} cmd Command to execute.
+ * @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
+ * @param {Object} val Optional value to pass with the comman like an URL.
+ * @param {Object} a Optional arguments object.
+ */
+ execCommand : function(cmd, ui, val, a) {
+ a = a || {};
+ a.skip_focus = 1;
+
+ this.restoreSelection();
+ return this.editor.execCommand(cmd, ui, val, a);
+ },
+
+ /**
+ * Resizes the dialog to the inner size of the window. This is needed since various browsers
+ * have different border sizes on windows.
+ *
+ * @method resizeToInnerSize
+ */
+ resizeToInnerSize : function() {
+ var t = this;
+
+ // Detach it to workaround a Chrome specific bug
+ // https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
+ setTimeout(function() {
+ var vp = t.dom.getViewPort(window);
+
+ t.editor.windowManager.resizeBy(
+ t.getWindowArg('mce_width') - vp.w,
+ t.getWindowArg('mce_height') - vp.h,
+ t.id || window
+ );
+ }, 10);
+ },
+
+ /**
+ * Will executed the specified string when the page has been loaded. This function
+ * was added for compatibility with the 2.x branch.
+ *
+ * @method executeOnLoad
+ * @param {String} s String to evalutate on init.
+ */
+ executeOnLoad : function(s) {
+ this.onInit.add(function() {
+ eval(s);
+ });
+ },
+
+ /**
+ * Stores the current editor selection for later restoration. This can be useful since some browsers
+ * looses it's selection if a control element is selected/focused inside the dialogs.
+ *
+ * @method storeSelection
+ */
+ storeSelection : function() {
+ this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
+ },
+
+ /**
+ * Restores any stored selection. This can be useful since some browsers
+ * looses it's selection if a control element is selected/focused inside the dialogs.
+ *
+ * @method restoreSelection
+ */
+ restoreSelection : function() {
+ var t = tinyMCEPopup;
+
+ if (!t.isWindow && tinymce.isIE)
+ t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
+ },
+
+ /**
+ * Loads a specific dialog language pack. If you pass in plugin_url as a argument
+ * when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
+ *
+ * @method requireLangPack
+ */
+ requireLangPack : function() {
+ var t = this, u = t.getWindowArg('plugin_url') || t.getWindowArg('theme_url');
+
+ if (u && t.editor.settings.language && t.features.translate_i18n !== false && t.editor.settings.language_load !== false) {
+ u += '/langs/' + t.editor.settings.language + '_dlg.js';
+
+ if (!tinymce.ScriptLoader.isDone(u)) {
+ document.write('<script type="text/javascript" src="' + u + '"></script>');
+ tinymce.ScriptLoader.markDone(u);
+ }
+ }
+ },
+
+ /**
+ * Executes a color picker on the specified element id. When the user
+ * then selects a color it will be set as the value of the specified element.
+ *
+ * @method pickColor
+ * @param {DOMEvent} e DOM event object.
+ * @param {string} element_id Element id to be filled with the color value from the picker.
+ */
+ pickColor : function(e, element_id) {
+ this.execCommand('mceColorPicker', true, {
+ color : document.getElementById(element_id).value,
+ func : function(c) {
+ document.getElementById(element_id).value = c;
+
+ try {
+ document.getElementById(element_id).onchange();
+ } catch (ex) {
+ // Try fire event, ignore errors
+ }
+ }
+ });
+ },
+
+ /**
+ * Opens a filebrowser/imagebrowser this will set the output value from
+ * the browser as a value on the specified element.
+ *
+ * @method openBrowser
+ * @param {string} element_id Id of the element to set value in.
+ * @param {string} type Type of browser to open image/file/flash.
+ * @param {string} option Option name to get the file_broswer_callback function name from.
+ */
+ openBrowser : function(element_id, type, option) {
+ tinyMCEPopup.restoreSelection();
+ this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
+ },
+
+ /**
+ * Creates a confirm dialog. Please don't use the blocking behavior of this
+ * native version use the callback method instead then it can be extended.
+ *
+ * @method confirm
+ * @param {String} t Title for the new confirm dialog.
+ * @param {function} cb Callback function to be executed after the user has selected ok or cancel.
+ * @param {Object} s Optional scope to execute the callback in.
+ */
+ confirm : function(t, cb, s) {
+ this.editor.windowManager.confirm(t, cb, s, window);
+ },
+
+ /**
+ * Creates a alert dialog. Please don't use the blocking behavior of this
+ * native version use the callback method instead then it can be extended.
+ *
+ * @method alert
+ * @param {String} t Title for the new alert dialog.
+ * @param {function} cb Callback function to be executed after the user has selected ok.
+ * @param {Object} s Optional scope to execute the callback in.
+ */
+ alert : function(tx, cb, s) {
+ this.editor.windowManager.alert(tx, cb, s, window);
+ },
+
+ /**
+ * Closes the current window.
+ *
+ * @method close
+ */
+ close : function() {
+ var t = this;
+
+ // To avoid domain relaxing issue in Opera
+ function close() {
+ t.editor.windowManager.close(window);
+ tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
+ };
+
+ if (tinymce.isOpera)
+ t.getWin().setTimeout(close, 0);
+ else
+ close();
+ },
+
+ // Internal functions
+
+ _restoreSelection : function() {
+ var e = window.event.srcElement;
+
+ if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
+ tinyMCEPopup.restoreSelection();
+ },
+
+/* _restoreSelection : function() {
+ var e = window.event.srcElement;
+
+ // If user focus a non text input or textarea
+ if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
+ tinyMCEPopup.restoreSelection();
+ },*/
+
+ _onDOMLoaded : function() {
+ var t = tinyMCEPopup, ti = document.title, bm, h, nv;
+
+ // Translate page
+ if (t.features.translate_i18n !== false) {
+ h = document.body.innerHTML;
+
+ // Replace a=x with a="x" in IE
+ if (tinymce.isIE)
+ h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
+
+ document.dir = t.editor.getParam('directionality','');
+
+ if ((nv = t.editor.translate(h)) && nv != h)
+ document.body.innerHTML = nv;
+
+ if ((nv = t.editor.translate(ti)) && nv != ti)
+ document.title = ti = nv;
+ }
+
+ if (!t.editor.getParam('browser_preferred_colors', false) || !t.isWindow)
+ t.dom.addClass(document.body, 'forceColors');
+
+ document.body.style.display = '';
+
+ // Restore selection in IE when focus is placed on a non textarea or input element of the type text
+ if (tinymce.isIE) {
+ document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
+
+ // Add base target element for it since it would fail with modal dialogs
+ t.dom.add(t.dom.select('head')[0], 'base', {target : '_self'});
+ }
+
+ t.restoreSelection();
+ t.resizeToInnerSize();
+
+ // Set inline title
+ if (!t.isWindow)
+ t.editor.windowManager.setTitle(window, ti);
+ else
+ window.focus();
+
+ if (!tinymce.isIE && !t.isWindow) {
+ t.dom.bind(document, 'focus', function() {
+ t.editor.windowManager.focus(t.id);
+ });
+ }
+
+ // Patch for accessibility
+ tinymce.each(t.dom.select('select'), function(e) {
+ e.onkeydown = tinyMCEPopup._accessHandler;
+ });
+
+ // Call onInit
+ // Init must be called before focus so the selection won't get lost by the focus call
+ tinymce.each(t.listeners, function(o) {
+ o.func.call(o.scope, t.editor);
+ });
+
+ // Move focus to window
+ if (t.getWindowArg('mce_auto_focus', true)) {
+ window.focus();
+
+ // Focus element with mceFocus class
+ tinymce.each(document.forms, function(f) {
+ tinymce.each(f.elements, function(e) {
+ if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
+ e.focus();
+ return false; // Break loop
+ }
+ });
+ });
+ }
+
+ document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
+ },
+
+ _accessHandler : function(e) {
+ e = e || window.event;
+
+ if (e.keyCode == 13 || e.keyCode == 32) {
+ var elm = e.target || e.srcElement;
+
+ if (elm.onchange)
+ elm.onchange();
+
+ return tinymce.dom.Event.cancel(e);
+ }
+ },
+
+ _closeWinKeyHandler : function(e) {
+ e = e || window.event;
+
+ if (e.keyCode == 27)
+ tinyMCEPopup.close();
+ },
+
+ _eventProxy: function(id) {
+ return function(evt) {
+ tinyMCEPopup.dom.events.callNativeHandler(id, evt);
+ };
+ }
+};
+
+tinyMCEPopup.init(); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/validate.js b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/validate.js
new file mode 100755
index 00000000..d13aaa1b
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/compat3x/validate.js
@@ -0,0 +1,252 @@
+/**
+ * validate.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ // String validation:
+
+ if (!Validator.isEmail('myemail'))
+ alert('Invalid email.');
+
+ // Form validation:
+
+ var f = document.forms['myform'];
+
+ if (!Validator.isEmail(f.myemail))
+ alert('Invalid email.');
+*/
+
+var Validator = {
+ isEmail : function(s) {
+ return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
+ },
+
+ isAbsUrl : function(s) {
+ return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
+ },
+
+ isSize : function(s) {
+ return this.test(s, '^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
+ },
+
+ isId : function(s) {
+ return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
+ },
+
+ isEmpty : function(s) {
+ var nl, i;
+
+ if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
+ return true;
+
+ if (s.type == 'checkbox' && !s.checked)
+ return true;
+
+ if (s.type == 'radio') {
+ for (i=0, nl = s.form.elements; i<nl.length; i++) {
+ if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
+ return false;
+ }
+
+ return true;
+ }
+
+ return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
+ },
+
+ isNumber : function(s, d) {
+ return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
+ },
+
+ test : function(s, p) {
+ s = s.nodeType == 1 ? s.value : s;
+
+ return s == '' || new RegExp(p).test(s);
+ }
+};
+
+var AutoValidator = {
+ settings : {
+ id_cls : 'id',
+ int_cls : 'int',
+ url_cls : 'url',
+ number_cls : 'number',
+ email_cls : 'email',
+ size_cls : 'size',
+ required_cls : 'required',
+ invalid_cls : 'invalid',
+ min_cls : 'min',
+ max_cls : 'max'
+ },
+
+ init : function(s) {
+ var n;
+
+ for (n in s)
+ this.settings[n] = s[n];
+ },
+
+ validate : function(f) {
+ var i, nl, s = this.settings, c = 0;
+
+ nl = this.tags(f, 'label');
+ for (i=0; i<nl.length; i++) {
+ this.removeClass(nl[i], s.invalid_cls);
+ nl[i].setAttribute('aria-invalid', false);
+ }
+
+ c += this.validateElms(f, 'input');
+ c += this.validateElms(f, 'select');
+ c += this.validateElms(f, 'textarea');
+
+ return c == 3;
+ },
+
+ invalidate : function(n) {
+ this.mark(n.form, n);
+ },
+
+ getErrorMessages : function(f) {
+ var nl, i, s = this.settings, field, msg, values, messages = [], ed = tinyMCEPopup.editor;
+ nl = this.tags(f, "label");
+ for (i=0; i<nl.length; i++) {
+ if (this.hasClass(nl[i], s.invalid_cls)) {
+ field = document.getElementById(nl[i].getAttribute("for"));
+ values = { field: nl[i].textContent };
+ if (this.hasClass(field, s.min_cls, true)) {
+ message = ed.getLang('invalid_data_min');
+ values.min = this.getNum(field, s.min_cls);
+ } else if (this.hasClass(field, s.number_cls)) {
+ message = ed.getLang('invalid_data_number');
+ } else if (this.hasClass(field, s.size_cls)) {
+ message = ed.getLang('invalid_data_size');
+ } else {
+ message = ed.getLang('invalid_data');
+ }
+
+ message = message.replace(/{\#([^}]+)\}/g, function(a, b) {
+ return values[b] || '{#' + b + '}';
+ });
+ messages.push(message);
+ }
+ }
+ return messages;
+ },
+
+ reset : function(e) {
+ var t = ['label', 'input', 'select', 'textarea'];
+ var i, j, nl, s = this.settings;
+
+ if (e == null)
+ return;
+
+ for (i=0; i<t.length; i++) {
+ nl = this.tags(e.form ? e.form : e, t[i]);
+ for (j=0; j<nl.length; j++) {
+ this.removeClass(nl[j], s.invalid_cls);
+ nl[j].setAttribute('aria-invalid', false);
+ }
+ }
+ },
+
+ validateElms : function(f, e) {
+ var nl, i, n, s = this.settings, st = true, va = Validator, v;
+
+ nl = this.tags(f, e);
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+
+ this.removeClass(n, s.invalid_cls);
+
+ if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.size_cls) && !va.isSize(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.id_cls) && !va.isId(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.min_cls, true)) {
+ v = this.getNum(n, s.min_cls);
+
+ if (isNaN(v) || parseInt(n.value) < parseInt(v))
+ st = this.mark(f, n);
+ }
+
+ if (this.hasClass(n, s.max_cls, true)) {
+ v = this.getNum(n, s.max_cls);
+
+ if (isNaN(v) || parseInt(n.value) > parseInt(v))
+ st = this.mark(f, n);
+ }
+ }
+
+ return st;
+ },
+
+ hasClass : function(n, c, d) {
+ return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
+ },
+
+ getNum : function(n, c) {
+ c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
+ c = c.replace(/[^0-9]/g, '');
+
+ return c;
+ },
+
+ addClass : function(n, c, b) {
+ var o = this.removeClass(n, c);
+ n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
+ },
+
+ removeClass : function(n, c) {
+ c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
+ return n.className = c != ' ' ? c : '';
+ },
+
+ tags : function(f, s) {
+ return f.getElementsByTagName(s);
+ },
+
+ mark : function(f, n) {
+ var s = this.settings;
+
+ this.addClass(n, s.invalid_cls);
+ n.setAttribute('aria-invalid', 'true');
+ this.markLabels(f, n, s.invalid_cls);
+
+ return false;
+ },
+
+ markLabels : function(f, n, ic) {
+ var nl, i;
+
+ nl = this.tags(f, "label");
+ for (i=0; i<nl.length; i++) {
+ if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
+ this.addClass(nl[i], ic);
+ }
+
+ return null;
+ }
+};
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/contextmenu/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/contextmenu/plugin.min.js
new file mode 100755
index 00000000..4aabc706
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/contextmenu/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("contextmenu",function(e){var t;e.on("contextmenu",function(n){var i;if(n.preventDefault(),i=e.settings.contextmenu||"link image inserttable | cell row column deletetable",t)t.show();else{var o=[];tinymce.each(i.split(/[ ,]/),function(t){var n=e.menuItems[t];"|"==t&&(n={text:t}),n&&(n.shortcut="",o.push(n))});for(var a=0;a<o.length;a++)"|"==o[a].text&&(0===a||a==o.length-1)&&o.splice(a,1);t=new tinymce.ui.Menu({items:o,context:"contextmenu"}),t.renderTo(document.body)}var r={x:n.pageX,y:n.pageY};e.inline||(r=tinymce.DOM.getPos(e.getContentAreaContainer()),r.x+=n.clientX,r.y+=n.clientY),t.moveTo(r.x,r.y),e.on("remove",function(){t.remove(),t=null})})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/directionality/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/directionality/plugin.min.js
new file mode 100755
index 00000000..60c7f9d5
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/directionality/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("directionality",function(e){function t(t){var n,i=e.dom,a=e.selection.getSelectedBlocks();a.length&&(n=i.getAttrib(a[0],"dir"),tinymce.each(a,function(e){i.getParent(e.parentNode,"*[dir='"+t+"']",i.getRoot())||(n!=t?i.setAttrib(e,"dir",t):i.setAttrib(e,"dir",null))}),e.nodeChanged())}function n(e){var t=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(n){t.push(n+"[dir="+e+"]")}),t.join(",")}e.addCommand("mceDirectionLTR",function(){t("ltr")}),e.addCommand("mceDirectionRTL",function(){t("rtl")}),e.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),e.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cool.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cool.gif
new file mode 100755
index 00000000..ba90cc36
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cool.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cry.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cry.gif
new file mode 100755
index 00000000..74d897a4
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-cry.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-embarassed.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-embarassed.gif
new file mode 100755
index 00000000..963a96b8
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-embarassed.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-foot-in-mouth.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-foot-in-mouth.gif
new file mode 100755
index 00000000..c7cf1011
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-foot-in-mouth.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-frown.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-frown.gif
new file mode 100755
index 00000000..716f55e1
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-frown.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-innocent.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-innocent.gif
new file mode 100755
index 00000000..334d49e0
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-innocent.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-kiss.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-kiss.gif
new file mode 100755
index 00000000..4efd549e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-kiss.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-laughing.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-laughing.gif
new file mode 100755
index 00000000..82c5b182
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-laughing.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-money-mouth.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-money-mouth.gif
new file mode 100755
index 00000000..ca2451e1
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-money-mouth.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-sealed.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-sealed.gif
new file mode 100755
index 00000000..fe66220c
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-sealed.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-smile.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-smile.gif
new file mode 100755
index 00000000..fd27edfa
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-smile.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-surprised.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-surprised.gif
new file mode 100755
index 00000000..0cc9bb71
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-surprised.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-tongue-out.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-tongue-out.gif
new file mode 100755
index 00000000..2075dc16
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-tongue-out.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-undecided.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-undecided.gif
new file mode 100755
index 00000000..bef7e257
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-undecided.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-wink.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-wink.gif
new file mode 100755
index 00000000..0631c761
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-wink.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-yell.gif b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-yell.gif
new file mode 100755
index 00000000..648e6e87
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/img/smiley-yell.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/plugin.min.js
new file mode 100755
index 00000000..f70e7941
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/emoticons/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("emoticons",function(e,t){function n(){var e;return e='<table role="presentation" class="mce-grid">',tinymce.each(i,function(n){e+="<tr>",tinymce.each(n,function(n){var i=t+"/img/smiley-"+n+".gif";e+='<td><a href="#" data-mce-url="'+i+'" tabindex="-1"><img src="'+i+'" style="width: 18px; height: 18px"></a></td>'}),e+="</tr>"}),e+="</table>"}var i=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];e.addButton("emoticons",{type:"panelbutton",popoverAlign:"bc-tl",panel:{autohide:!0,html:n,onclick:function(t){var n=e.dom.getParent(t.target,"a");n&&(e.insertContent('<img src="'+n.getAttribute("data-mce-url")+'" />'),this.hide())}},tooltip:"Emoticons"})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/example/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/example/plugin.min.js
new file mode 100755
index 00000000..24a64c8e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/example/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("example",function(e){e.addButton("example",{text:"My button",icon:!1,onclick:function(){e.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(t){e.insertContent("Title: "+t.data.title)}})}}),e.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){e.windowManager.open({title:"TinyMCE site",url:"http://www.tinymce.com",width:800,height:600,buttons:[{text:"Close",onclick:"close"}]})}})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/example_dependency/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/example_dependency/plugin.min.js
new file mode 100755
index 00000000..e61bf473
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/example_dependency/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("example_dependency",function(){},["example"]); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/fullpage/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/fullpage/plugin.min.js
new file mode 100755
index 00000000..0f15de46
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/fullpage/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("fullpage",function(e){function t(){var t=n();e.windowManager.open({title:"Document properties",data:t,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(e){i(tinymce.extend(t,e.data))}})}function n(){function t(e,t){var n=e.attr(t);return n||""}var n,i,r=a(),o={};return o.fontface=e.getParam("fullpage_default_fontface",""),o.fontsize=e.getParam("fullpage_default_fontsize",""),n=r.firstChild,7==n.type&&(o.xml_pi=!0,i=/encoding="([^"]+)"/.exec(n.value),i&&(o.docencoding=i[1])),n=r.getAll("#doctype")[0],n&&(o.doctype="<!DOCTYPE"+n.value+">"),n=r.getAll("title")[0],n&&n.firstChild&&(o.title=n.firstChild.value),u(r.getAll("meta"),function(e){var t,n=e.attr("name"),i=e.attr("http-equiv");n?o[n.toLowerCase()]=e.attr("content"):"Content-Type"==i&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")),t&&(o.docencoding=t[1]))}),n=r.getAll("html")[0],n&&(o.langcode=t(n,"lang")||t(n,"xml:lang")),n=r.getAll("link")[0],n&&"stylesheet"==n.attr("rel")&&(o.stylesheet=n.attr("href")),n=r.getAll("body")[0],n&&(o.langdir=t(n,"dir"),o.style=t(n,"style"),o.visited_color=t(n,"vlink"),o.link_color=t(n,"link"),o.active_color=t(n,"alink")),o}function i(t){function n(e,t,n){e.attr(t,n?n:void 0)}function i(e){o.firstChild?o.insert(e,o.firstChild):o.append(e)}var r,o,l,c,m,f=e.dom;r=a(),o=r.getAll("head")[0],o||(c=r.getAll("html")[0],o=new d("head",1),c.firstChild?c.insert(o,c.firstChild,!0):c.append(o)),c=r.firstChild,t.xml_pi?(m='version="1.0"',t.docencoding&&(m+=' encoding="'+t.docencoding+'"'),7!=c.type&&(c=new d("xml",7),r.insert(c,r.firstChild,!0)),c.value=m):c&&7==c.type&&c.remove(),c=r.getAll("#doctype")[0],t.doctype?(c||(c=new d("#doctype",10),t.xml_pi?r.insert(c,r.firstChild):i(c)),c.value=t.doctype.substring(9,t.doctype.length-1)):c&&c.remove(),t.docencoding&&(c=null,u(r.getAll("meta"),function(e){"Content-Type"==e.attr("http-equiv")&&(c=e)}),c||(c=new d("meta",1),c.attr("http-equiv","Content-Type"),c.shortEnded=!0,i(c)),c.attr("content","text/html; charset="+t.docencoding)),c=r.getAll("title")[0],t.title?c||(c=new d("title",1),c.append(new d("#text",3)).value=t.title,i(c)):c&&c.remove(),u("keywords,description,author,copyright,robots".split(","),function(e){var n,a,o=r.getAll("meta"),l=t[e];for(n=0;n<o.length;n++)if(a=o[n],a.attr("name")==e)return l?a.attr("content",l):a.remove(),void 0;l&&(c=new d("meta",1),c.attr("name",e),c.attr("content",l),c.shortEnded=!0,i(c))}),c=r.getAll("link")[0],c&&"stylesheet"==c.attr("rel")?t.stylesheet?c.attr("href",t.stylesheet):c.remove():t.stylesheet&&(c=new d("link",1),c.attr({rel:"stylesheet",text:"text/css",href:t.stylesheet}),c.shortEnded=!0,i(c)),c=r.getAll("body")[0],c&&(n(c,"dir",t.langdir),n(c,"style",t.style),n(c,"vlink",t.visited_color),n(c,"link",t.link_color),n(c,"alink",t.active_color),f.setAttribs(e.getBody(),{style:t.style,dir:t.dir,vLink:t.visited_color,link:t.link_color,aLink:t.active_color})),c=r.getAll("html")[0],c&&(n(c,"lang",t.langcode),n(c,"xml:lang",t.langcode)),o.firstChild||o.remove(),l=new tinymce.html.Serializer({validate:!1,indent:!0,apply_source_formatting:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(r),s=l.substring(0,l.indexOf("</body>"))}function a(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(s)}function r(t){function n(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})}var i,r,l,d,m=t.content,f="",g=e.dom;t.selection||"raw"==t.format&&s||t.source_view&&e.getParam("fullpage_hide_in_source_view")||(m=m.replace(/<(\/?)BODY/gi,"<$1body"),i=m.indexOf("<body"),-1!=i?(i=m.indexOf(">",i),s=n(m.substring(0,i+1)),r=m.indexOf("</body",i),-1==r&&(r=m.length),t.content=m.substring(i+1,r),c=n(m.substring(r))):(s=o(),c="\n</body>\n</html>"),l=a(),u(l.getAll("style"),function(e){e.firstChild&&(f+=e.firstChild.value)}),d=l.getAll("body")[0],d&&g.setAttribs(e.getBody(),{style:d.attr("style")||"",dir:d.attr("dir")||"",vLink:d.attr("vlink")||"",link:d.attr("link")||"",aLink:d.attr("alink")||""}),g.remove("fullpage_styles"),f&&(g.add(e.getDoc().getElementsByTagName("head")[0],"style",{id:"fullpage_styles"},f),d=g.get("fullpage_styles"),d.styleSheet&&(d.styleSheet.cssText=f)))}function o(){var t,n="",i="";return e.getParam("fullpage_default_xml_pi")&&(n+='<?xml version="1.0" encoding="'+e.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'),n+=e.getParam("fullpage_default_doctype","<!DOCTYPE html>"),n+="\n<html>\n<head>\n",(t=e.getParam("fullpage_default_title"))&&(n+="<title>"+t+"</title>\n"),(t=e.getParam("fullpage_default_encoding"))&&(n+='<meta http-equiv="Content-Type" content="text/html; charset='+t+'" />\n'),(t=e.getParam("fullpage_default_font_family"))&&(i+="font-family: "+t+";"),(t=e.getParam("fullpage_default_font_size"))&&(i+="font-size: "+t+";"),(t=e.getParam("fullpage_default_text_color"))&&(i+="color: "+t+";"),n+="</head>\n<body"+(i?' style="'+i+'"':"")+">\n"}function l(t){t.selection||t.source_view&&e.getParam("fullpage_hide_in_source_view")||(t.content=tinymce.trim(s)+"\n"+tinymce.trim(t.content)+"\n"+tinymce.trim(c))}var s,c,u=tinymce.each,d=tinymce.html.Node;e.addCommand("mceFullPageProperties",t),e.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),e.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),e.on("BeforeSetContent",r),e.on("GetContent",l)}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/fullscreen/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/fullscreen/plugin.min.js
new file mode 100755
index 00000000..92a3b703
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/fullscreen/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("fullscreen",function(e){function t(){var e,t,n=window,i=document,a=i.body;return a.offsetWidth&&(e=a.offsetWidth,t=a.offsetHeight),n.innerWidth&&n.innerHeight&&(e=n.innerWidth,t=n.innerHeight),{w:e,h:t}}function n(){function n(){l.setStyle(c,"height",t().h-(s.clientHeight-c.clientHeight))}var s,c,u,d=document.body,m=document.documentElement;o=!o,s=e.getContainer().firstChild,c=e.getContentAreaContainer().firstChild,u=c.style,o?(i=u.width,a=u.height,u.width=u.height="100%",l.addClass(d,"mce-fullscreen"),l.addClass(m,"mce-fullscreen"),l.addClass(s,"mce-fullscreen"),l.bind(window,"resize",n),n(),r=n):(u.width=i,u.height=a,l.removeClass(d,"mce-fullscreen"),l.removeClass(m,"mce-fullscreen"),l.removeClass(s,"mce-fullscreen"),l.unbind(window,"resize",r)),e.fire("FullscreenStateChanged",{state:o})}var i,a,r,o=!1,l=tinymce.DOM;if(!e.settings.inline)return e.on("init",function(){e.addShortcut("Ctrl+Alt+F","",n)}),e.on("remove",function(){r&&l.unbind(window,"resize",r)}),e.addCommand("mceFullScreen",n),e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Alt+F",selectable:!0,onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})},context:"view"}),e.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Alt+F",onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}}),{isFullscreen:function(){return o}}}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/hr/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/hr/plugin.min.js
new file mode 100755
index 00000000..ca36c927
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/hr/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("hr",function(e){e.addCommand("InsertHorizontalRule",function(){e.execCommand("mceInsertContent",!1,"<hr />")}),e.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),e.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/image/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/image/plugin.min.js
new file mode 100755
index 00000000..417dc1bd
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/image/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("image",function(e){function t(e,t){function n(e,n){i.parentNode.removeChild(i),t({width:e,height:n})}var i=document.createElement("img");i.onload=function(){n(i.clientWidth,i.clientHeight)},i.onerror=function(){n()},i.src=e;var a=i.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left=0,a.width=a.height="auto",document.body.appendChild(i)}function n(t){return function(){var n=e.settings.image_list;"string"==typeof n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(n)}}function i(n){function i(){var e=[{text:"None",value:""}];return tinymce.each(n,function(t){e.push({text:t.text||t.title,value:t.value||t.url,menu:t.menu})}),e}function a(e){var t,n,i,a;t=c.find("#width")[0],n=c.find("#height")[0],i=t.value(),a=n.value(),c.find("#constrain")[0].checked()&&d&&m&&i&&a&&(e.control==t?(a=Math.round(i/d*a),n.value(a)):(i=Math.round(a/m*i),t.value(i))),d=i,m=a}function o(){function t(t){function i(){t.onload=t.onerror=null,e.selection.select(t),e.nodeChanged()}t.onload=function(){n.width||n.height||h.setAttribs(t,{width:t.clientWidth,height:t.clientHeight}),i()},t.onerror=i}var n=c.toJSON();""===n.width&&(n.width=null),""===n.height&&(n.height=null),""===n.style&&(n.style=null),n={src:n.src,alt:n.alt,width:n.width,height:n.height,style:n.style},e.undoManager.transact(function(){return n.src?(g?h.setAttribs(g,n):(n.id="__mcenew",e.selection.setContent(h.createHTML("img",n)),g=h.get("__mcenew"),h.setAttrib(g,"id",null)),t(g),void 0):(g&&(h.remove(g),e.nodeChanged()),void 0)})}function r(e){return e&&(e=e.replace(/px$/,"")),e}function s(){t(this.value(),function(e){e.width&&e.height&&(d=e.width,m=e.height,c.find("#width").value(d),c.find("#height").value(m))})}function l(){function e(e){return e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e}var t=c.toJSON(),n=h.parseStyle(t.style);h.setAttrib(g,"style",""),delete n.margin,n["margin-top"]=n["margin-bottom"]=e(t.vspace),n["margin-left"]=n["margin-right"]=e(t.hspace),n["border-width"]=e(t.border),c.find("#style").value(h.serializeStyle(h.parseStyle(h.serializeStyle(n))))}var c,u,d,m,f,h=e.dom,g=e.selection.getNode();d=h.getAttrib(g,"width"),m=h.getAttrib(g,"height"),"IMG"!=g.nodeName||g.getAttribute("data-mce-object")?g=null:u={src:h.getAttrib(g,"src"),alt:h.getAttrib(g,"alt"),width:d,height:m},n&&(f={name:"target",type:"listbox",label:"Image list",values:i(),onselect:function(e){var t=c.find("#alt");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),c.find("#src").value(e.control.value())}});var p=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:s},f,{name:"alt",type:"textbox",label:"Image description"},{type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:3,size:3,onchange:a},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:3,size:3,onchange:a},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}];e.settings.image_advtab?(g&&(u.hspace=r(g.style.marginLeft||g.style.marginRight),u.vspace=r(g.style.marginTop||g.style.marginBottom),u.border=r(g.style.borderWidth),u.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(g,"style")))),c=e.windowManager.open({title:"Insert/edit image",data:u,bodyType:"tabpanel",body:[{title:"General",type:"form",items:p},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox"},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:l},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:o})):c=e.windowManager.open({title:"Edit image",data:u,body:p,onSubmit:o})}e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:n(i),stateSelector:"img:not([data-mce-object])"}),e.addMenuItem("image",{icon:"image",text:"Insert image",onclick:n(i),context:"insert",prependToContext:!0})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/importcss/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/importcss/plugin.min.js
new file mode 100755
index 00000000..0a2b235b
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/importcss/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("importcss",function(e){function t(t){function n(e,t){(t||o[e.href])&&(i(e.imports,function(e){n(e,!0)}),i(e.cssRules||e.rules,function(e){e.styleSheet?n(e.styleSheet,!0):e.selectorText&&i(e.selectorText.split(","),function(e){a.push(tinymce.trim(e))})}))}var a=[],o={};i(e.contentCSS,function(e){o[e]=!0});try{i(t.styleSheets,n)}catch(r){}return a}function n(t){var n,i=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(i){var a=i[1],o=i[2].substr(1).split(".").join(" ");return i[1]?(n={title:t},e.schema.getTextBlockElements()[a]?n.block=a:e.schema.getBlockElements()[a]?n.selector=a:n.inline=a):i[2]&&(n={inline:"span",title:t.substr(1),classes:o}),e.settings.importcss_merge_classes!==!1?n.classes=o:n.attributes={"class":o},n}}var i=tinymce.each;e.settings.style_formats||e.on("renderFormatsMenu",function(a){var o=e.settings.importcss_selector_converter||n,r={};e.settings.importcss_append||a.control.items().remove(),i(t(e.getDoc()),function(t){if(-1===t.indexOf(".mce-")&&!r[t]){var n=o(t);if(n){var i=n.name||tinymce.DOM.uniqueId();e.formatter.register(i,n),a.control.append(tinymce.extend({},a.control.settings.itemDefaults,{text:n.title,format:i}))}r[t]=!0}})})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/insertdatetime/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/insertdatetime/plugin.min.js
new file mode 100755
index 00000000..08e28337
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/insertdatetime/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("insertdatetime",function(e){function t(t,n){function i(e,t){if(e=""+e,e.length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}return n=n||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+n.getFullYear()),t=t.replace("%y",""+n.getYear()),t=t.replace("%m",i(n.getMonth()+1,2)),t=t.replace("%d",i(n.getDate(),2)),t=t.replace("%H",""+i(n.getHours(),2)),t=t.replace("%M",""+i(n.getMinutes(),2)),t=t.replace("%S",""+i(n.getSeconds(),2)),t=t.replace("%I",""+((n.getHours()+11)%12+1)),t=t.replace("%p",""+(n.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(s[n.getMonth()])),t=t.replace("%b",""+e.translate(o[n.getMonth()])),t=t.replace("%A",""+e.translate(r[n.getDay()])),t=t.replace("%a",""+e.translate(a[n.getDay()])),t=t.replace("%%","%")}function n(n){var i=t(n);if(e.settings.insertdatetime_element){var a;a=/%[HMSIp]/.test(n)?t("%Y-%m-%dT%H:%M"):t("%Y-%m-%d"),i='<time datetime="'+a+'">'+i+"</time>";var r=e.dom.getParent(e.selection.getStart(),"time");if(r)return e.dom.setOuterHTML(r,i),void 0}e.insertContent(i)}var i,a="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),r="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),o="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),s="January February March April May June July August September October November December".split(" "),l=[];e.addCommand("mceInsertDate",function(){n(e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),e.addCommand("mceInsertTime",function(){n(e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S")))}),e.addButton("inserttime",{type:"splitbutton",title:"Insert time",onclick:function(){n(i||"%H:%M:%S")},menu:l}),tinymce.each(e.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(e){l.push({text:t(e),onclick:function(){i=e,n(e)}})}),e.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:l,context:"insert"})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/layer/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/layer/plugin.min.js
new file mode 100755
index 00000000..eb1ad4b6
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/layer/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("layer",function(e){function t(e){do if(e.className&&-1!=e.className.indexOf("mceItemLayer"))return e;while(e=e.parentNode)}function n(t){var n=e.dom;tinymce.each(n.select("div,p",t),function(e){/^(absolute|relative|fixed)$/i.test(e.style.position)&&(e.hasVisual?n.addClass(e,"mceItemVisualAid"):n.removeClass(e,"mceItemVisualAid"),n.addClass(e,"mceItemLayer"))})}function i(n){var i,o,a=[],r=t(e.selection.getNode()),l=-1,s=-1;for(o=[],tinymce.walk(e.getBody(),function(e){1==e.nodeType&&/^(absolute|relative|static)$/i.test(e.style.position)&&o.push(e)},"childNodes"),i=0;i<o.length;i++)a[i]=o[i].style.zIndex?parseInt(o[i].style.zIndex,10):0,0>l&&o[i]==r&&(l=i);if(0>n){for(i=0;i<a.length;i++)if(a[i]<a[l]){s=i;break}s>-1?(o[l].style.zIndex=a[s],o[s].style.zIndex=a[l]):a[l]>0&&(o[l].style.zIndex=a[l]-1)}else{for(i=0;i<a.length;i++)if(a[i]>a[l]){s=i;break}s>-1?(o[l].style.zIndex=a[s],o[s].style.zIndex=a[l]):o[l].style.zIndex=a[l]+1}e.execCommand("mceRepaint")}function o(){var t=e.dom,n=t.getPos(t.getParent(e.selection.getNode(),"*")),i=e.getBody();e.dom.add(i,"div",{style:{position:"absolute",left:n.x,top:n.y>20?n.y:20,width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},e.selection.getContent()||e.getLang("layer.content")),tinymce.Env.ie&&t.setHTML(i,i.innerHTML)}function a(){var n=t(e.selection.getNode());n||(n=e.dom.getParent(e.selection.getNode(),"DIV,P,IMG")),n&&("absolute"==n.style.position.toLowerCase()?(e.dom.setStyles(n,{position:"",left:"",top:"",width:"",height:""}),e.dom.removeClass(n,"mceItemVisualAid"),e.dom.removeClass(n,"mceItemLayer")):(n.style.left||(n.style.left="20px"),n.style.top||(n.style.top="20px"),n.style.width||(n.style.width=n.width?n.width+"px":"100px"),n.style.height||(n.style.height=n.height?n.height+"px":"100px"),n.style.position="absolute",e.dom.setAttrib(n,"data-mce-style",""),e.addVisual(e.getBody())),e.execCommand("mceRepaint"),e.nodeChanged())}e.addCommand("mceInsertLayer",o),e.addCommand("mceMoveForward",function(){i(1)}),e.addCommand("mceMoveBackward",function(){i(-1)}),e.addCommand("mceMakeAbsolute",function(){a()}),e.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),e.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),e.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),e.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),e.on("init",function(){tinymce.Env.ie&&e.getDoc().execCommand("2D-Position",!1,!0)}),e.on("mouseup",function(n){var i=t(n.target);i&&e.dom.setAttrib(i,"data-mce-style","")}),e.on("mousedown",function(n){var i,o=n.target,a=e.getDoc();tinymce.Env.gecko&&(t(o)?"on"!==a.designMode&&(a.designMode="on",o=a.body,i=o.parentNode,i.removeChild(o),i.appendChild(o)):"on"==a.designMode&&(a.designMode="off"))}),e.on("NodeChange",n)}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/legacyoutput/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/legacyoutput/plugin.min.js
new file mode 100755
index 00000000..4f6f7c1a
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/legacyoutput/plugin.min.js
@@ -0,0 +1 @@
+!function(e){e.on("AddEditor",function(e){e.editor.settings.inline_styles=!1}),e.PluginManager.add("legacyoutput",function(t){t.on("init",function(){var n="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",i=e.explode(t.settings.font_size_style_values),o=t.schema;t.formatter.register({alignleft:{selector:n,attributes:{align:"left"}},aligncenter:{selector:n,attributes:{align:"center"}},alignright:{selector:n,attributes:{align:"right"}},alignjustify:{selector:n,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(t){return e.inArray(i,t.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),e.each("b,i,u,strike".split(","),function(e){o.addValidElements(e+"[*]")}),o.getElementRule("font")||o.addValidElements("font[face|size|color|style]"),e.each(n.split(","),function(e){var t=o.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})})})}(tinymce); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/link/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/link/plugin.min.js
new file mode 100755
index 00000000..9cd7616d
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/link/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("link",function(e){function t(t){return function(){var n=e.settings.link_list;"string"==typeof n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(n)}}function n(t){function n(e){var t=d.find("#text");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),d.find("#href").value(e.control.value())}function i(){var e=[{text:"None",value:""}];return tinymce.each(t,function(t){e.push({text:t.text||t.title,value:t.value||t.url,menu:t.menu})}),e}function a(t){var n=[{text:"None",value:""}];return tinymce.each(e.settings.rel_list,function(e){n.push({text:e.text||e.title,value:e.value,selected:t===e.value})}),n}function o(t){var n=[{text:"None",value:""}];return e.settings.target_list||n.push({text:"New window",value:"_blank"}),tinymce.each(e.settings.target_list,function(e){n.push({text:e.text||e.title,value:e.value,selected:t===e.value})}),n}function r(t){var i=[];return tinymce.each(e.dom.select("a:not([href])"),function(e){var n=e.name||e.id;n&&i.push({text:n,value:"#"+n,selected:-1!=t.indexOf("#"+n)})}),i.length?(i.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:i,onselect:n}):void 0}function s(){c||0!==g.text.length||this.parent().parent().find("#text")[0].value(this.value())}var l,u,c,d,m,f,h,g={},p=e.selection,v=e.dom;l=p.getNode(),u=v.getParent(l,"a[href]"),g.text=c=u?u.innerText||u.textContent:p.getContent({format:"text"}),g.href=u?v.getAttrib(u,"href"):"",g.target=u?v.getAttrib(u,"target"):"",g.rel=u?v.getAttrib(u,"rel"):"","IMG"==l.nodeName&&(g.text=c=" "),t&&(m={type:"listbox",label:"Link list",values:i(),onselect:n}),e.settings.target_list!==!1&&(h={name:"target",type:"listbox",label:"Target",values:o(g.target)}),e.settings.rel_list&&(f={name:"rel",type:"listbox",label:"Rel",values:a(g.rel)}),d=e.windowManager.open({title:"Insert link",data:g,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:s,onkeyup:s},{name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){g.text=this.value()}},r(g.href),m,f,h],onSubmit:function(t){function n(t,n){window.setTimeout(function(){e.windowManager.confirm(t,n)},0)}function i(){a.text!=c?u?(e.focus(),u.innerHTML=a.text,v.setAttribs(u,{href:o,target:a.target?a.target:null,rel:a.rel?a.rel:null}),p.select(u)):e.insertContent(v.createHTML("a",{href:o,target:a.target?a.target:null,rel:a.rel?a.rel:null},a.text)):e.execCommand("mceInsertLink",!1,{href:o,target:a.target,rel:a.rel?a.rel:null})}var a=t.data,o=a.href;return o?o.indexOf("@")>0&&-1==o.indexOf("//")&&-1==o.indexOf("mailto:")?(n("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(e){e&&(o="mailto:"+o),i()}),void 0):/^\s*www\./i.test(o)?(n("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(e){e&&(o="http://"+o),i()}),void 0):(i(),void 0):(e.execCommand("unlink"),void 0)}})}e.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Ctrl+K",onclick:t(n),stateSelector:"a[href]"}),e.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"}),e.addShortcut("Ctrl+K","",t(n)),this.showDialog=n,e.addMenuItem("link",{icon:"link",text:"Insert link",shortcut:"Ctrl+K",onclick:t(n),stateSelector:"a[href]",context:"insert",prependToContext:!0})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/lists/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/lists/plugin.min.js
new file mode 100755
index 00000000..811c46dd
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/lists/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("lists",function(e){var t=this;e.on("init",function(){function n(e){function t(t){var i,r,a;r=e[t?"startContainer":"endContainer"],a=e[t?"startOffset":"endOffset"],1==r.nodeType&&(i=b.create("span",{"data-mce-type":"bookmark"}),r.hasChildNodes()?(a=Math.min(a,r.childNodes.length-1),r.insertBefore(i,r.childNodes[a])):r.appendChild(i),r=i,a=0),n[t?"startContainer":"endContainer"]=r,n[t?"startOffset":"endOffset"]=a}var n={};return t(!0),e.collapsed||t(),n}function i(t){function n(n){function i(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t==e)return n;(1!=t.nodeType||"bookmark"!=t.getAttribute("data-mce-type"))&&n++,t=t.nextSibling}return-1}var r,a,o;if(r=o=t[n?"startContainer":"endContainer"],a=t[n?"startOffset":"endOffset"],r){if(1==r.nodeType){if(r.parentNode==e.getBody()){var s,l=e.settings.forced_root_block;l?(s=b.create(l),(!tinymce.Env.ie||tinymce.Env.ie>10)&&s.appendChild(b.create("br",{"data-mce-bogus":"true"})),r.parentNode.insertBefore(s,r),r=s,a=0):(s=b.create("br"),r.parentNode.insertBefore(s,r),r=r.parentNode,a=i(s))}else n?(a=i(r),r=r.parentNode):(a=i(r),r=r.parentNode);b.remove(o)}t[n?"startContainer":"endContainer"]=r,t[n?"startOffset":"endOffset"]=a}}n(!0),n();var i=b.createRng();i.setStart(t.startContainer,t.startOffset),t.endContainer&&i.setEnd(t.endContainer,t.endOffset),C.setRng(i)}function r(e){return e&&/^(OL|UL)$/.test(e.nodeName)}function a(e){return e.parentNode.firstChild==e}function o(e){return e.parentNode.lastChild==e}function s(t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]}function l(t,n){var i,r;if(e.settings.forced_root_block&&(n=n||e.settings.forced_root_block),r=n?b.create(n):b.createFragment(),t)for(;i=t.firstChild;)r.appendChild(i);return e.settings.forced_root_block||r.appendChild(b.create("br")),r.hasChildNodes()||tinymce.Env.ie&&!(tinymce.Env.ie>10)||(r.innerHTML='<br data-mce-bogus="1">'),r}function c(){return tinymce.grep(C.getSelectedBlocks(),function(e){return"LI"==e.nodeName})}function d(){return tinymce.grep(C.getSelectedBlocks(),s)}function u(e,t,n){var i,r,a=b.select('span[data-mce-type="bookmark"]',e);n=n||l(t),i=b.createRng(),i.setStartAfter(t),i.setEndAfter(e),r=i.extractContents(),b.isEmpty(r)||b.insertAfter(r,e),b.isEmpty(n)||b.insertAfter(n,e),b.isEmpty(t.parentNode)&&(tinymce.each(a,function(e){t.parentNode.parentNode.insertBefore(e,t.parentNode)}),b.remove(t.parentNode)),b.remove(t)}function m(e){var t,n;if(t=e.nextSibling,t&&r(t)&&t.nodeName==e.nodeName){for(;n=t.firstChild;)e.appendChild(n);b.remove(t)}if(t=e.previousSibling,t&&r(t)&&t.nodeName==e.nodeName){for(;n=t.firstChild;)e.insertBefore(n,e.firstChild);b.remove(t)}}function f(e){tinymce.each(tinymce.grep(b.select("ol,ul",e)),function(e){var t,n=e.parentNode;"LI"==n.nodeName&&n.firstChild==e&&(t=n.previousSibling,t&&"LI"==t.nodeName&&(t.appendChild(e),b.isEmpty(n)&&b.remove(n))),r(n)&&(t=n.previousSibling,t&&"LI"==t.nodeName&&t.appendChild(e))})}function p(){var e,t=n(C.getRng(!0));return tinymce.each(c(),function(t){var n,i;return n=t.previousSibling,n&&"UL"==n.nodeName?(n.appendChild(t),void 0):n&&"LI"==n.nodeName&&r(n.lastChild)?(n.lastChild.appendChild(t),void 0):(n=t.nextSibling,n&&"UL"==n.nodeName?(n.insertBefore(t,n.firstChild),void 0):(n&&"LI"==n.nodeName&&r(t.lastChild)||(n=t.previousSibling,n&&"LI"==n.nodeName&&(i=b.create(t.parentNode.nodeName),n.appendChild(i),i.appendChild(t)),e=!0),void 0))}),i(t),e}function h(){function e(e){b.isEmpty(e)&&b.remove(e)}var t,s=n(C.getRng(!0));return tinymce.each(c(),function(n){var i,s=n.parentNode,c=s.parentNode;if(a(n)&&o(n))if("LI"==c.nodeName)b.insertAfter(n,c),e(c);else{if(!r(c))return;b.remove(s,!0)}else if(a(n))if("LI"==c.nodeName)b.insertAfter(n,c),i=b.create("LI"),i.appendChild(s),b.insertAfter(i,n),e(c);else{if(!r(c))return;c.insertBefore(n,s)}else if(o(n))if("LI"==c.nodeName)b.insertAfter(n,c);else{if(!r(c))return;b.insertAfter(n,s)}else{if("LI"==c.nodeName)s=c,i=l(n,"LI");else{if(!r(c))return;i=l(n,"LI")}u(s,n,i),f(s.parentNode)}t=!0}),i(s),t}function g(t){function a(){function t(t){var n,i,r=e.getBody();for(n=o[t?"startContainer":"endContainer"],i=o[t?"startOffset":"endOffset"],1==n.nodeType&&(n=n.childNodes[Math.min(i,n.childNodes.length-1)]||n);n.parentNode!=r;){if(s(n))return n;if(/^(TD|TH)$/.test(n.parentNode.nodeName))return n;n=n.parentNode}return n}function n(e,t){var n,i=[];if(!s(e)){for(;e&&(n=e[t?"previousSibling":"nextSibling"],!b.isBlock(n)&&n);)e=n;for(;e;)i.push(e),e=e[t?"nextSibling":"previousSibling"]}return i}var i,r,a=t(!0),l=t();r=n(a,!0),a!=l&&(r=r.concat(n(l).reverse())),tinymce.each(r,function(e){if(!b.isBlock(e)||"BR"==e.nodeName){if(!i||"BR"==e.nodeName){if("BR"==e.nodeName&&(!e.nextSibling||b.isBlock(e.nextSibling)&&"BR"!=e.nextSibling.nodeName))return b.remove(e),!1;i=b.create("p"),c.push(i),e.parentNode.insertBefore(i,e)}return"BR"!=e.nodeName?i.appendChild(e):b.remove(e),e==l?!1:void 0}})}var o=C.getRng(!0),l=n(o),c=d();a(),tinymce.each(c,function(e){var n,i;i=e.previousSibling,i&&r(i)&&i.nodeName==t?(n=i,e=b.rename(e,"LI"),i.appendChild(e)):(n=b.create(t),e.parentNode.insertBefore(n,e),n.appendChild(e),e=b.rename(e,"LI")),m(n)}),i(l)}function v(){var e=n(C.getRng(!0));tinymce.each(c(),function(e){var t,n;for(t=e;t;t=t.parentNode)r(t)&&(n=t);u(n,e)}),i(e)}function y(e){var t=b.getParent(C.getStart(),"OL,UL");if(t)if(t.nodeName==e)v(e);else{var r=n(C.getRng(!0));m(b.rename(t,e)),i(r)}else g(e)}var b=e.dom,C=e.selection;t.backspaceDelete=function(e){function t(e,t){var n=e.startContainer,i=e.startOffset;if(3==n.nodeType&&(t?i<n.data.length:i>0))return n;for(var r=new tinymce.dom.TreeWalker(e.startContainer);n=r[t?"next":"prev"]();)if(3==n.nodeType&&n.data.length>0)return n}function a(e,t){var n,i,a=e.parentNode;for(r(t.lastChild)&&(i=t.lastChild),n=t.lastChild,n&&"BR"==n.nodeName&&e.hasChildNodes()&&b.remove(n);n=e.firstChild;)t.appendChild(n);i&&t.appendChild(i),b.remove(e),b.isEmpty(a)&&b.remove(a)}if(C.isCollapsed()){var o=b.getParent(C.getStart(),"LI");if(o){var s=C.getRng(!0),l=b.getParent(t(s,e),"LI");if(l&&l!=o){var c=n(s);return e?a(l,o):a(o,l),i(c),!0}if(!l&&!e&&v(o.parentNode.nodeName))return!0}}},e.addCommand("Indent",function(){return p()?void 0:!0}),e.addCommand("Outdent",function(){return h()?void 0:!0}),e.addCommand("InsertUnorderedList",function(){y("UL")}),e.addCommand("InsertOrderedList",function(){y("OL")})}),e.on("keydown",function(e){e.keyCode==tinymce.util.VK.BACKSPACE?t.backspaceDelete()&&e.preventDefault():e.keyCode==tinymce.util.VK.DELETE&&t.backspaceDelete(!0)&&e.preventDefault()})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/media/moxieplayer.swf b/framework/Web/Javascripts/source/tinymce-405/plugins/media/moxieplayer.swf
new file mode 100755
index 00000000..19c771be
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/media/moxieplayer.swf
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/media/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/media/plugin.min.js
new file mode 100755
index 00000000..ce8cd0ee
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/media/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("media",function(e,t){function n(e){return-1!=e.indexOf(".mp3")?"audio/mpeg":-1!=e.indexOf(".wav")?"audio/wav":-1!=e.indexOf(".mp4")?"video/mp4":-1!=e.indexOf(".webm")?"video/webm":-1!=e.indexOf(".ogg")?"video/ogg":-1!=e.indexOf(".swf")?"application/x-shockwave-flash":""}function i(){function t(e){var t,r,a,o;t=n.find("#width")[0],r=n.find("#height")[0],a=t.value(),o=r.value(),n.find("#constrain")[0].checked()&&i&&c&&a&&o&&(e.control==t?(o=Math.round(a/i*o),r.value(o)):(a=Math.round(o/c*a),t.value(a))),i=a,c=o}var n,i,c,l;l=s(e.selection.getNode()),i=l.width,c=l.height,n=e.windowManager.open({title:"Insert/edit video",data:l,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){this.fromJSON(o(this.next().find("#embed").value()))},items:[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source"},{name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"},{name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"},{type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:3,size:3,onchange:t},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:3,size:3,onchange:t},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}]},{title:"Embed",type:"panel",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(a(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:"},{type:"textbox",flex:1,name:"embed",value:r(),multiline:!0,label:"Source"}]}],onSubmit:function(){e.insertContent(a(this.toJSON()))}})}function r(){var t=e.selection.getNode();return t.getAttribute("data-mce-object")?e.selection.getContent():void 0}function a(i){var r="";return i.source1||(tinymce.extend(i,o(i.embed)),i.source1)?(i.source1=e.convertURL(i.source1,"source"),i.source2=e.convertURL(i.source2,"source"),i.source1mime=n(i.source1),i.source2mime=n(i.source2),i.poster=e.convertURL(i.poster,"poster"),i.flashPlayerUrl=e.convertURL(t+"/moxieplayer.swf","movie"),i.embed?r=c(i.embed,i,!0):(tinymce.each(l,function(e){var t,n,r;if(t=e.regex.exec(i.source1)){for(r=e.url,n=0;t[n];n++)r=r.replace("$"+n,function(){return t[n]});i.source1=r,i.type=e.type,i.width=e.w,i.height=e.h}}),i.width=i.width||300,i.height=i.height||150,tinymce.each(i,function(t,n){i[n]=e.dom.encode(t)}),"iframe"==i.type?r+='<iframe src="'+i.source1+'" width="'+i.width+'" height="'+i.height+'"></iframe>':"application/x-shockwave-flash"==i.source1mime?(r+='<object data="'+i.source1+'" width="'+i.width+'" height="'+i.height+'" type="application/x-shockwave-flash">',i.poster&&(r+='<img src="'+i.poster+'" width="'+i.width+'" height="'+i.height+'" />'),r+="</object>"):-1!=i.source1mime.indexOf("audio")?e.settings.audio_template_callback?r=e.settings.audio_template_callback(i):r+='<audio controls="controls" src="'+i.source1+'">'+(i.source2?'\n<source src="'+i.source2+'"'+(i.source2mime?' type="'+i.source2mime+'"':"")+" />\n":"")+"</audio>":r=e.settings.video_template_callback?e.settings.video_template_callback(i):'<video width="'+i.width+'" height="'+i.height+'"'+(i.poster?' poster="'+i.poster+'"':"")+' controls="controls">\n'+'<source src="'+i.source1+'"'+(i.source1mime?' type="'+i.source1mime+'"':"")+" />\n"+(i.source2?'<source src="'+i.source2+'"'+(i.source2mime?' type="'+i.source2mime+'"':"")+" />\n":"")+"</video>"),r):""}function o(e){var t={};return new tinymce.html.SaxParser({validate:!1,special:"script,noscript",start:function(e,n){t.source1||"param"!=e||(t.source1=n.map.movie),("iframe"==e||"object"==e||"embed"==e||"video"==e||"audio"==e)&&(t=tinymce.extend(n.map,t)),"source"==e&&(t.source1?t.source2||(t.source2=n.map.src):t.source1=n.map.src),"img"!=e||t.poster||(t.poster=n.map.src)}}).parse(e),t.source1=t.source1||t.src||t.data,t.source2=t.source2||"",t.poster=t.poster||"",t}function s(t){return t.getAttribute("data-mce-object")?o(e.serializer.serialize(t,{selection:!0})):{}}function c(e,t,n){function i(e,t){var n,i,r,a;for(n in t)if(r=""+t[n],e.map[n])for(i=e.length;i--;)a=e[i],a.name==n&&(r?(e.map[n]=r,a.value=r):(delete e.map[n],e.splice(i,1)));else r&&(e.push({name:n,value:r}),e.map[n]=r)}var r,a=new tinymce.html.Writer,o=0;return new tinymce.html.SaxParser({validate:!1,special:"script,noscript",comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(e,s,c){switch(e){case"video":case"object":case"img":case"iframe":i(s,{width:t.width,height:t.height})}if(n)switch(e){case"video":i(s,{poster:t.poster,src:""}),t.source2&&i(s,{src:""});break;case"iframe":i(s,{src:t.source1});break;case"source":if(o++,2>=o&&(i(s,{src:t["source"+o],type:t["source"+o+"mime"]}),!t["source"+o]))return;break;case"img":if(!t.poster)return;r=!0}a.start(e,s,c)},end:function(e){if("video"==e&&n)for(var s=1;2>=s;s++)if(t["source"+s]){var c=[];c.map={},s>o&&(i(c,{src:t["source"+s],type:t["source"+s+"mime"]}),a.start("source",c,!0))}if(t.poster&&"object"==e&&n&&!r){var l=[];l.map={},i(l,{src:t.poster,width:t.width,height:t.height}),a.start("img",l,!0)}a.end(e)}},new tinymce.html.Schema({})).parse(e),a.getContent()}var l=[{regex:/youtu\.be\/([a-z1-9.-_]+)/,type:"iframe",w:425,h:350,url:"http://www.youtube.com/embed/$1"},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"http://www.youtube.com/embed/$2"},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"http://player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc"},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'http://maps.google.com/maps/ms?msid=$2&output=embed"'}];e.on("ResolveName",function(e){var t;1==e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}),e.on("preInit",function(){var t=e.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.schema.addValidElements("object[id|style|width|height|classid|codebase|*],embed[id|style|width|height|type|src|*],video[*],audio[*]");var n=e.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){n[e]={}}),e.parser.addNodeFilter("iframe,video,audio,object,embed",function(t,n){for(var i,r,a,o,s,c,l,d=t.length;d--;){for(r=t[d],a=new tinymce.html.Node("img",1),a.shortEnded=!0,c=r.attributes,i=c.length;i--;)o=c[i].name,s=c[i].value,"width"!==o&&"height"!==o&&"style"!==o&&(("data"==o||"src"==o)&&(s=e.convertURL(s,o)),a.attr("data-mce-p-"+o,s));l=r.firstChild&&r.firstChild.value,l&&(a.attr("data-mce-html",escape(l)),a.firstChild=null),a.attr({width:r.attr("width")||"300",height:r.attr("height")||("audio"==n?"30":"150"),style:r.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":n,"class":"mce-object mce-object-"+n}),r.replace(a)}}),e.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var n,i,r,a,o,s,c=e.length;c--;){for(n=e[c],i=new tinymce.html.Node(n.attr(t),1),"audio"!=n.attr(t)&&i.attr({width:n.attr("width"),height:n.attr("height")}),i.attr({style:n.attr("style")}),a=n.attributes,r=a.length;r--;){var l=a[r].name;0===l.indexOf("data-mce-p-")&&i.attr(l.substr(11),a[r].value)}o=n.attr("data-mce-html"),o&&(s=new tinymce.html.Node("#text",3),s.raw=!0,s.value=unescape(o),i.append(s)),n.replace(i)}})}),e.on("ObjectSelected",function(e){"audio"==e.target.getAttribute("data-mce-object")&&e.preventDefault()}),e.on("objectResized",function(e){var t,n=e.target;n.getAttribute("data-mce-object")&&(t=n.getAttribute("data-mce-html"),t&&(t=unescape(t),n.setAttribute("data-mce-html",escape(c(t,{width:e.width,height:e.height})))))}),e.addButton("media",{tooltip:"Insert/edit video",onclick:i,stateSelector:"img[data-mce-object=video]"}),e.addMenuItem("media",{icon:"media",text:"Insert video",onclick:i,context:"insert",prependToContext:!0})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/nonbreaking/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/nonbreaking/plugin.min.js
new file mode 100755
index 00000000..866339c7
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/nonbreaking/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("nonbreaking",function(e){var t=e.getParam("nonbreaking_force_tab");if(e.addCommand("mceNonBreaking",function(){e.insertContent(e.plugins.visualchars&&e.plugins.visualchars.state?'<span data-mce-bogus="1" class="mce-nbsp">&nbsp;</span>':"&nbsp;")}),e.addButton("nonbreaking",{title:"Insert nonbreaking space",cmd:"mceNonBreaking"}),e.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),t){var n=+t>1?+t:3;e.on("keydown",function(t){if(9==t.keyCode){if(t.shiftKey)return;t.preventDefault();for(var i=0;n>i;i++)e.execCommand("mceNonBreaking")}})}}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/noneditable/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/noneditable/plugin.min.js
new file mode 100755
index 00000000..dd15d59e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/noneditable/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("noneditable",function(e){function t(){function t(e){var t;if(1===e.nodeType){if(t=e.getAttribute(s),t&&"inherit"!==t)return t;if(t=e.contentEditable,"inherit"!==t)return t}return null}function n(e){for(var n;e;){if(n=t(e))return"false"===n?e:null;e=e.parentNode}}function i(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function o(e){var t;if(e)for(t=new r(e,e),e=t.current();e;e=t.next())if(3===e.nodeType)return e}function a(n,i){var o,a;return"false"===t(n)&&m.isBlock(n)?(f.select(n),void 0):(a=m.createRng(),"true"===t(n)&&(n.firstChild||n.appendChild(e.getDoc().createTextNode(" ")),n=n.firstChild,i=!0),o=m.create("span",{id:g,"data-mce-bogus":!0},p),i?n.parentNode.insertBefore(o,n):m.insertAfter(o,n),a.setStart(o.firstChild,1),a.collapse(!0),f.setRng(a),o)}function l(e){var t,n,a,r;if(e)t=f.getRng(!0),t.setStartBefore(e),t.setEndBefore(e),n=o(e),n&&n.nodeValue.charAt(0)==p&&(n=n.deleteData(0,1)),m.remove(e,!0),f.setRng(t);else for(a=i(f.getStart());(e=m.get(g))&&e!==r;)a!==e&&(n=o(e),n&&n.nodeValue.charAt(0)==p&&(n=n.deleteData(0,1)),m.remove(e,!0)),r=e}function d(){function e(e,n){var i,o,a,l,s;if(i=c.startContainer,o=c.startOffset,3==i.nodeType){if(s=i.nodeValue.length,o>0&&s>o||(n?o==s:0===o))return}else{if(!(o<i.childNodes.length))return n?null:e;var d=!n&&o>0?o-1:o;i=i.childNodes[d],i.hasChildNodes()&&(i=i.firstChild)}for(a=new r(i,e);l=a[n?"prev":"next"]();){if(3===l.nodeType&&l.nodeValue.length>0)return;if("true"===t(l))return l}return e}var i,o,s,c,d;l(),s=f.isCollapsed(),i=n(f.getStart()),o=n(f.getEnd()),(i||o)&&(c=f.getRng(!0),s?(i=i||o,(d=e(i,!0))?a(d,!0):(d=e(i,!1))?a(d,!1):f.select(i)):(c=f.getRng(!0),i&&c.setStartBefore(i),o&&c.setEndAfter(o),f.setRng(c)))}function u(o){function a(e,t){for(;e=e[t?"previousSibling":"nextSibling"];)if(3!==e.nodeType||e.nodeValue.length>0)return e}function s(e,t){f.select(e),f.collapse(t)}function u(o){function a(e){for(var t=s;t;){if(t===e)return;t=t.parentNode}m.remove(e),d()}function r(){var i,r,l=e.schema.getNonEmptyElements();for(r=new tinymce.dom.TreeWalker(s,e.getBody());(i=o?r.prev():r.next())&&!l[i.nodeName.toLowerCase()]&&!(3===i.nodeType&&tinymce.trim(i.nodeValue).length>0);)if("false"===t(i))return a(i),!0;return n(i)?!0:!1}var l,s,c,u;if(f.isCollapsed()){if(l=f.getRng(!0),s=l.startContainer,c=l.startOffset,s=i(s)||s,u=n(s))return a(u),!1;if(3==s.nodeType&&(o?c>0:c<s.nodeValue.length))return!0;if(1==s.nodeType&&(s=s.childNodes[c]||s),r())return!1}return!0}var g,p,h,y,v=o.keyCode;if(h=f.getStart(),y=f.getEnd(),g=n(h)||n(y),g&&(112>v||v>124)&&v!=c.DELETE&&v!=c.BACKSPACE){if((tinymce.isMac?o.metaKey:o.ctrlKey)&&(67==v||88==v||86==v))return;if(o.preventDefault(),v==c.LEFT||v==c.RIGHT){var b=v==c.LEFT;if(e.dom.isBlock(g)){var x=b?g.previousSibling:g.nextSibling,w=new r(x,x),C=b?w.prev():w.next();s(C,!b)}else s(g,b)}}else if(v==c.LEFT||v==c.RIGHT||v==c.BACKSPACE||v==c.DELETE){if(p=i(h)){if(v==c.LEFT||v==c.BACKSPACE)if(g=a(p,!0),g&&"false"===t(g)){if(o.preventDefault(),v!=c.LEFT)return m.remove(g),void 0;s(g,!0)}else l(p);if(v==c.RIGHT||v==c.DELETE)if(g=a(p),g&&"false"===t(g)){if(o.preventDefault(),v!=c.RIGHT)return m.remove(g),void 0;s(g,!1)}else l(p)}if((v==c.BACKSPACE||v==c.DELETE)&&!u(v==c.BACKSPACE))return o.preventDefault(),!1}}var m=e.dom,f=e.selection,g="mce_noneditablecaret",p="";e.on("mousedown",function(n){var i=e.selection.getNode();"false"===t(i)&&i==n.target&&d()}),e.on("mouseup keyup",d),e.on("keydown",u)}function n(t){var n=a.length,i=t.content,r=tinymce.trim(o);if("raw"!=t.format){for(;n--;)i=i.replace(a[n],function(t){var n=arguments,o=n[n.length-2];return o>0&&'"'==i.charAt(o-1)?t:'<span class="'+r+'" data-mce-content="'+e.dom.encode(n[0])+'">'+e.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"});t.content=i}}var i,o,a,r=tinymce.dom.TreeWalker,l="contenteditable",s="data-mce-"+l,c=tinymce.util.VK;i=" "+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",o=" "+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+" ",a=e.getParam("noneditable_regexp"),a&&!a.length&&(a=[a]),e.on("PreInit",function(){t(),a&&e.on("BeforeSetContent",n),e.parser.addAttributeFilter("class",function(e){for(var t,n,a=e.length;a--;)n=e[a],t=" "+n.attr("class")+" ",-1!==t.indexOf(i)?n.attr(s,"true"):-1!==t.indexOf(o)&&n.attr(s,"false")}),e.serializer.addAttributeFilter(s,function(e){for(var t,n=e.length;n--;)t=e[n],a&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):(t.attr(l,null),t.attr(s,null))}),e.parser.addAttributeFilter(l,function(e){for(var t,n=e.length;n--;)t=e[n],t.attr(s,t.attr(l)),t.attr(l,null)})})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/pagebreak/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/pagebreak/plugin.min.js
new file mode 100755
index 00000000..8f535fa1
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/pagebreak/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("pagebreak",function(e){var t,n="mce-pagebreak",i=e.getParam("pagebreak_separator","<!-- pagebreak -->"),a='<img src="'+tinymce.Env.transparentSrc+'" class="'+n+'" data-mce-resize="false" />';t=new RegExp(i.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),e.addCommand("mcePageBreak",function(){e.execCommand("mceInsertContent",0,a)}),e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(t){"IMG"==t.target.nodeName&&e.dom.hasClass(t.target,n)&&(t.name="pagebreak")}),e.on("click",function(t){t=t.target,"IMG"===t.nodeName&&e.dom.hasClass(t,n)&&e.selection.select(t)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(t,a)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(e){for(var t,n,a=e.length;a--;)t=e[a],n=t.attr("class"),n&&-1!==n.indexOf("mce-pagebreak")&&(t.type=3,t.value=i,t.raw=!0)})})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/paste/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/paste/plugin.min.js
new file mode 100755
index 00000000..68851b2e
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/paste/plugin.min.js
@@ -0,0 +1 @@
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var i=e,o=n[r],a=o.split(/[.\/]/),l=0;l<a.length-1;++l)i[a[l]]===t&&(i[a[l]]={}),i=i[a[l]];i[a[a.length-1]]=s[o]}}var s={},l="tinymce/pasteplugin/Clipboard",c="tinymce/Env",u="tinymce/util/Tools",d="tinymce/util/VK",f="tinymce/pasteplugin/WordFilter",p="tinymce/html/DomParser",m="tinymce/html/Schema",h="tinymce/html/Serializer",g="tinymce/html/Node",v="tinymce/pasteplugin/Quirks",y="tinymce/pasteplugin/Plugin",b="tinymce/PluginManager";r(l,[c,u,d],function(e,t,n){function r(){return!e.gecko&&("ClipboardEvent"in window||e.webkit&&"FocusEvent"in window)}return function(i){function o(){return(new Date).getTime()}function a(e){return n.metaKeyPressed(e)&&86==e.keyCode||e.shiftKey&&45==e.keyCode}function s(e){return e.innerText||e.textContent}function l(){return o()-h<100||"text"==m.pasteFormat}function c(e,n){return t.each(n,function(t){e=t.constructor==RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}function u(t){var n=i.fire("PastePreProcess",{content:t});t=n.content,i.settings.paste_data_images||(t=t.replace(/<img src=\"data:image[^>]+>/g,"")),(i.settings.paste_remove_styles||i.settings.paste_remove_styles_if_webkit!==!1&&e.webkit)&&(t=t.replace(/ style=\"[^\"]+\"/g,"")),n.isDefaultPrevented()||i.insertContent(t)}function d(e){e=i.dom.encode(e).replace(/\r\n/g,"\n");var t=i.dom.getParent(i.selection.getStart(),i.dom.isBlock);e=t&&/^(PRE|DIV)$/.test(t.nodeName)||!i.settings.forced_root_block?c(e,[[/\n/g,"<br>"]]):c(e,[[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]]);var n=i.fire("PastePreProcess",{content:e});n.isDefaultPrevented()||i.insertContent(n.content)}function f(){var e=i.dom.getViewPort().y,t=i.dom.add(i.getBody(),"div",{contentEditable:!1,"data-mce-bogus":"1",style:"position: absolute; top: "+e+"px; left: 0; width: 1px; height: 1px; overflow: hidden"},'<div contentEditable="true" data-mce-bogus="1">X</div>');return i.dom.bind(t,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),t}function p(e){i.dom.unbind(e),i.dom.remove(e)}var m=this,h;if(i.on("keydown",function(e){n.metaKeyPressed(e)&&e.shiftKey&&86==e.keyCode&&(h=o())}),r())i.on("paste",function(e){function t(e,t){for(var r=0;r<n.types.length;r++)if(n.types[r]==e)return t(n.getData(e)),!0}var n=e.clipboardData;n&&(e.preventDefault(),l()?t("text/plain",d)||t("text/html",u):t("text/html",u)||t("text/plain",d))});else{if(e.ie){var g=0;i.on("keydown",function(e){if(a(e)&&!e.isDefaultPrevented()){e.stopImmediatePropagation();var t=f();g=o(),i.dom.bind(t,"paste",function(){setTimeout(function(){i.selection.setRng(n),p(t),l()?d(s(t.firstChild)):u(t.firstChild.innerHTML)},0)});var n=i.selection.getRng();t.firstChild.focus(),t.firstChild.innerText=""}}),i.on("init",function(){var e=i.dom;i.dom.bind(i.getBody(),"paste",function(t){if(o()-g>100){var n,r=f();t.preventDefault(),e.bind(r,"paste",function(e){e.stopPropagation(),n=!0});var a=i.selection.getRng(),c=e.doc.body.createTextRange();if(c.moveToElementText(r.firstChild),c.execCommand("Paste"),p(r),!n)return i.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."),void 0;i.selection.setRng(a),l()?d(s(r.firstChild)):u(r.firstChild.innerHTML)}})})}else i.on("init",function(){i.dom.bind(i.getBody(),"paste",function(e){e.preventDefault(),i.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")})}),i.on("keydown",function(e){if(a(e)&&!e.isDefaultPrevented()){e.stopImmediatePropagation();var t=f(),n=i.selection.getRng();i.selection.select(t,!0),i.dom.bind(t,"paste",function(e){e.stopPropagation(),setTimeout(function(){p(t),i.lastRng=n,i.selection.setRng(n);var e=t.firstChild;e.lastChild&&"BR"==e.lastChild.nodeName&&e.removeChild(e.lastChild),l()?d(s(e)):u(e.innerHTML)},0)})}});i.settings.paste_data_images||i.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&t.files.length>0&&e.preventDefault()})}i.paste_block_drop&&i.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),this.paste=u,this.pasteText=d}}),r(f,[u,p,m,h,g],function(e,t,n,r,i){return function(o){var a=e.each;o.on("PastePreProcess",function(s){function l(e){a(e,function(e){d=e.constructor==RegExp?d.replace(e,""):d.replace(e[0],e[1])})}function c(e){function t(e,t,a,s){var l=e._listLevel||o;l!=o&&(o>l?n&&(n=n.parent.parent):(r=n,n=null)),n&&n.name==a?n.append(e):(r=r||n,n=new i(a,1),s>1&&n.attr("start",""+s),e.wrap(n)),e.name="li",t.value="";var c=t.next;c&&3==c.type&&(c.value=c.value.replace(/^\u00a0+/,"")),l>o&&r&&r.lastChild.append(n),o=l}for(var n,r,o=1,a=e.getAll("p"),s=0;s<a.length;s++)if(e=a[s],"p"==e.name&&e.firstChild){for(var l="",c=e.firstChild;c&&!(l=c.value);)c=c.firstChild;if(/^\s*[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*$/.test(l)){t(e,c,"ul");continue}if(/^\s*\w+\./.test(l)){var u=/([0-9])\./.exec(l),d=1;u&&(d=parseInt(u[1],10)),t(e,c,"ol",d);continue}n=null}}function u(t,n){if("p"===t.name){var r=/mso-list:\w+ \w+([0-9]+)/.exec(n);r&&(t._listLevel=parseInt(r[1],10))}if(o.getParam("paste_retain_style_properties","none")){var i="";if(e.each(o.dom.parseStyle(n),function(e,t){switch(t){case"horiz-align":return t="text-align",void 0;case"vert-align":return t="vertical-align",void 0;case"font-color":case"mso-foreground":return t="color",void 0;case"mso-background":case"mso-highlight":t="background"}("all"==f||p&&p[t])&&(i+=t+":"+e+";")}),i)return i}return null}var d=s.content,f,p;if(f=o.settings.paste_retain_style_properties,f&&(p=e.makeMap(f)),o.settings.paste_enable_default_filters!==!1&&/class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(s.content)){s.wordContent=!0,l([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return t.length>0?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var m=new n({valid_elements:"@[style],-strong/b,-em/i,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-table,-tr,-td[colspan|rowspan],-th,-thead,-tfoot,-tbody,-a[!href],sub,sup,strike"}),h=new t({},m);h.addAttributeFilter("style",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("style",u(n,n.attr("style"))),"span"!=n.name||n.attributes.length||n.unwrap()});var g=h.parse(d);c(g),s.content=new r({},m).serialize(g)}})}}),r(v,[c,u],function(e,t){return function(n){function r(e){n.on("PastePreProcess",function(t){t.content=e(t.content)})}function i(e,n){return t.each(n,function(t){e=t.constructor==RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}function o(e){return e=i(e,[/^[\s\S]*<!--StartFragment-->|<!--EndFragment-->[\s\S]*$/g,[/<span class="Apple-converted-space">\u00a0<\/span>/g,"\xa0"],/<br>$/])}function a(e){if(!s){var r=[];t.each(n.schema.getBlockElements(),function(e,t){r.push(t)}),s=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+r.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g")}return e=i(e,[[s,"$1"]]),e=i(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}var s;e.webkit&&r(o),e.ie&&r(a)}}),r(y,[b,l,f,v],function(e,t,n,r){var i;e.add("paste",function(e){function o(){"text"==s.pasteFormat?(this.active(!1),s.pasteFormat="html"):(s.pasteFormat="text",this.active(!0),i||(e.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),i=!0))}var a=this,s;a.clipboard=s=new t(e),a.quirks=new r(e),a.wordFilter=new n(e),e.settings.paste_as_text&&(a.clipboard.pasteFormat="text"),e.addCommand("mceInsertClipboardContent",function(e,t){t.content&&a.clipboard.paste(t.content),t.text&&a.clipboard.pasteText(t.text)}),e.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:o,active:"text"==a.clipboard.pasteFormat}),e.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:s.pasteFormat,onclick:o})})}),a([l,f,v,y])}(this); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/preview/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/preview/plugin.min.js
new file mode 100755
index 00000000..b8430c64
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/preview/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("preview",function(e){var t=e.settings;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"></iframe>',buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var n,i=this.getEl("body").firstChild.contentWindow.document,a="";tinymce.each(e.contentCSS,function(t){a+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});var r=t.body_id||"tinymce";-1!=r.indexOf("=")&&(r=e.getParam("body_id","","hash"),r=r[e.id]||r);var o=t.body_class||"";-1!=o.indexOf("=")&&(o=e.getParam("body_class","","hash"),o=o[e.id]||""),n="<!DOCTYPE html><html><head>"+a+"</head>"+'<body id="'+r+'" class="mce-content-body '+o+'">'+e.getContent()+"</body>"+"</html>",i.open(),i.write(n),i.close()}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/print/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/print/plugin.min.js
new file mode 100755
index 00000000..abc37b5f
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/print/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("print",function(t){t.addCommand("mcePrint",function(){t.getWin().print()}),t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addShortcut("Ctrl+P","","mcePrint"),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Ctrl+P",context:"file"})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/save/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/save/plugin.min.js
new file mode 100755
index 00000000..bd50cec4
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/save/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("save",function(e){function t(){var t,n;return t=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty()?(tinymce.triggerSave(),(n=e.getParam("save_onsavecallback"))?(e.execCallback("save_onsavecallback",e)&&(e.startContent=tinymce.trim(e.getContent({format:"raw"})),e.nodeChanged()),void 0):(t?(e.isNotDirty=!0,(!t.onsubmit||t.onsubmit())&&("function"==typeof t.submit?t.submit():e.windowManager.alert("Error: Form submit field collision.")),e.nodeChanged()):e.windowManager.alert("Error: No form element found."),void 0)):void 0}function n(){var t,n=tinymce.trim(e.startContent);return(t=e.getParam("save_oncancelcallback"))?(e.execCallback("save_oncancelcallback",e),void 0):(e.setContent(n),e.undoManager.clear(),e.nodeChanged(),void 0)}function i(){var t=this;e.on("nodeChange",function(){t.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",t),e.addCommand("mceCancel",n),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:i}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:i}),e.addShortcut("ctrl+s","","mceSave")}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/searchreplace/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/searchreplace/plugin.min.js
new file mode 100755
index 00000000..b9c4fccf
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/searchreplace/plugin.min.js
@@ -0,0 +1 @@
+!function(){function e(e,t,n,i,a){function r(e,t){if(t=t||0,!e[0])throw"findAndReplaceDOMText cannot handle zero-length matches";var n=e.index;if(t>0){var i=e[t];if(!i)throw"Invalid capture group";n+=e[0].indexOf(i),e[0]=i}return[n,n+e[0].length,[e[0]]]}function o(e){var t;if(3===e.nodeType)return e.data;if(f[e.nodeName])return"";if(t="",(m[e.nodeName]||h[e.nodeName])&&(t+="\n"),e=e.firstChild)do t+=o(e);while(e=e.nextSibling);return t}function c(e,t,n){var i,a,r,o,c=[],s=0,d=e,l=t.shift(),u=0;e:for(;;){if((m[d.nodeName]||h[d.nodeName])&&s++,3===d.nodeType&&(!a&&d.length+s>=l[1]?(a=d,o=l[1]-s):i&&c.push(d),!i&&d.length+s>l[0]&&(i=d,r=l[0]-s),s+=d.length),i&&a){if(d=n({startNode:i,startNodeIndex:r,endNode:a,endNodeIndex:o,innerNodes:c,match:l[2],matchIndex:u}),s-=a.length-o,i=null,a=null,c=[],l=t.shift(),u++,!l)break}else{if(!f[d.nodeName]&&d.firstChild){d=d.firstChild;continue}if(d.nextSibling){d=d.nextSibling;continue}}for(;;){if(d.nextSibling){d=d.nextSibling;break}if(d.parentNode===e)break e;d=d.parentNode}}}function s(e){var t;if("function"!=typeof e){var n=e.nodeType?e:u.createElement(e);t=function(e,t){var i=n.cloneNode(!1);return i.setAttribute("data-mce-index",t),e&&i.appendChild(u.createTextNode(e)),i}}else t=e;return function(e){var n,i,a,r=e.startNode,o=e.endNode,c=e.matchIndex;if(r===o){var s=r;a=s.parentNode,e.startNodeIndex>0&&(n=u.createTextNode(s.data.substring(0,e.startNodeIndex)),a.insertBefore(n,s));var d=t(e.match[0],c);return a.insertBefore(d,s),e.endNodeIndex<s.length&&(i=u.createTextNode(s.data.substring(e.endNodeIndex)),a.insertBefore(i,s)),s.parentNode.removeChild(s),d}n=u.createTextNode(r.data.substring(0,e.startNodeIndex)),i=u.createTextNode(o.data.substring(e.endNodeIndex));for(var l=t(r.data.substring(e.startNodeIndex),c),m=[],f=0,h=e.innerNodes.length;h>f;++f){var p=e.innerNodes[f],g=t(p.data,c);p.parentNode.replaceChild(g,p),m.push(g)}var v=t(o.data.substring(0,e.endNodeIndex),c);return a=r.parentNode,a.insertBefore(n,r),a.insertBefore(l,r),a.removeChild(r),a=o.parentNode,a.insertBefore(v,o),a.insertBefore(i,o),a.removeChild(o),v}}var d,l,u,m,f,h,p=[],g=0;if(u=t.ownerDocument,m=a.getBlockElements(),f=a.getWhiteSpaceElements(),h=a.getShortEndedElements(),l=o(t)){if(e.global)for(;d=e.exec(l);)p.push(r(d,i));else d=l.match(e),p.push(r(d,i));return p.length&&(g=p.length,c(t,p,s(n))),g}}function t(t){function n(){var e=tinymce.ui.Factory.create({type:"window",layout:"flex",pack:"center",align:"center",onClose:function(){t.focus(),o=!1,c.unmarkAllMatches()},buttons:[{text:"Find",onclick:function(){e.find("form")[0].submit()}},{text:"Replace",disabled:!0,onclick:function(){c.replace(e.find("#replace").value())||e.statusbar.items().slice(1).disabled(!0)}},{text:"Replace all",disabled:!0,onclick:function(){c.replaceAll(e.find("#replace").value()),e.statusbar.items().slice(1).disabled(!0)}},{type:"spacer",flex:1},{text:"Prev",disabled:!0,onclick:function(){c.prev()}},{text:"Next",disabled:!0,onclick:function(){c.next()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,onsubmit:function(t){var n,i,a,r,o;return t.preventDefault(),a=e.find("#case").checked(),o=e.find("#words").checked(),r=e.find("#find").value(),r.length?(r=r.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),r=o?"\\b"+r+"\\b":r,i=new RegExp(r,a?"g":"gi"),n=c.markAllMatches(i),n?c.first():tinymce.ui.MessageBox.alert("Could not find the specified string."),e.statusbar.items().slice(1).disabled(0===n),void 0):(c.unmarkAllMatches(),e.statusbar.items().slice(1).disabled(!0),void 0)},items:[{type:"textbox",name:"find",size:40,label:"Find",value:t.selection.getNode().src},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}}).renderTo().reflow();o=!0}function i(e){var t=e.parentNode;t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function a(e,n){function i(){var i,o;for(i=n?t.getBody()[e?"firstChild":"lastChild"]:c[e?"endContainer":"startContainer"],o=new tinymce.dom.TreeWalker(i,t.getBody());i=o.current();){if(1==i.nodeType&&"SPAN"==i.nodeName&&null!==i.getAttribute("data-mce-index"))for(s=i.getAttribute("data-mce-index"),a=i.firstChild;i=o.current();){if(1==i.nodeType&&"SPAN"==i.nodeName&&null!==i.getAttribute("data-mce-index")){if(i.getAttribute("data-mce-index")!==s)return;r=i.firstChild}o[e?"next":"prev"]()}o[e?"next":"prev"]()}}var a,r,o=t.selection,c=o.getRng(!0),s=-1;return e=e!==!1,i(),a&&r&&(t.focus(),e?(c.setStart(a,0),c.setEnd(r,r.length)):(c.setStart(r,0),c.setEnd(a,a.length)),o.scrollIntoView(a.parentNode),o.setRng(c)),s}function r(e){e.parentNode.removeChild(e)}var o,c=this,s=-1;c.init=function(e){e.addMenuItem("searchreplace",{text:"Find and replace",shortcut:"Ctrl+F",onclick:n,separator:"before",context:"edit"}),e.addButton("searchreplace",{tooltip:"Find and replace",shortcut:"Ctrl+F",onclick:n}),e.addCommand("SearchReplace",n),e.shortcuts.add("Ctrl+F","",n)},c.markAllMatches=function(n){var i,a;return a=t.dom.create("span",{"class":"mce-match-marker","data-mce-bogus":1}),i=t.getBody(),c.unmarkAllMatches(i),e(n,i,a,!1,t.schema)},c.first=function(){return s=a(!0,!0),-1!==s},c.next=function(){return s=a(!0),-1!==s},c.prev=function(){return s=a(!1),-1!==s},c.replace=function(e,n,o){var c,d,l,u,m,f;if(-1===s&&(s=a(n)),f=a(n),l=t.getBody(),d=tinymce.toArray(l.getElementsByTagName("span")),d.length)for(c=0;c<d.length;c++){var h=d[c].getAttribute("data-mce-index");if(null!==h&&h.length&&(u=m=d[c].getAttribute("data-mce-index"),o||u===s))for(e.length?(d[c].firstChild.nodeValue=e,i(d[c])):r(d[c]);d[++c];)if(u=d[c].getAttribute("data-mce-index"),null!==h&&h.length){if(u!==m){c--;break}r(d[c])}}return-1==f&&(f=a(n,!0)),s=f,o&&t.selection.setCursorLocation(t.getBody(),0),t.undoManager.add(),-1!==s},c.replaceAll=function(e){c.replace(e,!0,!0)},c.unmarkAllMatches=function(){var e,n,a;for(a=t.getBody(),n=a.getElementsByTagName("span"),e=n.length;e--;)a=n[e],a.getAttribute("data-mce-index")&&i(a)},t.on("beforeaddundo keydown",function(e){return o?(e.preventDefault(),!1):void 0})}tinymce.PluginManager.add("searchreplace",t)}(); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/spellchecker/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/spellchecker/plugin.min.js
new file mode 100755
index 00000000..9cbf0315
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/spellchecker/plugin.min.js
@@ -0,0 +1 @@
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],o=0;o<e.length;++o){if(n=s[e[o]]||i(e[o]),!n)throw"module definition dependecy not found: "+e[o];r.push(n)}t.apply(null,r)}function r(e,r,o){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(o===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=o.apply(null,arguments)})}function o(e){return!!s[e]}function i(t){for(var n=e,r=t.split(/[.\/]/),o=0;o<r.length;++o){if(!n[r[o]])return;n=n[r[o]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var o=e,i=n[r],a=i.split(/[.\/]/),l=0;l<a.length-1;++l)o[a[l]]===t&&(o[a[l]]={}),o=o[a[l]];o[a[a.length-1]]=s[i]}}var s={},l="tinymce/spellcheckerplugin/DomTextMatcher",c="tinymce/spellcheckerplugin/Plugin",d="tinymce/PluginManager",u="tinymce/util/Tools",f="tinymce/ui/Menu",p="tinymce/dom/DOMUtils",m="tinymce/util/JSONRequest",h="tinymce/util/URI";r(l,[],function(){return function(e,t,n){function r(e){if(!e[0])throw"findAndReplaceDOMText cannot handle zero-length matches";var t=e.index;return[t,t+e[0].length,[e[0]]]}function o(e){var t;if(3===e.nodeType)return e.data;if(g[e.nodeName])return"";if(t="",(h[e.nodeName]||v[e.nodeName])&&(t+="\n"),e=e.firstChild)do t+=o(e);while(e=e.nextSibling);return t}function i(e,t,n){var r,o,i,a,s=[],l=0,c=e,d=t.shift(),u=0;e:for(;;){if((h[c.nodeName]||v[c.nodeName])&&l++,3===c.nodeType&&(!o&&c.length+l>=d[1]?(o=c,a=d[1]-l):r&&s.push(c),!r&&c.length+l>d[0]&&(r=c,i=d[0]-l),l+=c.length),r&&o){if(c=n({startNode:r,startNodeIndex:i,endNode:o,endNodeIndex:a,innerNodes:s,match:d[2],matchIndex:u}),l-=o.length-a,r=null,o=null,s=[],d=t.shift(),u++,!d)break}else{if(!g[c.nodeName]&&c.firstChild){c=c.firstChild;continue}if(c.nextSibling){c=c.nextSibling;continue}}for(;;){if(c.nextSibling){c=c.nextSibling;break}if(c.parentNode===e)break e;c=c.parentNode}}}function a(e){var t;if("function"!=typeof e){var n=e.nodeType?e:m.createElement(e);t=function(e,t){var r=n.cloneNode(!1);return r.setAttribute("data-mce-index",t),e&&r.appendChild(m.createTextNode(e)),r}}else t=e;return function r(e){var n,r,o,i=e.startNode,a=e.endNode,s=e.matchIndex;if(i===a){var l=i;o=l.parentNode,e.startNodeIndex>0&&(n=m.createTextNode(l.data.substring(0,e.startNodeIndex)),o.insertBefore(n,l));var c=t(e.match[0],s);return o.insertBefore(c,l),e.endNodeIndex<l.length&&(r=m.createTextNode(l.data.substring(e.endNodeIndex)),o.insertBefore(r,l)),l.parentNode.removeChild(l),c}n=m.createTextNode(i.data.substring(0,e.startNodeIndex)),r=m.createTextNode(a.data.substring(e.endNodeIndex));for(var d=t(i.data.substring(e.startNodeIndex),s),u=[],f=0,p=e.innerNodes.length;p>f;++f){var h=e.innerNodes[f],g=t(h.data,s);h.parentNode.replaceChild(g,h),u.push(g)}var v=t(a.data.substring(0,e.endNodeIndex),s);return o=i.parentNode,o.insertBefore(n,i),o.insertBefore(d,i),o.removeChild(i),o=a.parentNode,o.insertBefore(v,a),o.insertBefore(r,a),o.removeChild(a),v}}function s(e){var t=[];return l(function(n,r){e(n,r)&&t.push(n)}),u=t,this}function l(e){for(var t=0,n=u.length;n>t&&e(u[t],t)!==!1;t++);return this}function c(e){return u.length&&(p=u.length,i(t,u,a(e))),this}var d,u=[],f,p=0,m,h,g,v;if(m=t.ownerDocument,h=n.getBlockElements(),g=n.getWhiteSpaceElements(),v=n.getShortEndedElements(),f=o(t),f&&e.global)for(;d=e.exec(f);)u.push(r(d));return{text:f,count:p,matches:u,each:l,filter:s,mark:c}}}),r(c,[l,d,u,f,p,m,h],function(e,t,n,r,o,i,a){t.add("spellchecker",function(t,s){function l(e){for(var t in e)return!1;return!0}function c(e,i){var a=[],s=g[i];n.each(s,function(e){a.push({text:e,onclick:function(){t.insertContent(e),u()}})}),a.push.apply(a,[{text:"-"},{text:"Ignore",onclick:function(){p(e,i)}},{text:"Ignore all",onclick:function(){p(e,i,!0)}},{text:"Finish",onclick:m}]),y=new r({items:a,context:"contextmenu",onautohide:function(e){-1!=e.target.className.indexOf("spellchecker")&&e.preventDefault()},onhide:function(){y.remove(),y=null}}),y.renderTo(document.body);var l=o.DOM.getPos(t.getContentAreaContainer()),c=t.dom.getPos(e);l.x+=c.x,l.y+=c.y,y.moveTo(l.x,l.y+e.offsetHeight)}function d(){function n(e){return t.setProgressState(!1),l(e)?(t.windowManager.alert("No misspellings found"),v=!1,void 0):(g=e,o.filter(function(t){return!!e[t[2][0]]}).mark(t.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1})),o=null,t.fire("SpellcheckStart"),void 0)}function r(e,n,r){i.sendRPC({url:new a(s).toAbsolute(b.spellchecker_rpc_url),method:e,params:{lang:b.spellchecker_language||"en",words:n},success:function(e){r(e)},error:function(e,n){e="JSON Parse error."==e?"Non JSON response:"+n.responseText:"Error: "+e,t.windowManager.alert(e),t.setProgressState(!1),o=null,v=!1}})}var o,c=[],d={};if(v)return m(),void 0;v=!0;var u=t.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e]+',"g");o=new e(u,t.getBody(),t.schema).each(function(e){var t=e[2][0];if(!d[t]){if(/^\d+$/.test(t)||1==t.length)return;c.push(t),d[t]=!0}}),t.setProgressState(!0);var f=b.spellchecker_callback||r;f("spellcheck",c,n)}function u(){t.dom.select("span.mce-spellchecker-word").length||m()}function f(e){var t=e.parentNode;t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function p(e,r,o){o?n.each(t.dom.select("span.mce-spellchecker-word"),function(e){var t=e.innerText||e.textContent;t==r&&f(e)}):f(e),u()}function m(){var e,n,r;for(v=!1,r=t.getBody(),n=r.getElementsByTagName("span"),e=n.length;e--;)r=n[e],r.getAttribute("data-mce-index")&&f(r);t.fire("SpellcheckEnd")}function h(e){var n,r,o,i=-1,a,s;for(e=""+e,n=t.getBody().getElementsByTagName("span"),r=0;r<n.length&&(o=n[r],"mce-spellchecker-word"!=o.className||(i=o.getAttribute("data-mce-index"),i===e&&(i=e,a||(a=o.firstChild),s=o.firstChild),i===e||!s));r++);var l=t.dom.createRng();return l.setStart(a,0),l.setEnd(s,s.length),t.selection.setRng(l),l}var g,v,y,b=t.settings;t.on("click",function(e){if("mce-spellchecker-word"==e.target.className){e.preventDefault();var t=h(e.target.getAttribute("data-mce-index"));c(e.target,t.toString())}}),t.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:d,selectable:!0,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(v)})}}),t.addButton("spellchecker",{tooltip:"Spellcheck",onclick:d,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(v)})}}),t.on("remove",function(){y&&(y.remove(),y=null)})})}),a([l,c])}(this); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/tabfocus/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/tabfocus/plugin.min.js
new file mode 100755
index 00000000..bd71785a
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/tabfocus/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("tabfocus",function(e){function n(e){9===e.keyCode&&e.preventDefault()}function t(n){function t(n){function t(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&t(e.parentNode)}function r(e){return e.tabIndex||"INPUT"==e.nodeName||"TEXTAREA"==e.nodeName}function a(e){return!r(e)&&"-1"!=e.getAttribute("tabindex")&&t(e)}if(d=i.select(":input:enabled,*[tabindex]:not(iframe)"),o(d,function(n,t){return n.id==e.id?(u=t,!1):void 0}),n>0){for(c=u+1;c<d.length;c++)if(a(d[c]))return d[c]}else for(c=u-1;c>=0;c--)if(a(d[c]))return d[c];return null}var u,d,a,c;if(9===n.keyCode&&(a=r(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==a.length&&(a[1]=a[0],a[0]=":prev"),d=n.shiftKey?":prev"==a[0]?t(-1):i.get(a[0]):":next"==a[1]?t(1):i.get(a[1]))){var f=tinymce.get(d.id||d.name);d.id&&f?f.focus():window.setTimeout(function(){tinymce.Env.webkit||window.focus(),d.focus()},10),n.preventDefault()}}var i=tinymce.DOM,o=tinymce.each,r=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null)}),e.on("keyup",n),tinymce.Env.gecko?e.on("keypress keydown",t):e.on("keydown",t)}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/table/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/table/plugin.min.js
new file mode 100755
index 00000000..c7c2e8ed
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/table/plugin.min.js
@@ -0,0 +1 @@
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var i=e,o=n[r],a=o.split(/[.\/]/),l=0;l<a.length-1;++l)i[a[l]]===t&&(i[a[l]]={}),i=i[a[l]];i[a[a.length-1]]=s[o]}}var s={},l="tinymce/tableplugin/TableGrid",c="tinymce/util/Tools",d="tinymce/Env",u="tinymce/tableplugin/Quirks",f="tinymce/util/VK",p="tinymce/tableplugin/CellSelection",m="tinymce/dom/TreeWalker",h="tinymce/tableplugin/Plugin",g="tinymce/PluginManager";r(l,[c,d],function(e,t){function n(e,t){return parseInt(e.getAttribute(t)||1,10)}var r=e.each;return function(i,o){function a(){var e=0;R=[],r(["thead","tbody","tfoot"],function(t){var i=H.select("> "+t+" tr",o);r(i,function(i,o){o+=e,r(H.select("> td, > th",i),function(e,r){var i,a,s,l;if(R[o])for(;R[o][r];)r++;for(s=n(e,"rowspan"),l=n(e,"colspan"),a=o;o+s>a;a++)for(R[a]||(R[a]=[]),i=r;r+l>i;i++)R[a][i]={part:t,real:a==o&&i==r,elm:e,rowspan:s,colspan:l}})}),e+=i.length})}function s(e,t){return e=e.cloneNode(t),e.removeAttribute("id"),e}function l(e,t){var n;return n=R[t],n?n[e]:void 0}function c(e,t,n){e&&(n=parseInt(n,10),1===n?e.removeAttribute(t,1):e.setAttribute(t,n,1))}function d(e){return e&&(H.hasClass(e.elm,"mce-item-selected")||e==P)}function u(){var e=[];return r(o.rows,function(t){r(t.cells,function(n){return H.hasClass(n,"mce-item-selected")||n==P.elm?(e.push(t),!1):void 0})}),e}function f(){var e=H.createRng();e.setStartAfter(o),e.setEndAfter(o),M.setRng(e),H.remove(o)}function p(n){var o,a={};return i.settings.table_clone_elements!==!1&&(a=e.makeMap((i.settings.table_clone_elements||"strong em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[ ,]/)),e.walk(n,function(e){var i;return 3==e.nodeType?(r(H.getParents(e.parentNode,null,n).reverse(),function(e){a[e.nodeName]&&(e=s(e,!1),o?i&&i.appendChild(e):o=i=e,i=e)}),i&&(i.innerHTML=t.ie?"&nbsp;":'<br data-mce-bogus="1" />'),!1):void 0},"childNodes"),n=s(n,!1),c(n,"rowSpan",1),c(n,"colSpan",1),o?n.appendChild(o):t.ie||(n.innerHTML='<br data-mce-bogus="1" />'),n}function m(){var e=H.createRng(),t;return r(H.select("tr",o),function(e){0===e.cells.length&&H.remove(e)}),0===H.select("tr",o).length?(e.setStartBefore(o),e.setEndBefore(o),M.setRng(e),H.remove(o),void 0):(r(H.select("thead,tbody,tfoot",o),function(e){0===e.rows.length&&H.remove(e)}),a(),t=R[Math.min(R.length-1,A.y)],t&&(M.select(t[Math.min(t.length-1,A.x)].elm,!0),M.collapse(!0)),void 0)}function h(e,t,n,r){var i,o,a,s,l;for(i=R[t][e].elm.parentNode,a=1;n>=a;a++)if(i=H.getNext(i,"tr")){for(o=e;o>=0;o--)if(l=R[t+a][o].elm,l.parentNode==i){for(s=1;r>=s;s++)H.insertAfter(p(l),l);break}if(-1==o)for(s=1;r>=s;s++)i.insertBefore(p(i.cells[0]),i.cells[0])}}function g(){r(R,function(e,t){r(e,function(e,r){var i,o,a;if(d(e)&&(e=e.elm,i=n(e,"colspan"),o=n(e,"rowspan"),i>1||o>1)){for(c(e,"rowSpan",1),c(e,"colSpan",1),a=0;i-1>a;a++)H.insertAfter(p(e),e);h(r,t,o-1,i)}})})}function v(t,n,i){var o,s,u,f,p,h,v,y,b,C,x;if(t?(o=S(t),s=o.x,u=o.y,f=s+(n-1),p=u+(i-1)):(A=B=null,r(R,function(e,t){r(e,function(e,n){d(e)&&(A||(A={x:n,y:t}),B={x:n,y:t})})}),s=A.x,u=A.y,f=B.x,p=B.y),y=l(s,u),b=l(f,p),y&&b&&y.part==b.part){for(g(),a(),y=l(s,u).elm,c(y,"colSpan",f-s+1),c(y,"rowSpan",p-u+1),v=u;p>=v;v++)for(h=s;f>=h;h++)R[v]&&R[v][h]&&(t=R[v][h].elm,t!=y&&(C=e.grep(t.childNodes),r(C,function(e){y.appendChild(e)}),C.length&&(C=e.grep(y.childNodes),x=0,r(C,function(e){"BR"==e.nodeName&&H.getAttrib(e,"data-mce-bogus")&&x++<C.length-1&&y.removeChild(e)})),H.remove(t)));m()}}function y(e){var t,i,o,a,l,u,f,m,h;for(r(R,function(n,i){return r(n,function(n){return d(n)&&(n=n.elm,l=n.parentNode,u=s(l,!1),t=i,e)?!1:void 0}),e?!t:void 0}),a=0;a<R[0].length;a++)if(R[t][a]&&(i=R[t][a].elm,i!=o)){if(e){if(t>0&&R[t-1][a]&&(m=R[t-1][a].elm,h=n(m,"rowSpan"),h>1)){c(m,"rowSpan",h+1);continue}}else if(h=n(i,"rowspan"),h>1){c(i,"rowSpan",h+1);continue}f=p(i),c(f,"colSpan",i.colSpan),u.appendChild(f),o=i}u.hasChildNodes()&&(e?l.parentNode.insertBefore(u,l):H.insertAfter(u,l))}function b(e){var t,i;r(R,function(n){return r(n,function(n,r){return d(n)&&(t=r,e)?!1:void 0}),e?!t:void 0}),r(R,function(r,o){var a,s,l;r[t]&&(a=r[t].elm,a!=i&&(l=n(a,"colspan"),s=n(a,"rowspan"),1==l?e?(a.parentNode.insertBefore(p(a),a),h(t,o,s-1,l)):(H.insertAfter(p(a),a),h(t,o,s-1,l)):c(a,"colSpan",a.colSpan+1),i=a))})}function C(){var t=[];r(R,function(i){r(i,function(i,o){d(i)&&-1===e.inArray(t,o)&&(r(R,function(e){var t=e[o].elm,r;r=n(t,"colSpan"),r>1?c(t,"colSpan",r-1):H.remove(t)}),t.push(o))})}),m()}function x(){function e(e){var t,i,o;t=H.getNext(e,"tr"),r(e.cells,function(e){var t=n(e,"rowSpan");t>1&&(c(e,"rowSpan",t-1),i=S(e),h(i.x,i.y,1,1))}),i=S(e.cells[0]),r(R[i.y],function(e){var t;e=e.elm,e!=o&&(t=n(e,"rowSpan"),1>=t?H.remove(e):c(e,"rowSpan",t-1),o=e)})}var t;t=u(),r(t.reverse(),function(t){e(t)}),m()}function w(){var e=u();return H.remove(e),m(),e}function _(){var e=u();return r(e,function(t,n){e[n]=s(t,!0)}),e}function N(e,t){var n=u(),i=n[t?0:n.length-1],o=i.cells.length;e&&(r(R,function(e){var t;return o=0,r(e,function(e){e.real&&(o+=e.colspan),e.elm.parentNode==i&&(t=1)}),t?!1:void 0}),t||e.reverse(),r(e,function(e){var n,r=e.cells.length,a;for(n=0;r>n;n++)a=e.cells[n],c(a,"colSpan",1),c(a,"rowSpan",1);for(n=r;o>n;n++)e.appendChild(p(e.cells[r-1]));for(n=o;r>n;n++)H.remove(e.cells[n]);t?i.parentNode.insertBefore(e,i):H.insertAfter(e,i)}),H.removeClass(H.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"))}function S(e){var t;return r(R,function(n,i){return r(n,function(n,r){return n.elm==e?(t={x:r,y:i},!1):void 0}),!t}),t}function E(e){A=S(e)}function k(){var e,t;return e=t=0,r(R,function(n,i){r(n,function(n,r){var o,a;d(n)&&(n=R[i][r],r>e&&(e=r),i>t&&(t=i),n.real&&(o=n.colspan-1,a=n.rowspan-1,o&&r+o>e&&(e=r+o),a&&i+a>t&&(t=i+a)))})}),{x:e,y:t}}function T(e){var t,n,r,i,o,a,s,l,c,d;if(B=S(e),A&&B){for(t=Math.min(A.x,B.x),n=Math.min(A.y,B.y),r=Math.max(A.x,B.x),i=Math.max(A.y,B.y),o=r,a=i,d=n;a>=d;d++)e=R[d][t],e.real||t-(e.colspan-1)<t&&(t-=e.colspan-1);for(c=t;o>=c;c++)e=R[n][c],e.real||n-(e.rowspan-1)<n&&(n-=e.rowspan-1);for(d=n;i>=d;d++)for(c=t;r>=c;c++)e=R[d][c],e.real&&(s=e.colspan-1,l=e.rowspan-1,s&&c+s>o&&(o=c+s),l&&d+l>a&&(a=d+l));for(H.removeClass(H.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),d=n;a>=d;d++)for(c=t;o>=c;c++)R[d][c]&&H.addClass(R[d][c].elm,"mce-item-selected")}}var R,A,B,P,M=i.selection,H=M.dom;o=o||H.getParent(M.getStart(),"table"),a(),P=H.getParent(M.getStart(),"th,td"),P&&(A=S(P),B=k(),P=l(A.x,A.y)),e.extend(this,{deleteTable:f,split:g,merge:v,insertRow:y,insertCol:b,deleteCols:C,deleteRows:x,cutRows:w,copyRows:_,pasteRows:N,getPos:S,setStartCell:E,setEndCell:T})}}),r(u,[f,d,c],function(e,t,n){function r(e,t){return parseInt(e.getAttribute(t)||1,10)}var i=n.each;return function(n){function o(){function t(t){function o(e,r){var i=e?"previousSibling":"nextSibling",o=n.dom.getParent(r,"tr"),s=o[i];if(s)return g(n,r,s,e),t.preventDefault(),!0;var d=n.dom.getParent(o,"table"),u=o.parentNode,f=u.nodeName.toLowerCase();if("tbody"===f||f===(e?"tfoot":"thead")){var p=a(e,d,u,"tbody");if(null!==p)return l(e,p,r)}return c(e,o,i,d)}function a(e,t,r,i){var o=n.dom.select(">"+i,t),a=o.indexOf(r);if(e&&0===a||!e&&a===o.length-1)return s(e,t);if(-1===a){var l="thead"===r.tagName.toLowerCase()?0:o.length-1;return o[l]}return o[a+(e?-1:1)]}function s(e,t){var r=e?"thead":"tfoot",i=n.dom.select(">"+r,t);return 0!==i.length?i[0]:null}function l(e,r,i){var o=d(r,e);return o&&g(n,i,o,e),t.preventDefault(),!0}function c(e,r,i,a){var s=a[i];if(s)return u(s),!0;var l=n.dom.getParent(a,"td,th");if(l)return o(e,l,t);var c=d(r,!e);return u(c),t.preventDefault(),!1}function d(e,t){var r=e&&e[t?"lastChild":"firstChild"];return r&&"BR"===r.nodeName?n.dom.getParent(r,"td,th"):r}function u(e){n.selection.setCursorLocation(e,0)}function f(){return b==e.UP||b==e.DOWN}function p(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"tr");return null!==n}function m(e){for(var t=0,n=e;n.previousSibling;)n=n.previousSibling,t+=r(n,"colspan");return t}function h(e,t){var n=0,o=0;return i(e.children,function(e,i){return n+=r(e,"colspan"),o=i,n>t?!1:void 0}),o}function g(e,t,r,i){var o=m(n.dom.getParent(t,"td,th")),a=h(r,o),s=r.childNodes[a],l=d(s,i);u(l||s)}function v(e){var t=n.selection.getNode(),r=n.dom.getParent(t,"td,th"),i=n.dom.getParent(e,"td,th");return r&&r!==i&&y(r,i)}function y(e,t){return n.dom.getParent(e,"TABLE")===n.dom.getParent(t,"TABLE")}var b=t.keyCode;if(f()&&p(n)){var C=n.selection.getNode();setTimeout(function(){v(C)&&o(!t.shiftKey&&b===e.UP,C,t)},0)}}n.on("KeyDown",function(e){t(e)})}function a(){function e(e,t){var n=t.ownerDocument,r=n.createRange(),i;return r.setStartBefore(t),r.setEnd(e.endContainer,e.endOffset),i=n.createElement("body"),i.appendChild(r.cloneContents()),0===i.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length}n.on("KeyDown",function(t){var r,i,o=n.dom;(37==t.keyCode||38==t.keyCode)&&(r=n.selection.getRng(),i=o.getParent(r.startContainer,"table"),i&&n.getBody().firstChild==i&&e(r,i)&&(r=o.createRng(),r.setStartBefore(i),r.setEndBefore(i),n.selection.setRng(r),t.preventDefault()))})}function s(){n.on("KeyDown SetContent VisualAid",function(){var e;for(e=n.getBody().lastChild;e;e=e.previousSibling)if(3==e.nodeType){if(e.nodeValue.length>0)break}else if(1==e.nodeType&&!e.getAttribute("data-mce-bogus"))break;e&&"TABLE"==e.nodeName&&(n.settings.forced_root_block?n.dom.add(n.getBody(),n.settings.forced_root_block,null,t.ie?"&nbsp;":'<br data-mce-bogus="1" />'):n.dom.add(n.getBody(),"br",{"data-mce-bogus":"1"}))}),n.on("PreProcess",function(e){var t=e.node.lastChild;t&&("BR"==t.nodeName||1==t.childNodes.length&&("BR"==t.firstChild.nodeName||"\xa0"==t.firstChild.nodeValue))&&t.previousSibling&&"TABLE"==t.previousSibling.nodeName&&n.dom.remove(t)})}function l(){function e(e,t,n,r){var i=3,o=e.dom.getParent(t.startContainer,"TABLE"),a,s,l;return o&&(a=o.parentNode),s=t.startContainer.nodeType==i&&0===t.startOffset&&0===t.endOffset&&r&&("TR"==n.nodeName||n==a),l=("TD"==n.nodeName||"TH"==n.nodeName)&&!r,s||l}function t(){var t=n.selection.getRng(),r=n.selection.getNode(),i=n.dom.getParent(t.startContainer,"TD,TH");if(e(n,t,r,i)){i||(i=r);for(var o=i.lastChild;o.lastChild;)o=o.lastChild;t.setEnd(o,o.nodeValue.length),n.selection.setRng(t)}}n.on("KeyDown",function(){t()}),n.on("MouseDown",function(e){2!=e.button&&t()})}t.webkit&&(o(),l()),t.gecko&&(a(),s())}}),r(p,[l,m,c],function(e,t,n){return function(r){function i(){r.getBody().style.webkitUserSelect="",c&&(r.dom.removeClass(r.dom.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),c=!1)}var o=r.dom,a,s,l,c=!0;return r.on("MouseDown",function(e){2!=e.button&&(i(),s=o.getParent(e.target,"td,th"),l=o.getParent(s,"table"))}),o.bind(r.getDoc(),"mouseover",function(t){var n,i,d=t.target;if(s&&(a||d!=s)&&("TD"==d.nodeName||"TH"==d.nodeName)){i=o.getParent(d,"table"),i==l&&(a||(a=new e(r,i),a.setStartCell(s),r.getBody().style.webkitUserSelect="none"),a.setEndCell(d),c=!0),n=r.selection.getSel();try{n.removeAllRanges?n.removeAllRanges():n.empty()}catch(u){}t.preventDefault()}}),r.on("MouseUp",function(){function e(e,r){var o=new t(e,e);do{if(3==e.nodeType&&0!==n.trim(e.nodeValue).length)return r?i.setStart(e,0):i.setEnd(e,e.nodeValue.length),void 0;if("BR"==e.nodeName)return r?i.setStartBefore(e):i.setEndBefore(e),void 0}while(e=r?o.next():o.prev())}var i,c=r.selection,d,u,f,p,m;if(s){if(a&&(r.getBody().style.webkitUserSelect=""),d=o.select("td.mce-item-selected,th.mce-item-selected"),d.length>0){i=o.createRng(),f=d[0],m=d[d.length-1],i.setStartBefore(f),i.setEndAfter(f),e(f,1),u=new t(f,o.getParent(d[0],"table"));do if("TD"==f.nodeName||"TH"==f.nodeName){if(!o.hasClass(f,"mce-item-selected"))break;p=f}while(f=u.next());e(p),c.setRng(i)}r.nodeChanged(),s=a=l=null}}),r.on("KeyUp",function(){i()}),{clear:i}}}),r(h,[l,u,p,c,m,d,g],function(e,t,n,r,i,o,a){function s(r){function i(e){return e?e.replace(/px$/,""):""}function a(e){return/^[0-9]+$/.test(e)&&(e+="px"),e}function s(e){l("left center right".split(" "),function(t){r.formatter.remove("align"+t,{},e)})}function c(){var e=r.dom,t,n,c;t=r.dom.getParent(r.selection.getStart(),"table"),c=!1,n={width:i(e.getStyle(t,"width")||e.getAttrib(t,"width")),height:i(e.getStyle(t,"height")||e.getAttrib(t,"height")),cellspacing:e.getAttrib(t,"cellspacing"),cellpadding:e.getAttrib(t,"cellpadding"),border:e.getAttrib(t,"border"),caption:!!e.select("caption",t)[0]},l("left center right".split(" "),function(e){r.formatter.matchNode(t,"align"+e)&&(n.align=e)}),r.windowManager.open({title:"Table properties",items:{type:"form",layout:"grid",columns:2,data:n,defaults:{type:"textbox",maxWidth:50},items:[c?{label:"Cols",name:"cols",disabled:!0}:null,c?{label:"Rows",name:"rows",disabled:!0}:null,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"},{label:"Alignment",minWidth:90,name:"align",type:"listbox",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]},onsubmit:function(){var n=this.toJSON(),i;r.undoManager.transact(function(){r.dom.setAttribs(t,{cellspacing:n.cellspacing,cellpadding:n.cellpadding,border:n.border}),r.dom.setStyles(t,{width:a(n.width),height:a(n.height)}),i=e.select("caption",t)[0],i&&!n.caption&&e.remove(i),!i&&n.caption&&(i=e.create("caption"),o.ie||(i.innerHTML='<br data-mce-bogus="1"/>'),t.insertBefore(i,t.firstChild)),s(t),n.align&&r.formatter.apply("align"+n.align,{},t),r.focus(),r.addVisual()})}})}function d(e,t){r.windowManager.open({title:"Merge cells",body:[{label:"Cols",name:"cols",type:"textbox",size:10},{label:"Rows",name:"rows",type:"textbox",size:10}],onsubmit:function(){var n=this.toJSON();r.undoManager.transact(function(){e.merge(t,n.cols,n.rows)})}})}function u(){var e=r.dom,t,n,o=[];o=r.dom.select("td.mce-item-selected,th.mce-item-selected"),t=r.dom.getParent(r.selection.getStart(),"td,th"),!o.length&&t&&o.push(t),t=t||o[0],n={width:i(e.getStyle(t,"width")||e.getAttrib(t,"width")),height:i(e.getStyle(t,"height")||e.getAttrib(t,"height")),scope:e.getAttrib(t,"scope")},n.type=t.nodeName.toLowerCase(),l("left center right".split(" "),function(e){r.formatter.matchNode(t,"align"+e)&&(n.align=e)}),r.windowManager.open({title:"Cell properties",items:{type:"form",data:n,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,menu:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,menu:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]},onsubmit:function(){var t=this.toJSON();r.undoManager.transact(function(){l(o,function(n){r.dom.setAttrib(n,"scope",t.scope),r.dom.setStyles(n,{width:a(t.width),height:a(t.height)}),t.type&&n.nodeName.toLowerCase()!=t.type&&(n=e.rename(n,t.type)),s(n),t.align&&r.formatter.apply("align"+t.align,{},n)}),r.focus()})}})}function f(){var e=r.dom,t,n,o,c,d=[];t=r.dom.getParent(r.selection.getStart(),"table"),n=r.dom.getParent(r.selection.getStart(),"td,th"),l(t.rows,function(t){l(t.cells,function(r){return e.hasClass(r,"mce-item-selected")||r==n?(d.push(t),!1):void 0})}),o=d[0],c={height:i(e.getStyle(o,"height")||e.getAttrib(o,"height")),scope:e.getAttrib(o,"scope")},c.type=o.parentNode.nodeName.toLowerCase(),l("left center right".split(" "),function(e){r.formatter.matchNode(o,"align"+e)&&(c.align=e)}),r.windowManager.open({title:"Row properties",items:{type:"form",data:c,columns:2,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"None",maxWidth:null,menu:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,menu:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"}]},onsubmit:function(){var t=this.toJSON(),n,i,o;r.undoManager.transact(function(){var c=t.type;l(d,function(l){r.dom.setAttrib(l,"scope",t.scope),r.dom.setStyles(l,{height:a(t.height)}),c!=l.parentNode.nodeName.toLowerCase()&&(n=e.getParent(l,"table"),i=l.parentNode,o=e.select(c,n)[0],o||(o=e.create(c),n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o)),o.appendChild(l),i.hasChildNodes()||e.remove(i)),s(l),t.align&&r.formatter.apply("align"+t.align,{},l)}),r.focus()})}})}function p(e){return function(){r.execCommand(e)}}function m(e,t){var n,i,a;for(a="<table><tbody>",n=0;t>n;n++){for(a+="<tr>",i=0;e>i;i++)a+="<td>"+(o.ie?" ":"<br>")+"</td>";a+="</tr>"}a+="</tbody></table>",r.insertContent(a)}function h(e,t){function n(){e.disabled(!r.dom.getParent(r.selection.getStart(),t)),r.selection.selectorChanged(t,function(t){e.disabled(!t)})}r.initialized?n():r.on("init",n)}function g(){h(this,"table")}function v(){h(this,"td,th")}function y(){var e="";e='<table role="presentation" class="mce-grid mce-grid-border">';for(var t=0;10>t;t++){e+="<tr>";for(var n=0;10>n;n++)e+='<td><a href="#" data-mce-index="'+n+","+t+'"></a></td>';e+="</tr>"}return e+="</table>",e+='<div class="mce-text-center">0 x 0</div>'}var b,C,x=this;r.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onhide:function(){r.dom.removeClass(this.menu.items()[0].getEl().getElementsByTagName("a"),"mce-active")},menu:[{type:"container",html:y(),onmousemove:function(e){var t=e.target;if("A"==t.nodeName){var n=r.dom.getParent(t,"table"),i=t.getAttribute("data-mce-index");if(i!=this.lastPos){i=i.split(","),i[0]=parseInt(i[0],10),i[1]=parseInt(i[1],10);for(var o=0;10>o;o++)for(var a=0;10>a;a++)r.dom.toggleClass(n.rows[o].childNodes[a].firstChild,"mce-active",a<=i[0]&&o<=i[1]);n.nextSibling.innerHTML=i[0]+1+" x "+(i[1]+1),this.lastPos=i}}},onclick:function(e){"A"==e.target.nodeName&&this.lastPos&&(e.preventDefault(),m(this.lastPos[0]+1,this.lastPos[1]+1),this.parent().cancel())}}]}),r.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:g,onclick:c}),r.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:g,cmd:"mceTableDelete"}),r.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:p("mceTableCellProps"),onPostRender:v},{text:"Merge cells",onclick:p("mceTableMergeCells"),onPostRender:v},{text:"Split cell",onclick:p("mceTableSplitCells"),onPostRender:v}]}),r.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:p("mceTableInsertRowBefore"),onPostRender:v},{text:"Insert row after",onclick:p("mceTableInsertRowAfter"),onPostRender:v},{text:"Delete row",onclick:p("mceTableDeleteRow"),onPostRender:v},{text:"Row properties",onclick:p("mceTableRowProps"),onPostRender:v},{text:"-"},{text:"Cut row",onclick:p("mceTableCutRow"),onPostRender:v},{text:"Copy row",onclick:p("mceTableCopyRow"),onPostRender:v},{text:"Paste row before",onclick:p("mceTablePasteRowBefore"),onPostRender:v},{text:"Paste row after",onclick:p("mceTablePasteRowAfter"),onPostRender:v}]}),r.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:p("mceTableInsertColBefore"),onPostRender:v},{text:"Insert column after",onclick:p("mceTableInsertColAfter"),onPostRender:v},{text:"Delete column",onclick:p("mceTableDeleteCol"),onPostRender:v}]});var w=[];l("inserttable tableprops deletetable | cell row column".split(" "),function(e){"|"==e?w.push({text:"-"}):w.push(r.menuItems[e])}),r.addButton("table",{type:"menubutton",title:"Table",menu:w}),o.isIE||r.on("click",function(e){e=e.target,"TABLE"===e.nodeName&&(r.selection.select(e),r.nodeChanged())}),x.quirks=new t(r),r.on("Init",function(){b=r.windowManager,x.cellSelection=new n(r)}),l({mceTableSplitCells:function(e){e.split()},mceTableMergeCells:function(e){var t,n,i;i=r.dom.getParent(r.selection.getStart(),"th,td"),i&&(t=i.rowSpan,n=i.colSpan),r.dom.select("td.mce-item-selected,th.mce-item-selected").length?e.merge():d(e,i)},mceTableInsertRowBefore:function(e){e.insertRow(!0)},mceTableInsertRowAfter:function(e){e.insertRow()},mceTableInsertColBefore:function(e){e.insertCol(!0)},mceTableInsertColAfter:function(e){e.insertCol()},mceTableDeleteCol:function(e){e.deleteCols()},mceTableDeleteRow:function(e){e.deleteRows()},mceTableCutRow:function(e){C=e.cutRows()},mceTableCopyRow:function(e){C=e.copyRows()},mceTablePasteRowBefore:function(e){e.pasteRows(C,!0)},mceTablePasteRowAfter:function(e){e.pasteRows(C)},mceTableDelete:function(e){e.deleteTable()}},function(t,n){r.addCommand(n,function(){var n=new e(r);n&&(t(n),r.execCommand("mceRepaint"),x.cellSelection.clear())})}),l({mceInsertTable:function(){c()},mceTableRowProps:f,mceTableCellProps:u},function(e,t){r.addCommand(t,function(t,n){e(n)})})}var l=r.each;a.add("table",s)}),a([l,u,p,h])}(this); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/template/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/template/plugin.min.js
new file mode 100755
index 00000000..eacf712d
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/template/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("template",function(e){function t(){function t(e){var t=e.control.value();t.url?tinymce.util.XHR.send({url:t.url,success:function(e){i=e,n.find("iframe")[0].html(e)}}):(i=t.content,n.find("iframe")[0].html(t.content)),n.find("#description")[0].text(e.control.value().description)}var n,i,o=[];return e.settings.templates?(tinymce.each(e.settings.templates,function(e){o.push({selected:!o.length,text:e.title,value:{url:e.url,content:e.content,description:e.description}})}),n=e.windowManager.open({title:"Insert template",body:[{type:"container",label:"Templates",items:{type:"listbox",name:"template",values:o,onselect:t}},{type:"label",name:"description",label:"Description",text:" "},{type:"iframe",minWidth:600,minHeight:400,border:1}],onsubmit:function(){a(!1,i)}}),n.find("listbox")[0].fire("select"),void 0):(e.windowManager.alert("No templates defined"),void 0)}function n(t,n){function i(e,t){if(e=""+e,e.length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}var a="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),r="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),l="January February March April May June July August September October November December".split(" ");return n=n||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+n.getFullYear()),t=t.replace("%y",""+n.getYear()),t=t.replace("%m",i(n.getMonth()+1,2)),t=t.replace("%d",i(n.getDate(),2)),t=t.replace("%H",""+i(n.getHours(),2)),t=t.replace("%M",""+i(n.getMinutes(),2)),t=t.replace("%S",""+i(n.getSeconds(),2)),t=t.replace("%I",""+((n.getHours()+11)%12+1)),t=t.replace("%p",""+(n.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(l[n.getMonth()])),t=t.replace("%b",""+e.translate(r[n.getMonth()])),t=t.replace("%A",""+e.translate(o[n.getDay()])),t=t.replace("%a",""+e.translate(a[n.getDay()])),t=t.replace("%%","%")}function i(t){var n=e.dom,i=e.getParam("template_replace_values");o(n.select("*",t),function(e){o(i,function(t,a){n.hasClass(e,a)&&"function"==typeof i[a]&&i[a](e)})})}function a(t,a){function r(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}var l,c,s=e.dom,u=e.selection.getContent();o(e.getParam("template_replace_values"),function(e,t){"function"!=typeof e&&(a=a.replace(new RegExp("\\{\\$"+t+"\\}","g"),e))}),l=s.create("div",null,a),c=s.select(".mceTmpl",l),c&&c.length>0&&(l=s.create("div",null),l.appendChild(c[0].cloneNode(!0))),o(s.select("*",l),function(t){r(t,e.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_cdate_format",e.getLang("template.cdate_format")))),r(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))),r(t,e.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(t.innerHTML=u)}),i(l),e.execCommand("mceInsertContent",!1,l.innerHTML),e.addVisual()}var o=tinymce.each;e.addCommand("mceInsertTemplate",a),e.addButton("template",{title:"Insert template",onclick:t}),e.addMenuItem("template",{text:"Insert template",onclick:t,context:"insert"}),e.on("PreProcess",function(t){var a=e.dom;o(a.select("div",t.node),function(t){a.hasClass(t,"mceTmpl")&&(o(a.select("*",t),function(t){a.hasClass(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format"))))}),i(t))})})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/textcolor/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/textcolor/plugin.min.js
new file mode 100755
index 00000000..9f2524fd
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/textcolor/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("textcolor",function(e){function t(){var t,n,i=[];for(n=e.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Brown","C0C0C0","Silver","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum","FFFFFF","White"],t=0;t<n.length;t+=2)i.push({text:n[t+1],color:n[t]});return i}function n(){var n,i,a,o,r,l,c,s,u,d=this;for(n=t(),a='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="presentation" cellspacing="0"><tbody>',o=n.length-1,r=e.settings.textcolor_rows||5,l=e.settings.textcolor_cols||8,s=0;r>s;s++){for(a+="<tr>",c=0;l>c;c++)u=s*l+c,u>o?a+="<td></td>":(i=n[u],a+='<td><div id="'+d._id+"-"+u+'"'+' data-mce-color="'+i.color+'"'+' role="option"'+' tabIndex="-1"'+' style="'+(i?"background-color: #"+i.color:"")+'"'+' title="'+i.text+'">'+"</div>"+"</td>");a+="</tr>"}return a+="</tbody></table>"}function i(t){var n,i=this.parent();(n=t.target.getAttribute("data-mce-color"))&&(i.hidePanel(),n="#"+n,i.color(n),e.execCommand(i.settings.selectcmd,!1,n))}function a(){var t=this;t._color&&e.execCommand(t.settings.selectcmd,!1,t._color)}e.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",popoverAlign:"bc-tl",selectcmd:"ForeColor",panel:{html:n,onclick:i},onclick:a}),e.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",popoverAlign:"bc-tl",selectcmd:"HiliteColor",panel:{html:n,onclick:i},onclick:a})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/css/visualblocks.css b/framework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/css/visualblocks.css
new file mode 100755
index 00000000..30fa34ef
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/css/visualblocks.css
@@ -0,0 +1,136 @@
+.mce-visualblocks p {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+
+.mce-visualblocks h1 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+
+.mce-visualblocks h2 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+
+.mce-visualblocks h3 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+
+.mce-visualblocks h4 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+
+.mce-visualblocks h5 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+
+.mce-visualblocks h6 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+
+.mce-visualblocks div {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+
+.mce-visualblocks section {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+
+.mce-visualblocks article {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+
+.mce-visualblocks blockquote {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+
+.mce-visualblocks address {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+
+.mce-visualblocks pre {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+
+.mce-visualblocks figure {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+
+.mce-visualblocks hgroup {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+
+.mce-visualblocks aside {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+
+.mce-visualblocks figcaption {
+ border: 1px dashed #BBB;
+}
+
+.mce-visualblocks ul {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAPcAAAAAALu7uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAOAAoAAAgsAP8JHEhwYICCCAUe/LewIUGHDBUmhLiwIMWEDCsG2CgR40OPHxVyFLkxQEAAOw==);
+}
+
+.mce-visualblocks ol {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAPcAALu7u////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAADgAKAAAILQADCBxIcCCAgggFHlS4MEBDhwojQkS4sGJCixMpNgTAUWJCgg8/ZuS4kSSAgAA7);
+}
+
+.mce-visualblocks br {
+ content:"";
+ padding-left:6px;
+ background: transparent bottom right no-repeat url(data:image/gif;base64,R0lGODlhBgAIAPcAAAAAALu7uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAGAAgAAAgYAP8FGDjwn0GDAQ4iVCiQYUKFDw9GPBgQADs=);
+}
+
+.mce-visualblocks br:after { content:"\A"; white-space:pre; }
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/plugin.min.js
new file mode 100755
index 00000000..cafa4187
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/visualblocks/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("visualblocks",function(e,t){function n(){var t=this;t.active(r),e.on("VisualBlocks",function(){t.active(e.dom.hasClass(e.getBody(),"mce-visualblocks"))})}var i,a,r;window.NodeList&&(e.addCommand("mceVisualBlocks",function(){var n,o=e.dom;i||(i=o.uniqueId(),n=o.create("link",{id:i,rel:"stylesheet",href:t+"/css/visualblocks.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(n)),e.on("PreviewFormats AfterPreviewFormats",function(t){r&&o.toggleClass(e.getBody(),"mce-visualblocks","afterpreviewformats"==t.type)}),o.toggleClass(e.getBody(),"mce-visualblocks"),r=e.dom.hasClass(e.getBody(),"mce-visualblocks"),a&&a.active(o.hasClass(e.getBody(),"mce-visualblocks")),e.fire("VisualBlocks")}),e.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n,selectable:!0,context:"view",prependToContext:!0}),e.on("init",function(){e.settings.visualblocks_default_state&&e.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),e.on("remove",function(){e.dom.removeClass(e.getBody(),"mce-visualblocks")}))}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/visualchars/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/visualchars/plugin.min.js
new file mode 100755
index 00000000..44742388
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/visualchars/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("visualchars",function(e){function t(t){var n,a,r,o,l,s,c=e.getBody(),d=e.selection;if(i=!i,e.fire("VisualChars",{state:i}),t&&(s=d.getBookmark()),i)for(a=[],tinymce.walk(c,function(e){3==e.nodeType&&e.nodeValue&&-1!=e.nodeValue.indexOf(" ")&&a.push(e)},"childNodes"),r=0;r<a.length;r++){for(o=a[r].nodeValue,o=o.replace(/(\u00a0)/g,'<span data-mce-bogus="1" class="mce-nbsp">$1</span>'),l=e.dom.create("div",null,o);n=l.lastChild;)e.dom.insertAfter(n,a[r]);e.dom.remove(a[r])}else for(a=e.dom.select("span.mce-nbsp",c),r=a.length-1;r>=0;r--)e.dom.remove(a[r],1);d.moveToBookmark(s)}function n(){var t=this;e.on("VisualChars",function(e){t.active(e.state)})}var i;e.addCommand("mceVisualChars",t),e.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:n}),e.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:n,selectable:!0,context:"view",prependToContext:!0}),e.on("beforegetcontent",function(e){i&&"raw"!=e.format&&!e.draft&&(i=!0,t(!1))})}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/plugins/wordcount/plugin.min.js b/framework/Web/Javascripts/source/tinymce-405/plugins/wordcount/plugin.min.js
new file mode 100755
index 00000000..8c419801
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/plugins/wordcount/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("wordcount",function(e){function t(){e.theme.panel.find("#wordcount").text(["Words: {0}",a.getCount()])}var n,i,a=this;n=e.getParam("wordcount_countregex",/[\w\u2019\x27\-]+/g),i=e.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),e.on("init",function(){var n=e.theme.panel&&e.theme.panel.find("#statusbar")[0];n&&window.setTimeout(function(){n.insert({type:"label",name:"wordcount",text:["Words: {0}",a.getCount()],classes:"wordcount"},0),e.on("setcontent beforeaddundo",t),e.on("keyup",function(e){32==e.keyCode&&t()})},0)}),a.getCount=function(){var t=e.getContent({format:"raw"}),a=0;if(t){t=t.replace(/\.\.\./g," "),t=t.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," "),t=t.replace(/(\w+)(&.+?;)+(\w+)/,"$1$3").replace(/&.+?;/g," "),t=t.replace(i,"");var o=t.match(n);o&&(a=o.length)}return a}}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.inline.min.css b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.inline.min.css
new file mode 100755
index 00000000..771b83e5
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.inline.min.css
@@ -0,0 +1 @@
+.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:green;color:#fff}.mce-spellchecker-word{background:url(img/wline.gif) repeat-x bottom left;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333} \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.min.css b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.min.css
new file mode 100755
index 00000000..b9bbab14
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/content.min.css
@@ -0,0 +1 @@
+body{background-color:#fff;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#f0f0ee;scrollbar-arrow-color:#676662;scrollbar-base-color:#f0f0ee;scrollbar-darkshadow-color:#ddd;scrollbar-face-color:#e0e0dd;scrollbar-highlight-color:#f0f0ee;scrollbar-shadow-color:#f0f0ee;scrollbar-track-color:#f5f5f5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:green;color:#fff}.mce-spellchecker-word{background:url(img/wline.gif) repeat-x bottom left;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333} \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.eot b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.eot
new file mode 100755
index 00000000..43a30f99
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.eot
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.svg b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.svg
new file mode 100755
index 00000000..d338114f
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.svg
@@ -0,0 +1,175 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG font generated by IcoMoon.
+<iconset grid="16"></iconset>
+</metadata>
+<defs>
+<font id="icomoon-small" horiz-adv-x="512" >
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
+<glyph unicode="&#xe020;" d="M 352,64l0,18.502 c 75.674,30.814, 128,96.91, 128,173.498c0,106.039-100.288,192-224,192S 32,362.039, 32,256
+ c0-76.588, 52.327-142.684, 128-173.498L 160,64 L 64,64 l-32,48l0-112 l 160,0 L 192,111.406 c-50.45,25.681-85.333,80.77-85.333,144.594
+ c0,88.366, 66.859,160, 149.333,160c 82.474,0, 149.333-71.634, 149.333-160c0-63.824-34.883-118.913-85.333-144.594L 320,0 l 160,0 L 480,112 l-32-48
+ L 352,64 z" />
+<glyph unicode="&#xe013;" d="M 128,448l0-448 l 128,128l 128-128L 384,448 L 128,448 z M 352,85.255l-96,96l-96-96L 160,416 l 192,0 L 352,85.255 z" />
+<glyph unicode="&#xe012;" d="M 463.637,364.892l-66.745,66.744C 386.34,442.188, 372.276,448, 357.293,448s-29.047-5.812-39.598-16.363l-82.746-82.745
+ c-21.834-21.834-21.834-57.362,0-79.196l 1.373-1.373l 33.941,33.941l-1.373,1.373c-3.066,3.066-3.066,8.247,0,11.313l 82.746,82.746
+ C 353.641,399.7, 356.040,400, 357.292,400s 3.651-0.299, 5.656-2.305l 66.745-66.744c 3.066-3.067, 3.066-8.249, 0.001-11.314l-82.747-82.747
+ c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651,0.3-5.656,2.306l-1.373,1.373l-33.94-33.942l 1.371-1.371
+ c 10.553-10.554, 24.615-16.364, 39.6-16.364s 29.047,5.812, 39.598,16.363l 82.747,82.746C 485.47,307.53, 485.47,343.057, 463.637,364.892
+ zM 275.678,179.678l-33.941-33.941l 1.373-1.373c 2.004-2.004, 2.305-4.403, 2.305-5.655c0-1.253-0.299-3.651-2.303-5.657
+ l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652,0.3-5.657,2.305L 82.305,117.050C 80.3,119.055, 80,121.455, 80,122.707
+ s 0.299,3.65, 2.305,5.656l 82.745,82.744c 2.005,2.006, 4.405,2.306, 5.657,2.306s 3.652-0.3, 5.657-2.306l 1.373-1.371l 33.941,33.94
+ l-1.373,1.373c-10.552,10.552-24.615,16.363-39.598,16.363s-29.046-5.812-39.598-16.363l-82.744-82.743
+ C 37.812,151.754, 32,137.689, 32,122.707s 5.812-29.047, 16.363-39.599l 66.745-66.745C 125.661,5.812, 139.724,0, 154.707,0
+ s 29.046,5.812, 39.598,16.363l 82.747,82.746c 10.552,10.552, 16.361,24.615, 16.361,39.598s-5.812,29.047-16.363,39.598
+ L 275.678,179.678zM 400,61c-4.862,0-9.725,1.854-13.435,5.565l-64,63.999c-7.422,7.42-7.422,19.449,0,26.869
+ c 7.42,7.422, 19.448,7.422, 26.868,0l 64-64c 7.422-7.42, 7.422-19.448,0-26.868C 409.725,62.854, 404.862,61, 400,61zM 304,0c-8.837,0-16,7.163-16,16l0,64 c0,8.837, 7.163,16, 16,16s 16-7.163, 16-16l0-64 C 320,7.163, 312.837,0, 304,0zM 464,160l-64,0 c-8.837,0-16,7.163-16,16s 7.163,16, 16,16l 64,0 c 8.837,0, 16-7.163, 16-16S 472.837,160, 464,160zM 112,387c 4.862,0, 9.725-1.854, 13.435-5.565l 64-64c 7.421-7.42, 7.421-19.449,0-26.869c-7.42-7.422-19.449-7.422-26.869,0
+ l-64,64c-7.421,7.42-7.421,19.449,0,26.869C 102.275,385.146, 107.138,387, 112,387zM 208,448c 8.837,0, 16-7.163, 16-16l0-64 c0-8.837-7.163-16-16-16s-16,7.163-16,16L 192,432 C 192,440.837, 199.163,448, 208,448zM 48,288l 64,0 c 8.837,0, 16-7.163, 16-16s-7.163-16-16-16L 48,256 c-8.837,0-16,7.163-16,16S 39.163,288, 48,288z" />
+<glyph unicode="&#xe011;" d="M 463.637,364.892l-66.745,66.744C 386.34,442.188, 372.276,448, 357.293,448s-29.047-5.812-39.598-16.363l-82.746-82.745
+ c-21.834-21.834-21.834-57.362,0-79.196l 1.373-1.373l 33.941,33.941l-1.373,1.373c-3.066,3.066-3.066,8.247,0,11.313l 82.746,82.746
+ C 353.641,399.7, 356.040,400, 357.292,400s 3.651-0.299, 5.656-2.305l 66.745-66.744c 3.066-3.067, 3.066-8.249, 0.001-11.314l-82.747-82.747
+ c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651,0.3-5.656,2.306l-1.373,1.373l-33.94-33.942l 1.371-1.371
+ c 10.553-10.554, 24.615-16.364, 39.6-16.364s 29.047,5.812, 39.598,16.363l 82.747,82.746C 485.47,307.53, 485.47,343.057, 463.637,364.892
+ zM 275.678,179.678l-33.941-33.941l 1.373-1.373c 2.004-2.004, 2.305-4.403, 2.305-5.655c0-1.253-0.299-3.651-2.303-5.657
+ l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652,0.3-5.657,2.305L 82.305,117.050C 80.3,119.055, 80,121.455, 80,122.707
+ s 0.299,3.65, 2.305,5.656l 82.745,82.744c 2.005,2.006, 4.405,2.306, 5.657,2.306s 3.652-0.3, 5.657-2.306l 1.373-1.371l 33.941,33.94
+ l-1.373,1.373c-10.552,10.552-24.615,16.363-39.598,16.363s-29.046-5.812-39.598-16.363l-82.744-82.743
+ C 37.812,151.754, 32,137.689, 32,122.707s 5.812-29.047, 16.363-39.599l 66.745-66.745C 125.661,5.812, 139.724,0, 154.707,0
+ s 29.046,5.812, 39.598,16.363l 82.747,82.746c 10.552,10.552, 16.361,24.615, 16.361,39.598s-5.812,29.047-16.363,39.598
+ L 275.678,179.678zM 176,125c-4.862,0-9.725,1.855-13.435,5.564c-7.42,7.42-7.42,19.449,0,26.869l 160,160c 7.42,7.42, 19.448,7.42, 26.868,0
+ c 7.422-7.42, 7.422-19.45,0-26.87l-160-160C 185.725,126.855, 180.862,125, 176,125z" />
+<glyph unicode="&#xe010;" d="M 288,339.337L 288,448 l 168.001-168L 288,112L 288,223.048 C 92.547,227.633, 130.5,99.5, 160,0C 16,160, 53.954,345.437, 288,339.337z" />
+<glyph unicode="&#xe00f;" d="M 352,0c 29.5,99.5, 67.453,227.633-128,223.048L 224,112 L 55.999,280L 224,448l0-108.663 C 458.046,345.437, 496,160, 352,0z" />
+<glyph unicode="&#xe00e;" d="M 128.214,267.637c 52.9,0, 95.786-45.585, 95.786-101.819C 224,109.586, 181.114,64, 128.214,64
+ c-52.901,0-95.786,45.585-95.786,101.818L 32,180.364C 32,292.829, 117.77,384, 223.572,384l0-58.182 c-36.55,0-70.913-15.13-96.758-42.602
+ c-4.977-5.289-9.517-10.917-13.612-16.828C 118.094,267.208, 123.105,267.637, 128.214,267.637zM 384.214,267.637c 52.9,0, 95.786-45.585, 95.786-101.819C 480,109.586, 437.114,64, 384.214,64
+ c-52.901,0-95.786,45.585-95.786,101.818L 288,180.364C 288,292.829, 373.77,384, 479.572,384l0-58.182 c-36.55,0-70.913-15.13-96.758-42.602
+ c-4.978-5.289-9.518-10.917-13.612-16.828C 374.094,267.208, 379.105,267.637, 384.214,267.637z" />
+<glyph unicode="&#xe00c;" d="M 32,384L 480,384L 480,320L 32,320zM 192,192L 480,192L 480,128L 192,128zM 192,288L 480,288L 480,224L 192,224zM 32,96L 480,96L 480,32L 32,32zM 32,288L 144,208L 32,128 z" />
+<glyph unicode="&#xe00d;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 320,192L 320,128L 32,128zM 32,288L 320,288L 320,224L 32,224zM 32,96L 480,96L 480,32L 32,32zM 480,288L 368,208L 480,128 z" />
+<glyph unicode="&#xe00b;" d="M 192,416L 480,416L 480,352L 192,352zM 192,256L 480,256L 480,192L 192,192zM 192,96L 480,96L 480,32L 192,32zM 160,215L 160,288L 128,288L 128,448L 64,448L 64,416L 96,416L 96,288L 64,288L 64,256L 128,256L 128,231L 64,201L 64,128L 128,128L 128,96L 64,96L 64,64L 128,64L 128,32L 64,32L 64,0L 160,0L 160,160L 96,160L 96,185 z" />
+<glyph unicode="&#xe00a;" d="M 192,416L 480,416L 480,352L 192,352zM 192,256L 480,256L 480,192L 192,192zM 192,96L 480,96L 480,32L 192,32zM 64,384A32,32 1980 1 1 128,384A32,32 1980 1 1 64,384zM 64,224A32,32 1980 1 1 128,224A32,32 1980 1 1 64,224zM 64,64A32,32 1980 1 1 128,64A32,32 1980 1 1 64,64z" />
+<glyph unicode="&#xe009;" d="M 444,288l-28,0 L 416,416 l 32,0 L 448,448 L 288,448 l0-32 l 32,0 l0-128 L 192,288 L 192,416 l 32,0 L 224,448 L 64,448 l0-32 l 32,0 l0-128 L 68,288 c-19.8,0-36-16.2-36-36l0-216 c0-19.8, 16.2-36, 36-36l 120,0
+ c 19.8,0, 36,16.2, 36,36L 224,192 l 64,0 l0-156 c0-19.8, 16.2-36, 36-36l 120,0 c 19.8,0, 36,16.2, 36,36L 480,252 C 480,271.8, 463.8,288, 444,288z M 174,32L 82,32
+ c-9.9,0-18,7.2-18,16s 8.1,16, 18,16l 92,0 c 9.9,0, 18-7.2, 18-16S 183.9,32, 174,32z M 272,224l-32,0 c-8.8,0-16,7.2-16,16s 7.2,16, 16,16l 32,0
+ c 8.8,0, 16-7.2, 16-16S 280.8,224, 272,224z M 430,32l-92,0 c-9.9,0-18,7.2-18,16s 8.1,16, 18,16l 92,0 c 9.9,0, 18-7.2, 18-16S 439.9,32, 430,32z" />
+<glyph unicode="&#xe008;" d="M 352,288l0,80 c0,8.8-7.2,16-16,16l-80,0 L 256,416 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,384 c-8.801,0-16-7.2-16-16l0-256
+ c0-8.8, 7.199-16, 16-16l 112,0 l0-96 l 192,0 l 96,96L 448,288 L 352,288 z M 160,415.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 224,384 l-64,0 L 160,415.943 L 160,415.943z M 96,320l0,32 l 192,0 l0-32 L 96,320 z M 352,45.255L 352,96 l 50.745,0 L 352,45.255z
+ M 416,128l-96,0 l0-96 L 192,32 L 192,256 l 224,0 L 416,128 z" />
+<glyph unicode="&#xe031;" d="M 416,320l-96,0 l0,32 l-96,96L 32,448 l0-352 l 192,0 l0-96 l 288,0 L 512,224 L 416,320z M 416,274.745L 466.745,224L 416,224 L 416,274.745 z M 224,402.745L 274.745,352
+ L 224,352 L 224,402.745 z M 64,416l 128,0 l0-96 l 96,0 l0-192 L 64,128 L 64,416 z M 480,32L 256,32 l0,64 l 64,0 L 320,288 l 64,0 l0-96 l 96,0 L 480,32 z" />
+<glyph unicode="&#xe007;" d="M 432.204,144.934c-23.235,23.235-53.469,34.002-80.541,31.403L 320,208l 96,96c0,0, 64,64,0,128L 256,272L 96,432
+ c-64-64,0-128,0-128l 96-96l-31.663-31.663c-27.072,2.599-57.305-8.169-80.54-31.403c-37.49-37.49-42.556-93.209-11.313-124.45
+ c 31.241-31.241, 86.96-26.177, 124.45,11.313c 23.235,23.234, 34.001,53.469, 31.403,80.54L 256,144l 31.664-31.664
+ c-2.598-27.072, 8.168-57.305, 31.403-80.539c 37.489-37.49, 93.209-42.556, 124.449-11.313
+ C 474.76,51.725, 469.694,107.443, 432.204,144.934z M 176.562,100.711c-1.106-12.166-7.51-24.913-17.57-34.973
+ C 147.886,54.631, 133.452,48, 120.383,48c-5.262,0-12.649,1.114-17.958,6.424c-10.703,10.702-8.688,36.566, 11.313,56.568
+ c 11.106,11.107, 25.54,17.738, 38.609,17.738c 5.262,0, 12.649-1.114, 17.958-6.424C 176.861,115.751, 177.040,105.962, 176.562,100.711z
+ M 256,176c-17.673,0-32,14.327-32,32s 14.327,32, 32,32s 32-14.327, 32-32S 273.673,176, 256,176z M 409.576,54.424
+ c-5.31-5.31-12.696-6.424-17.958-6.424c-13.069,0-27.503,6.631-38.609,17.738c-10.061,10.060-16.464,22.807-17.569,34.973
+ c-0.479,5.251-0.3,15.040, 6.257,21.596c 5.309,5.311, 12.695,6.424, 17.958,6.424c 13.068,0, 27.503-6.631, 38.608-17.737
+ C 418.265,90.99, 420.279,65.126, 409.576,54.424z" />
+<glyph unicode="&#xe006;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 32,288L 480,288L 480,224L 32,224zM 32,96L 480,96L 480,32L 32,32z" />
+<glyph unicode="&#xe004;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 128,288L 384,288L 384,224L 128,224zM 128,96L 384,96L 384,32L 128,32z" />
+<glyph unicode="&#xe005;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 192,288L 480,288L 480,224L 192,224zM 192,96L 480,96L 480,32L 192,32z" />
+<glyph unicode="&#xe003;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 32,288L 320,288L 320,224L 32,224zM 32,96L 320,96L 320,32L 32,32z" />
+<glyph unicode="&#xe02d;" d="M 480,224l-4.571,0 L 347.062,224 c-25.039,17.71-57.215,27.43-91.062,27.43c-44.603,0-82.286,25.121-82.286,54.856
+ c0,29.735, 37.683,54.857, 82.286,54.857c 37.529,0, 70.154-17.788, 79.56-41.143l 56.508,0 c-3.965,25.322-18.79,48.984-42.029,66.413
+ C 324.599,405.493, 291.201,416, 256,416c-35.202,0-68.598-10.507-94.037-29.587c-27.394-20.545-43.106-49.751-43.106-80.127
+ s 15.712-59.582, 43.106-80.127c 0.978-0.733, 1.971-1.449, 2.973-2.158L 36.571,224.001 L 32,224.001 l0-32 l 256.266,0 c 29.104-8.553, 50.021-28.135, 50.021-50.286
+ c0-29.734-37.684-54.855-82.286-54.855c-37.53,0-70.154,17.787-79.559,41.143l-56.508,0 c 3.965-25.32, 18.791-48.984, 42.030-66.413
+ C 187.402,42.508, 220.798,32, 256,32c 35.201,0, 68.599,10.508, 94.037,29.587c 27.395,20.545, 43.104,49.751, 43.104,80.127
+ c0,17.649-5.327,34.896-15.147,50.286L 480,192 L 480,224 z" />
+<glyph unicode="&#xe02c;" d="M 96,64l 288,0 l0-32 L 96,32 L 96,64 zM 320,416l0-192 c0-15.656-7.35-30.812-20.695-42.676C 283.834,167.573, 262.771,160, 240,160c-22.772,0-43.834,7.573-59.304,21.324
+ C 167.35,193.188, 160,208.344, 160,224L 160,416 L 96,416 l0-192 c0-70.691, 64.471-128, 144-128c 79.529,0, 144,57.309, 144,128L 384,416 L 320,416 z" />
+<glyph unicode="&#xe02b;" d="M 416,416l0-32 l-72,0 L 216,64l 72,0 l0-32 L 64,32 l0,32 l 72,0 L 264,384l-72,0 L 192,416 L 416,416 z" />
+<glyph unicode="&#xe02a;" d="M 312.721,232.909C 336.758,251.984, 352,280.337, 352,312c0,57.438-50.145,104-112,104L 128,416 l0-384 l 144,0
+ c 61.856,0, 112,46.562, 112,104C 384,180.098, 354.441,217.781, 312.721,232.909z M 192,328c0,13.255, 10.745,24, 24,24l 33.602,0
+ C 270.809,352, 288,330.51, 288,304s-17.191-48-38.398-48L 192,256 L 192,328 z M 273.6,96L 216,96 c-13.255,0-24,10.745-24,24l0,72 l 81.6,0
+ c 21.209,0, 38.4-21.49, 38.4-48S 294.809,96, 273.6,96z" />
+<glyph unicode="&#xe001;" d="M 425.373,358.627l-66.746,66.745C 346.183,437.818, 321.6,448, 304,448L 96,448 c-17.6,0-32-14.4-32-32l0-384 c0-17.6, 14.4-32, 32-32l 320,0
+ c 17.6,0, 32,14.4, 32,32L 448,304 C 448,321.6, 437.817,346.182, 425.373,358.627z M 402.745,336.001c 3.396-3.398, 6.896-9.581, 9.447-16.001L 320,320
+ L 320,412.193 c 6.42-2.55, 12.602-6.050, 16-9.448L 402.745,336.001z M 415.942,32L 96.057,32 c-0.020,0.017-0.041,0.038-0.057,0.058L 96,415.943
+ c 0.017,0.020, 0.038,0.041, 0.057,0.057L 288,416 l0-128 l 128,0 l0-255.942 C 415.983,32.038, 415.962,32.017, 415.942,32z" />
+<glyph unicode="&#xe000;" d="M 480,40L 480,335.969 L 368.031,448L 72,448 c-22.091,0-40-17.908-40-40l0-368 c0-22.092, 17.909-40, 40-40l 368,0
+ C 462.092,0, 480,17.908, 480,40z M 288,384l 32,0 l0-96 l-32,0 L 288,384 z M 352,64L 160,64 L 160,191.941 c 0.017,0.021, 0.038,0.041, 0.058,0.059l 191.885,0
+ c 0.020-0.018, 0.041-0.038, 0.058-0.059L 352,64L 352,64z M 416,64l-32,0 L 384,192 c0,17.6-14.4,32-32,32L 160,224 c-17.6,0-32-14.4-32-32l0-128 L 96,64 L 96,384
+ l 32,0 l0-96 c0-17.6, 14.4-32, 32-32l 160,0 c 17.6,0, 32,14.4, 32,32l0,85.505 l 64-64.036L 416,64 z" />
+<glyph unicode="&#xe01b;" d="M 32,384l0-352 l 448,0 L 480,384 L 32,384 z M 192,160l0,64 l 128,0 l0-64 L 192,160 z M 320,128l0-64 L 192,64 l0,64 L 320,128 z M 320,320l0-64 L 192,256 l0,64 L 320,320 z M 160,320l0-64 L 64,256 l0,64 L 160,320
+ z M 64,224l 96,0 l0-64 L 64,160 L 64,224 z M 352,224l 96,0 l0-64 l-96,0 L 352,224 z M 352,256l0,64 l 96,0 l0-64 L 352,256 z M 64,128l 96,0 l0-64 L 64,64 L 64,128 z M 352,64l0,64 l 96,0 l0-64 L 352,64 z" />
+<glyph unicode="&#xe021;" d="M 256,410c 49.683,0, 96.391-19.347, 131.521-54.478S 442,273.683, 442,224s-19.348-96.391-54.479-131.521S 305.683,38, 256,38
+ s-96.391,19.348-131.522,54.479S 70,174.317, 70,224s 19.347,96.391, 54.478,131.522S 206.317,410, 256,410 M 256,448
+ C 132.288,448, 32,347.712, 32,224s 100.288-224, 224-224s 224,100.288, 224,224S 379.712,448, 256,448L 256,448zM 160,288A32,32 1980 1 1 224,288A32,32 1980 1 1 160,288zM 288,288A32,32 1980 1 1 352,288A32,32 1980 1 1 288,288zM 256,152c-50.92,0-96.28,18.437-125.583,47.164C 141.98,140.36, 193.806,96, 256,96c 62.194,0, 114.020,44.36, 125.584,103.164
+ C 352.28,170.437, 306.92,152, 256,152z" />
+<glyph unicode="&#xe023;" d="M 240,288L 144,384L 208,448L 32,448L 32,272L 96,336L 192,240 zM 320,240L 416,336L 480,272L 480,448L 304,448L 368,384L 272,288 zM 272,160L 368,64L 304,0L 480,0L 480,176L 416,112L 320,208 zM 192,208L 96,112L 32,176L 32,0L 208,0L 144,64L 240,160 z" />
+<glyph unicode="&#xe01c;" d="M 32,256L 480,256L 480,192L 32,192z" />
+<glyph unicode="&#xe01d;" d="M 32,96l 256,0 l0-64 L 32,32 L 32,96 z M 384,384L 273.721,384 l-91.883-256l-66.144,0 l 91.881,256L 96,384 L 96,448 l 288,0 L 384,384 z M 464.887,32L 400,96.887
+ L 335.113,32L 304,63.113L 368.887,128L 304,192.887L 335.113,224L 400,159.113L 464.887,224L 496,192.887L 431.113,128L 496,63.113
+ L 464.887,32z" />
+<glyph unicode="&#xe022;" d="M 128,416l 256,0 l0-64 L 128,352 L 128,416 z M 448,320L 64,320 c-17.6,0-32-14.4-32-32l0-128 c0-17.6, 14.398-32, 32-32l 64,0 l0-96 l 256,0 l0,96 l 64,0
+ c 17.6,0, 32,14.4, 32,32L 480,288 C 480,305.6, 465.6,320, 448,320z M 352,64L 160,64 L 160,192 l 192,0 L 352,64 z M 455.2,272c0-12.813-10.387-23.2-23.199-23.2
+ S 408.8,259.187, 408.8,272s 10.389,23.2, 23.201,23.2C 444.814,295.2, 455.2,284.813, 455.2,272z" />
+<glyph unicode="&#xe02e;" d="M 192,416c-61.856,0-112-50.144-112-112s 50.144-112, 112-112l0-160 l 64,0 L 256,352 l 32,0 l0-320 l 64,0 L 352,352 l 64,0 L 416,416 L 192,416 z" />
+<glyph unicode="&#xe02f;" d="M 224,416c-61.856,0-112-50.144-112-112s 50.144-112, 112-112l0-160 l 64,0 L 288,352 l 32,0 l0-320 l 64,0 L 384,352 l 64,0 L 448,416 L 224,416 zM 32,32L 144,128L 32,224 z" />
+<glyph unicode="&#xe030;" d="M 160,416C 98.144,416, 48,365.856, 48,304s 50.144-112, 112-112l0-160 l 64,0 L 224,352 l 32,0 l0-320 l 64,0 L 320,352 l 64,0 L 384,416 L 160,416 zM 480,224L 368,128L 480,32 z" />
+<glyph unicode="&#xe026;" d="M 256,288L 320,288L 320,256L 256,256zM 256,96L 320,96L 320,64L 256,64zM 288,192L 352,192L 352,160L 288,160zM 384,192L 384,96L 352,96L 352,64L 416,64L 416,192 zM 192,192L 256,192L 256,160L 192,160zM 160,96L 224,96L 224,64L 160,64zM 160,288L 224,288L 224,256L 160,256zM 96,384L 96,256L 128,256L 128,352L 160,352L 160,384 zM 352,256L 416,256L 416,384L 384,384L 384,288L 352,288 zM 32,448l0-448 l 448,0 L 480,448 L 32,448 z M 448,32L 64,32 L 64,416 l 384,0 L 448,32 zM 96,192L 96,64L 128,64L 128,160L 160,160L 160,192 zM 288,384L 352,384L 352,352L 288,352zM 192,384L 256,384L 256,352L 192,352z" />
+<glyph unicode="&#xe027;" d="M 408,448l 8-192L 96,256 l 8,192l 16,0 l 8-160l 256,0 l 8,160L 408,448 z M 104,0l-8,160l 320,0 l-8-160l-16,0 l-8,128L 128,128 l-8-128L 104,0 zM 32,224L 96,224L 96,192L 32,192zM 128,224L 192,224L 192,192L 128,192zM 224,224L 288,224L 288,192L 224,192zM 320,224L 384,224L 384,192L 320,192zM 416,224L 480,224L 480,192L 416,192z" />
+<glyph unicode="&#xe024;" d="M 480,416L 480,448 l-96,0 c-17.601,0-32-14.4-32-32l0-160 c0-7.928, 2.929-15.201, 7.748-20.807L 208,105l-71,74l-41-35l 112-144l 208,224l 64,0
+ l0,32 l-96,0 L 384,416 L 480,416 zM 128,224l 32,0 L 160,416 c0,17.6-14.4,32-32,32L 64,448 c-17.6,0-32-14.4-32-32l0-192 l 32,0 l0,96 l 64,0 L 128,224 z M 64,352L 64,416 l 64,0 l0-64 L 64,352 zM 320,256l0,48 c0,17.6-4.4,32-22,32c 17.6,0, 22,14.4, 22,32L 320,416 c0,17.6-14.4,32-32,32l-96,0 l0-224 l 96,0 C 305.6,224, 320,238.4, 320,256z
+ M 224,416l 64,0 l0-64 l-64,0 L 224,416 z M 224,320l 64,0 l0-64 l-64,0 L 224,320 z" />
+<glyph unicode="&#xe025;" d="M 224,224l-64,0 l0,64 l 64,0 l0,64 l 64,0 l0-64 l 64,0 l0-64 l-64,0 l0-64 l-64,0 L 224,224 z M 480,192l0-160 L 32,32 L 32,192 l 64,0 l0-96 l 320,0 l0,96 L 480,192 z" />
+<glyph unicode="&#xe017;" d="M 208,128L 112,224L 208,320L 176,352L 48,224L 176,96 zM 336,352L 304,320L 400,224L 304,128L 336,96L 464,224 z" />
+<glyph unicode="&#xe016;" d="M 224,128l 64,0 l0-64 l-64,0 L 224,128 z M 352,352c 17.673,0, 32-14.327, 32-32l0-83 l-114-77l-46,0 l0,32 l 96,64l0,32 L 160,288 l0,64 L 352,352 z M 256,448
+ c-59.833,0-116.083-23.3-158.392-65.608C 55.301,340.083, 32,283.833, 32,224c0-59.832, 23.301-116.084, 65.608-158.392
+ C 139.917,23.3, 196.167,0, 256,0c 59.832,0, 116.084,23.3, 158.392,65.608C 456.7,107.916, 480,164.168, 480,224
+ c0,59.833-23.3,116.083-65.608,158.392C 372.084,424.7, 315.832,448, 256,448z" />
+<glyph unicode="&#xe014;" d="M 448,416L 64,416 c-17.6,0-32-14.4-32-32l0-320 c0-17.6, 14.4-32, 32-32l 384,0 c 17.6,0, 32,14.4, 32,32L 480,384 C 480,401.6, 465.6,416, 448,416z
+ M 448,64.058c-0.006-0.007-0.015-0.014-0.021-0.021L 352,224l-80-64L 160,304L 64.016,64.042c-0.005,0.005-0.011,0.011-0.016,0.016
+ L 64,383.943 c 0.017,0.020, 0.038,0.041, 0.057,0.057l 383.885,0 c 0.020-0.017, 0.041-0.038, 0.058-0.058L 448,64.058 zM 320,304A48,48 1980 1 1 416,304A48,48 1980 1 1 320,304z" />
+<glyph unicode="&#xe015;" d="M 448,416L 64,416 c-17.6,0-32-14.4-32-32l0-320 c0-17.6, 14.4-32, 32-32l 384,0 c 17.6,0, 32,14.4, 32,32L 480,384 C 480,401.6, 465.6,416, 448,416z
+ M 128,64L 64,64 l0,64 l 64,0 L 128,64 z M 128,192L 64,192 l0,64 l 64,0 L 128,192 z M 128,320L 64,320 L 64,384 l 64,0 L 128,320 z M 352,64L 160,64 L 160,384 l 192,0 L 352,64 z M 448,64l-64,0 l0,64 l 64,0 L 448,64 z
+ M 448,192l-64,0 l0,64 l 64,0 L 448,192 z M 448,320l-64,0 L 384,384 l 64,0 L 448,320 zM 192,320L 192,128L 336,224 z" />
+<glyph unicode="&#xe018;" d="M 38.899,327.688l 40.707-25.441C 105.007,342.804, 144,373.974, 190.21,389.37l-15.183,45.547
+ C 118.153,415.968, 70.163,377.604, 38.899,327.688zM 336.973,434.917L 321.79,389.37c 46.211-15.396, 85.202-46.566, 110.604-87.124l 40.706,25.441
+ C 441.837,377.604, 393.847,415.968, 336.973,434.917zM 303.987,127.996c-2.404,0-4.846,0.545-7.143,1.693L 224,166.111L 224,272 c0,8.836, 7.164,16, 16,16s 16-7.164, 16-16l0-86.111
+ l 55.155-27.578c 7.903-3.951, 11.107-13.562, 7.155-21.466C 315.508,131.238, 309.856,127.997, 303.987,127.996zM 256,384C 149.961,384, 64,298.039, 64,192c0-106.039, 85.961-192, 192-192c 106.039,0, 192,85.961, 192,192
+ C 448,298.039, 362.039,384, 256,384z M 256,48c-79.529,0-144,64.471-144,144c0,79.529, 64.471,144, 144,144c 79.529,0, 144-64.471, 144-144
+ C 400,112.471, 335.529,48, 256,48z" />
+<glyph unicode="&#xe019;" d="M 32,252.127c 22.659,24.96, 48.581,46.18, 76.636,62.562C 153.802,341.061, 204.759,355, 256,355
+ c 51.24,0, 102.198-13.939, 147.363-40.312c 28.056-16.382, 53.978-37.602, 76.637-62.562l0,58.716
+ c-16.505,14.059-34.062,26.57-52.434,37.297C 375.063,378.796, 315.737,395, 256,395s-119.064-16.204-171.567-46.86
+ C 66.062,337.413, 48.505,324.901, 32,310.842L 32,252.127 zM 256,320c-91.598,0-172.919-50.278-224-128c 51.081-77.724, 132.402-128, 224-128c 91.598,0, 172.919,50.276, 224,128
+ C 428.919,269.722, 347.598,320, 256,320z M 256,224c0-17.673-14.327-32-32-32s-32,14.327-32,32c0,17.674, 14.327,32, 32,32
+ S 256,241.674, 256,224z M 364.033,131.669C 330.316,111.982, 293.969,102, 256,102s-74.316,9.982-108.033,29.669
+ C 122.19,146.721, 98.659,167.324, 78.91,192c 19.749,24.675, 43.28,45.279, 69.058,60.33c 6.638,3.876, 13.379,7.37, 20.213,10.491
+ C 162.925,250.95, 160,237.817, 160,224c0-53.020, 42.981-96, 96-96c 53.020,0, 96,42.98, 96,96c0,13.817-2.925,26.95-8.18,38.821
+ c 6.834-3.122, 13.575-6.615, 20.213-10.491c 25.777-15.051, 49.308-35.655, 69.058-60.33
+ C 413.342,167.324, 389.811,146.721, 364.033,131.669z" />
+<glyph unicode="&#xe01a;" d="M 325.584,338.083C 313.278,379.064, 311.146,384, 272,384l-32,0 c-39.809,0-41.332-5.076-54.209-48c0-0.001,0-0.001-0.001-0.002
+ L 113.791,96l 56.818,0 l 28.8,96l 113.183,0 l 28.8-96l 56.815,0 L 325.584,338.083z M 218.609,256l 19.2,68c 5.043,16.809, 18.19,15, 18.19,15
+ s 13.147,1.809, 18.19-15l 0.002,0 l 19.2-68L 218.609,256 z" />
+<glyph unicode="&#xe028;" d="M 288,448 C 411.712,448 512,347.712 512,224 C 512,100.288 411.712,0 288,0 L 288,48 C 335.012,48 379.209,66.307 412.451,99.549 C 445.693,132.791 464,176.988 464,224 C 464,271.011 445.693,315.209 412.451,348.451 C 379.209,381.693 335.012,400 288,400 C 240.989,400 196.791,381.693 163.549,348.451 C 137.979,322.882 121.258,290.828 114.896,256 L 208,256 L 96,128 L -16,256 L 66.285,256 C 81.815,364.551 175.154,448 288,448 ZM 384,256 L 384,192 L 256,192 L 256,352 L 320,352 L 320,256 Z" />
+<glyph unicode="&#xe002;" d="M 512,183.771l0,80.458 l-79.572,7.957c-4.093,15.021-10.044,29.274-17.605,42.49l 52.298,63.919L 410.595,435.12l-63.918-52.298
+ c-13.217,7.562-27.471,13.513-42.491,17.604L 296.229,480l-80.458,0 l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604
+ L 101.405,435.12L 44.88,378.595l 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49L0,264.229l0-80.458 l 79.573-7.957
+ c 4.093-15.021, 10.043-29.274, 17.605-42.491L 44.88,69.405l 56.524-56.524l 63.919,52.298c 13.216-7.562, 27.47-13.514, 42.49-17.605
+ L 215.771-32l 80.458,0 l 7.957,79.572c 15.021,4.093, 29.274,10.044, 42.491,17.605l 63.918-52.298l 56.524,56.524l-52.298,63.918
+ c 7.562,13.217, 13.514,27.471, 17.605,42.49L 512,183.771z M 352,192l-64-64l-64,0 l-64,64l0,64 l 64,64l 64,0 l 64-64L 352,192 z" />
+<glyph unicode="&#xe01f;" d="M 384,377 L 384,352 L 448,352 L 448,320 L 352,320 L 352,393 L 416,423 L 416,448 L 352,448 L 352,480 L 448,480 L 448,407 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" />
+<glyph unicode="&#xe01e;" d="M 384,25 L 384,0 L 448,0 L 448-32 L 352-32 L 352,41 L 416,71 L 416,96 L 352,96 L 352,128 L 448,128 L 448,55 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" />
+<glyph unicode="&#xe035;" d="M 352,288l0,80 c0,8.8-7.2,16-16,16l-80,0 L 256,416 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,384 c-8.801,0-16-7.2-16-16
+ l0-256 c0-8.8, 7.199-16, 16-16l 112,0 l0-96 l 288,0 L 448,288 L 352,288 z M 160,415.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 224,384 l-64,0 L 160,415.943 z M 96,320l0,32 l 192,0 l0-32 L 96,320 z M 416,32L 192,32 L 192,256 l 224,0 L 416,32 zM 224,224L 224,160L 240,160L 256,192L 288,192L 288,96L 264,96L 264,64L 344,64L 344,96L 320,96L 320,192L 352,192L 368,160L 384,160L 384,224 z" />
+<glyph unicode="&#xe032;" d="M 384,352L 416,352L 416,320L 384,320zM 320,288L 352,288L 352,256L 320,256zM 320,224L 352,224L 352,192L 320,192zM 320,160L 352,160L 352,128L 320,128zM 256,224L 288,224L 288,192L 256,192zM 256,160L 288,160L 288,128L 256,128zM 192,160L 224,160L 224,128L 192,128zM 384,288L 416,288L 416,256L 384,256zM 384,224L 416,224L 416,192L 384,192zM 384,160L 416,160L 416,128L 384,128zM 384,96L 416,96L 416,64L 384,64zM 320,96L 352,96L 352,64L 320,64zM 256,96L 288,96L 288,64L 256,64zM 192,96L 224,96L 224,64L 192,64zM 128,96L 160,96L 160,64L 128,64z" />
+<glyph unicode="&#xe034;" d="M 464,416L 256,416L 240,448L 64,448L 32,384L 480,384 zM 420.17,128L 464,128 l 16,224L 32,352 l 32-320l 178.040,0 C 189.599,50.888, 152,101.133, 152,160c0,74.991, 61.009,136, 136,136
+ c 74.99,0, 136-61.009, 136-136C 424,149.161, 422.689,138.425, 420.17,128zM 437.498,55.125l-67.248,55.346C 378.977,124.932, 384,141.878, 384,160c0,53.020-42.98,96-96,96s-96-42.98-96-96
+ s 42.98-96, 96-96c 18.122,0, 35.069,5.023, 49.529,13.75l 55.346-67.248c 11.481-13.339, 31.059-14.070, 43.503-1.626l 2.746,2.746
+ C 451.568,24.066, 450.837,43.644, 437.498,55.125z M 288,98c-34.242,0-62,27.758-62,62s 27.758,62, 62,62s 62-27.758, 62-62
+ S 322.242,98, 288,98z" />
+<glyph unicode="&#x20;" horiz-adv-x="256" />
+</font></defs></svg> \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.ttf b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.ttf
new file mode 100755
index 00000000..841c79c1
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.ttf
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.woff b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.woff
new file mode 100755
index 00000000..ad14a240
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon-small.woff
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.eot b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.eot
new file mode 100755
index 00000000..eed4f814
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.eot
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.svg b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.svg
new file mode 100755
index 00000000..727f61af
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG font generated by IcoMoon.
+<iconset grid="16"></iconset>
+</metadata>
+<defs>
+<font id="icomoon" horiz-adv-x="512" >
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
+<glyph unicode="&#xe034;" d="M 464,416L 256,416L 240,448L 64,448L 32,384L 480,384 zM 452.17,128l 37.43,0 L 512,352L0,352 l 32-320l 242.040,0 C 221.599,50.888, 184,101.133, 184,160c0,74.991, 61.009,136, 136,136
+ c 74.99,0, 136-61.009, 136-136C 456,149.161, 454.689,138.425, 452.17,128zM 501.498,23.125l-99.248,87.346C 410.977,124.931, 416,141.878, 416,160c0,53.020-42.98,96-96,96s-96-42.98-96-96
+ s 42.98-96, 96-96c 18.122,0, 35.069,5.023, 49.529,13.75l 87.346-99.248c 11.481-13.339, 31.059-14.070, 43.503-1.626l 2.746,2.746
+ C 515.568-7.934, 514.837,11.644, 501.498,23.125z M 320,98c-34.242,0-62,27.758-62,62s 27.758,62, 62,62s 62-27.758, 62-62
+ S 354.242,98, 320,98z" />
+<glyph unicode="&#xe032;" d="M 384,352L 416,352L 416,320L 384,320zM 320,288L 352,288L 352,256L 320,256zM 320,224L 352,224L 352,192L 320,192zM 320,160L 352,160L 352,128L 320,128zM 256,224L 288,224L 288,192L 256,192zM 256,160L 288,160L 288,128L 256,128zM 192,160L 224,160L 224,128L 192,128zM 384,288L 416,288L 416,256L 384,256zM 384,224L 416,224L 416,192L 384,192zM 384,160L 416,160L 416,128L 384,128zM 384,96L 416,96L 416,64L 384,64zM 320,96L 352,96L 352,64L 320,64zM 256,96L 288,96L 288,64L 256,64zM 192,96L 224,96L 224,64L 192,64zM 128,96L 160,96L 160,64L 128,64z" />
+<glyph unicode="&#xe031;" d="M 416,352l-96,0 L 320,384 L 224,480L0,480 l0-384 l 192,0 l0-128 l 320,0 L 512,256 L 416,352z M 416,306.745L 466.745,256L 416,256 L 416,306.745 z M 224,434.745L 274.745,384L 224,384
+ L 224,434.745 z M 32,448l 160,0 l0-96 l 96,0 l0-224 L 32,128 L 32,448 z M 480,0L 224,0 l0,96 l 96,0 L 320,320 l 64,0 l0-96 l 96,0 L 480,0 z" />
+<glyph unicode="&#xe030;" d="M 128,448 L 384,448 L 384,384 L 320,384 L 320,0 L 256,0 L 256,384 L 192,384 L 192,0 L 128,0 L 128,224 C 66.144,224 16,274.144 16,336 C 16,397.856 66.144,448 128,448 ZM 480,32L 352,144L 480,256 z" />
+<glyph unicode="&#xe02f;" d="M 224,448 L 480,448 L 480,384 L 416,384 L 416,0 L 352,0 L 352,384 L 288,384 L 288,0 L 224,0 L 224,224 C 162.144,224 112,274.144 112,336 C 112,397.856 162.144,448 224,448 ZM 32,256L 160,144L 32,32 z" />
+<glyph unicode="&#xe02e;" d="M 192,448 L 448,448 L 448,384 L 384,384 L 384,0 L 320,0 L 320,384 L 256,384 L 256,0 L 192,0 L 192,224 C 130.144,224 80,274.144 80,336 C 80,397.856 130.144,448 192,448 Z" />
+<glyph unicode="&#xe02d;" d="M 365.71,221.482 C 397.67,197.513 416,163.439 416,128 C 416,92.561 397.67,58.487 365.71,34.518 C 336.031,12.259 297.068,0 256,0 C 214.931,0 175.969,12.259 146.29,34.518 C 114.33,58.487 96,92.561 96,128 L 160,128 C 160,93.309 203.963,64 256,64 C 308.037,64 352,93.309 352,128 C 352,162.691 308.037,192 256,192 C 214.931,192 175.969,204.259 146.29,226.518 C 114.33,250.488 96,284.561 96,320 C 96,355.439 114.33,389.512 146.29,413.482 C 175.969,435.741 214.931,448 256,448 C 297.068,448 336.031,435.741 365.71,413.482 C 397.67,389.512 416,355.439 416,320 L 352,320 C 352,354.691 308.037,384 256,384 C 203.963,384 160,354.691 160,320 C 160,285.309 203.963,256 256,256 C 297.068,256 336.031,243.741 365.71,221.482 ZM0,224L 512,224L 512,192L0,192z" />
+<glyph unicode="&#xe02c;" d="M 352,448 L 416,448 L 416,240 C 416,160.471 344.366,96 256,96 C 167.635,96 96,160.471 96,240 L 96,448 L 160,448 L 160,240 C 160,219.917 169.119,200.648 185.677,185.747 C 204.125,169.145 229.1,160 256,160 C 282.9,160 307.875,169.145 326.323,185.747 C 342.881,200.648 352,219.917 352,240 L 352,448 ZM 96,64L 416,64L 416,0L 96,0z" />
+<glyph unicode="&#xe02b;" d="M 448,448 L 448,416 L 384,416 L 224,32 L 288,32 L 288,0 L 64,0 L 64,32 L 128,32 L 288,416 L 224,416 L 224,448 Z" />
+<glyph unicode="&#xe02a;" d="M 353.94,237.674C 372.689,259.945, 384,288.678, 384,320c0,70.58-57.421,128-128,128l-64,0 l-64,0 L 96,448 l0-448 l 32,0 l 64,0 l 96,0
+ c 70.579,0, 128,57.421, 128,128C 416,174.478, 391.101,215.248, 353.94,237.674z M 192,384l 50.75,0 c 27.984,0, 50.75-28.71, 50.75-64
+ s-22.766-64-50.75-64L 192,256 L 192,384 z M 271.5,64L 192,64 L 192,192 l 79.5,0 c 29.225,0, 53-28.71, 53-64S 300.725,64, 271.5,64z" />
+<glyph unicode="&#xe029;" d="M 192,64L 288,64L 288-32L 192-32zM 400,448 C 426.51,448 448,426.51 448,400 L 448,256 L 288,160 L 288,96 L 192,96 L 192,192 L 352,288 L 352,352 L 96,352 L 96,448 L 400,448 Z" />
+<glyph unicode="&#xe028;" d="M 288,448 C 411.712,448 512,347.712 512,224 C 512,100.288 411.712,0 288,0 L 288,48 C 335.012,48 379.209,66.307 412.451,99.549 C 445.693,132.791 464,176.988 464,224 C 464,271.011 445.693,315.209 412.451,348.451 C 379.209,381.693 335.012,400 288,400 C 240.989,400 196.791,381.693 163.549,348.451 C 137.979,322.882 121.258,290.828 114.896,256 L 208,256 L 96,128 L -16,256 L 66.285,256 C 81.815,364.551 175.154,448 288,448 ZM 384,256 L 384,192 L 256,192 L 256,352 L 320,352 L 320,256 Z" />
+<glyph unicode="&#xe027;" d="M0,224L 64,224L 64,192L0,192zM 96,224L 192,224L 192,192L 96,192zM 224,224L 288,224L 288,192L 224,192zM 320,224L 416,224L 416,192L 320,192zM 448,224L 512,224L 512,192L 448,192zM 440,480 L 448,256 L 64,256 L 72,480 L 88,480 L 96,288 L 416,288 L 424,480 ZM 72-32 L 64,160 L 448,160 L 440-32 L 424-32 L 416,128 L 96,128 L 88-32 Z" />
+<glyph unicode="&#xe026;" d="M 192,384L 256,384L 256,352L 192,352zM 288,384L 352,384L 352,352L 288,352zM 448,384 L 448,256 L 352,256 L 352,288 L 416,288 L 416,352 L 384,352 L 384,384 ZM 160,288L 224,288L 224,256L 160,256zM 256,288L 320,288L 320,256L 256,256zM 96,352 L 96,288 L 128,288 L 128,256 L 64,256 L 64,384 L 160,384 L 160,352 ZM 192,192L 256,192L 256,160L 192,160zM 288,192L 352,192L 352,160L 288,160zM 448,192 L 448,64 L 352,64 L 352,96 L 416,96 L 416,160 L 384,160 L 384,192 ZM 160,96L 224,96L 224,64L 160,64zM 256,96L 320,96L 320,64L 256,64zM 96,160 L 96,96 L 128,96 L 128,64 L 64,64 L 64,192 L 160,192 L 160,160 ZM 480,448 L 32,448 L 32,0 L 480,0 L 480,448 Z M 512,480 L 512,480 L 512-32 L 0-32 L 0,480 L 512,480 Z" />
+<glyph unicode="&#xe025;" d="M 224,192 L 128,192 L 128,256 L 224,256 L 224,352 L 288,352 L 288,256 L 384,256 L 384,192 L 288,192 L 288,96 L 224,96 ZM 512,160 L 512-32 L 0-32 L 0,160 L 64,160 L 64,32 L 448,32 L 448,160 Z" />
+<glyph unicode="&#xe024;" d="M 64,352l 64,0 l0-96 l 32,0 L 160,448 c0,17.6-14.4,32-32,32L 64,480 C 46.4,480, 32,465.6, 32,448l0-192 l 32,0 L 64,352 z M 64,448l 64,0 l0-64 L 64,384 L 64,448 z M 480,448L 480,480 l-96,0
+ c-17.601,0-32-14.4-32-32l0-160 c0-17.6, 14.399-32, 32-32l 96,0 l0,32 l-96,0 L 384,448 L 480,448 z M 320,400L 320,448 c0,17.6-14.4,32-32,32l-96,0 l0-224 l 96,0
+ c 17.6,0, 32,14.4, 32,32l0,48 c0,17.6-4.4,32-22,32C 315.6,368, 320,382.4, 320,400z M 288,288l-64,0 l0,64 l 64,0 L 288,288 z M 288,384l-64,0 L 224,448 l 64,0 L 288,384 zM 416,192 L 208-32 L 96,112 L 137,147 L 208,73 L 384,224 Z" />
+<glyph unicode="&#xe023;" d="M 512,480 L 512,288 L 442.87,357.13 L 336.87,251.13 L 283.13,304.87 L 389.13,410.87 L 320,480 ZM 122.87,410.87 L 228.87,304.87 L 175.13,251.13 L 69.13,357.13 L 0,288 L 0,480 L 192,480 ZM 442.87,90.87 L 512,160 L 512-32 L 320-32 L 389.13,37.13 L 283.13,143.13 L 336.87,196.87 ZM 228.87,143.13 L 122.87,37.13 L 192-32 L 0-32 L 0,160 L 69.13,90.87 L 175.13,196.87 Z" />
+<glyph unicode="&#xe022;" d="M 128,448L 384,448L 384,384L 128,384zM 480,352L 32,352 C 14.4,352,0,337.6,0,320l0-160 c0-17.6, 14.398-32, 32-32l 96,0 l0-128 l 256,0 L 384,128 l 96,0 c 17.6,0, 32,14.4, 32,32L 512,320
+ C 512,337.6, 497.6,352, 480,352z M 352,32L 160,32 L 160,192 l 192,0 L 352,32 z M 487.2,304c0-12.813-10.387-23.2-23.199-23.2
+ c-12.813,0-23.201,10.387-23.201,23.2s 10.388,23.2, 23.201,23.2C 476.814,327.2, 487.2,316.813, 487.2,304z" />
+<glyph unicode="&#xe021;" d="M 256,480C 114.615,480,0,365.386,0,224c0-141.385, 114.614-256, 256-256c 141.385,0, 256,114.615, 256,256
+ C 512,365.386, 397.385,480, 256,480z M 256,8c-119.293,0-216,96.706-216,216c0,119.293, 96.707,216, 216,216c 119.295,0, 216-96.707, 216-216
+ C 472,104.706, 375.295,8, 256,8z M 192,320c0-17.673-14.327-32-32-32s-32,14.327-32,32s 14.327,32, 32,32S 192,337.673, 192,320z
+ M 384,320c0-17.673-14.326-32-32-32s-32,14.327-32,32s 14.326,32, 32,32S 384,337.673, 384,320zM 256,154 C 326.537,154 387.344,182.766 415.231,215.596 C 404.795,129.986 337.087,64 256,64 C 174.941,64 107.251,130.013 96.778,215.584 C 124.671,182.761 185.471,154 256,154 Z" />
+<glyph unicode="&#xe020;" d="M 352,32 L 480,32 L 512,96 L 512-32 L 320-32 L 320,75.107 C 385.556,103.349 432,173.688 432,256 C 432,363.216 353.201,447.133 256,447.133 C 158.797,447.133 80,363.217 80,256 C 80,173.688 126.443,103.349 192,75.107 L 192-32 L 0-32 L 0,96 L 32,32 L 160,32 L 160,48.295 C 66.185,81.525 0,161.996 0,256 C 0,379.712 114.615,480 256,480 C 397.385,480 512,379.712 512,256 C 512,161.996 445.815,81.525 352,48.295 L 352,32 Z" />
+<glyph unicode="&#xe01f;" d="M 384,377 L 384,352 L 448,352 L 448,320 L 352,320 L 352,393 L 416,423 L 416,448 L 352,448 L 352,480 L 448,480 L 448,407 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" />
+<glyph unicode="&#xe01e;" d="M 384,25 L 384,0 L 448,0 L 448-32 L 352-32 L 352,41 L 416,71 L 416,96 L 352,96 L 352,128 L 448,128 L 448,55 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" />
+<glyph unicode="&#xe01d;" d="M0,32L 288,32L 288-32L0-32zM 96,480L 448,480L 448,416L 96,416zM 138.694,64 L 241.038,456.082 L 302.963,439.918 L 204.838,64 ZM 464.887-32 L 400,32.887 L 335.113-32 L 304-0.887 L 368.887,64 L 304,128.887 L 335.113,160 L 400,95.113 L 464.887,160 L 496,128.887 L 431.113,64 L 496-0.887 Z" />
+<glyph unicode="&#xe01c;" d="M0,256L 512,256L 512,192L0,192z" />
+<glyph unicode="&#xe01b;" d="M0,448l0-448 l 512,0 L 512,448 L0,448 z M 192,160l0,96 l 128,0 l0-96 L 192,160 z M 320,128l0-96 L 192,32 l0,96 L 320,128 z M 320,384l0-96 L 192,288 L 192,384 L 320,384 z M 160,384l0-96 L 32,288 L 32,384 L 160,384 z
+ M 32,256l 128,0 l0-96 L 32,160 L 32,256 z M 352,256l 128,0 l0-96 L 352,160 L 352,256 z M 352,288L 352,384 l 128,0 l0-96 L 352,288 z M 32,128l 128,0 l0-96 L 32,32 L 32,128 z M 352,32l0,96 l 128,0 l0-96 L 352,32 z" />
+<glyph unicode="&#xe01a;" d="M 161.009,64l 28.8,96l 132.382,0 l 28.8-96l 56.816,0 L 311.809,384L 200.191,384 l-96-320L 161.009,64 z M 237.809,320l 36.382,0 l 28.8-96l-93.982,0
+ L 237.809,320z" />
+<glyph unicode="&#xe019;" d="M 256,320C 151.316,320, 58.378,269.722,0,192c 58.378-77.723, 151.316-128, 256-128c 104.684,0, 197.622,50.277, 256,128
+ C 453.622,269.722, 360.684,320, 256,320z M 224,256c 17.673,0, 32-14.327, 32-32s-14.327-32-32-32s-32,14.327-32,32S 206.327,256, 224,256z
+ M 386.808,127.352c-19.824-10.129-40.826-17.931-62.423-23.188C 302.141,98.746, 279.134,96, 256,96
+ c-23.133,0-46.141,2.746-68.384,8.162c-21.597,5.259-42.599,13.061-62.423,23.188c-31.51,16.101-60.111,38.205-83.82,64.649
+ c 23.709,26.444, 52.31,48.55, 83.82,64.649c 16.168,8.261, 33.121,14.973, 50.541,20.020C 165.79,261.547, 160,243.451, 160,224
+ c0-53.020, 42.981-96, 96-96c 53.019,0, 96,42.98, 96,96c0,19.451-5.791,37.547-15.733,52.67c 17.419-5.048, 34.372-11.76, 50.541-20.021
+ c 31.511-16.099, 60.109-38.204, 83.819-64.649C 446.917,165.557, 418.318,143.45, 386.808,127.352z M 430.459,358.139
+ C 376.099,385.916, 317.403,400, 256,400c-61.403,0-120.099-14.084-174.459-41.861C 52.155,343.123, 24.675,324.187,0,302.101l0-54.603
+ c 27.669,29.283, 60.347,53.877, 96.097,72.145C 145.907,345.095, 199.706,358, 256,358s 110.093-12.905, 159.902-38.358
+ c 35.751-18.268, 68.429-42.862, 96.098-72.145L 512,302.1 C 487.325,324.187, 459.846,343.123, 430.459,358.139z" />
+<glyph unicode="&#xe018;" d="M 256,384C 149.962,384, 64,298.039, 64,192s 85.961-192, 192-192c 106.037,0, 192,85.961, 192,192S 362.037,384, 256,384z
+ M 357.822,90.177C 330.626,62.979, 294.464,48, 256,48s-74.625,14.979-101.823,42.177C 126.979,117.374, 112,153.536, 112,192
+ s 14.979,74.625, 42.177,101.823C 181.375,321.021, 217.536,336, 256,336s 74.626-14.979, 101.821-42.177
+ C 385.022,266.625, 400,230.464, 400,192S 385.021,117.374, 357.822,90.177zM 162.965,378.069l-21.47,42.939C 92.058,396.24, 51.76,355.942, 26.992,306.504l 42.938-21.47
+ C 90.054,325.202, 122.796,357.945, 162.965,378.069zM 442.067,285.035l 42.939,21.469C 460.24,355.942, 419.943,396.24, 370.504,421.008l-21.472-42.939
+ C 389.201,357.945, 421.944,325.203, 442.067,285.035zM 256,288l-32,0 l0-96 c0-5.055, 2.35-9.555, 6.011-12.486l-0.006-0.008l 80-64l 19.988,24.988L 256,199.689L 256,288 z" />
+<glyph unicode="&#xe017;" d="M 160,352L 32,224L 160,96L 224,96L 96,224L 224,352 zM 352,352L 288,352L 416,224L 288,96L 352,96L 480,224 z" />
+<glyph unicode="&#xe016;" d="M 224,128L 288,128L 288,64L 224,64zM 352,352 C 369.673,352 384,337.673 384,320 L 384,224 L 288,160 L 224,160 L 224,192 L 320,256 L 320,288 L 160,288 L 160,352 L 352,352 ZM 256,432 C 200.441,432 148.208,410.364 108.922,371.078 C 69.636,331.792 48,279.559 48,224 C 48,168.441 69.636,116.208 108.922,76.922 C 148.208,37.636 200.441,16 256,16 C 311.559,16 363.792,37.636 403.078,76.922 C 442.364,116.208 464,168.441 464,224 C 464,279.559 442.364,331.792 403.078,371.078 C 363.792,410.364 311.559,432 256,432 Z M 256,480 L 256,480 C 397.385,480 512,365.385 512,224 C 512,82.615 397.385-32 256-32 C 114.615-32 0,82.615 0,224 C 0,365.385 114.615,480 256,480 Z" />
+<glyph unicode="&#xe015;" d="M0,416l0-384 l 512,0 L 512,416 L0,416 z M 96,64L 32,64 l0,64 l 64,0 L 96,64 z M 96,192L 32,192 l0,64 l 64,0 L 96,192 z M 96,320L 32,320 L 32,384 l 64,0 L 96,320 z M 384,64L 128,64 L 128,384 l 256,0 L 384,64 z
+ M 480,64l-64,0 l0,64 l 64,0 L 480,64 z M 480,192l-64,0 l0,64 l 64,0 L 480,192 z M 480,320l-64,0 L 416,384 l 64,0 L 480,320 zM 192,320L 192,128L 320,224 z" />
+<glyph unicode="&#xe014;" d="M0,416l0-416 l 512,0 L 512,416 L0,416 z M 480,32L 32,32 L 32,384 l 448,0 L 480,32 zM 352,304A48,48 1980 1 0 448,304A48,48 1980 1 0 352,304zM 448,64 L 64,64 L 160,320 L 288,160 L 352,208 Z" />
+<glyph unicode="&#xe013;" d="M 96,480l0-512 l 160,160l 160-160L 416,480 L 96,480 z M 384,45.255l-128,128l-128-128L 128,448 l 256,0 L 384,45.255 z" />
+<glyph unicode="&#xe012;" d="M 238.444,142.443c 2.28-4.524, 3.495-9.579, 3.495-14.848c0-8.808-3.372-17.029-9.496-23.154l-81.69-81.69
+ c-6.124-6.124-14.348-9.496-23.154-9.496s-17.030,3.372-23.154,9.496l-49.69,49.69c-6.124,6.125-9.496,14.348-9.496,23.154
+ s 3.372,17.030, 9.496,23.154l 81.69,81.691c 6.124,6.123, 14.348,9.496, 23.154,9.496c 5.269,0, 10.322-1.215, 14.848-3.494l 32.669,32.668
+ c-13.935,10.705-30.72,16.080-47.517,16.080c-19.993,0-39.986-7.583-55.154-22.751l-81.69-81.691
+ c-30.335-30.335-30.335-79.975,0-110.309l 49.69-49.691c 15.167-15.166, 35.16-22.75, 55.153-22.75
+ c 19.994,0, 39.987,7.584, 55.154,22.751l 81.69,81.69c 27.91,27.91, 30.119,72.149, 6.672,102.673L 238.444,142.443zM 489.248,407.558l-49.69,49.691C 424.391,472.417, 404.398,480, 384.404,480c-19.993,0-39.985-7.583-55.153-22.751l-81.691-81.691
+ c-27.91-27.91-30.119-72.149-6.671-102.671l 32.669,32.67c-2.279,4.525-3.494,9.58-3.494,14.847c0,8.808, 3.372,17.030, 9.496,23.154
+ l 81.691,81.691c 6.123,6.124, 14.347,9.497, 23.153,9.497c 8.808,0, 17.030-3.373, 23.154-9.497l 49.69-49.691
+ c 6.124-6.124, 9.496-14.347, 9.496-23.154c0-8.807-3.372-17.030-9.496-23.154l-81.69-81.691c-6.124-6.124-14.347-9.496-23.154-9.496
+ c-5.268,0-10.322,1.215-14.848,3.495l-32.669-32.669c 13.936-10.705, 30.72-16.080, 47.517-16.080c 19.994,0, 39.987,7.584, 55.154,22.752
+ l 81.69,81.69C 519.584,327.584, 519.584,377.223, 489.248,407.558zM 116.684,340.688L 20.687,436.685L 43.315,459.313L 139.312,363.316zM 192,480L 224,480L 224,384L 192,384zM0,288L 96,288L 96,256L0,256zM 395.316,107.312L 491.314,11.314L 468.686-11.314L 372.688,84.684zM 288,64L 320,64L 320-32L 288-32zM 416,192L 512,192L 512,160L 416,160z" />
+<glyph unicode="&#xe011;" d="M 160,128c 8.8-8.8, 23.637-8.363, 32.971,0.971L 351.030,287.029C 360.364,296.363, 360.8,311.2, 352,320
+ s-23.637,8.363-32.971-0.971L 160.971,160.971C 151.637,151.637, 151.2,136.8, 160,128zM 238.444,142.444c 2.28-4.525, 3.495-9.58, 3.495-14.848c0-8.808-3.372-17.030-9.496-23.154l-81.691-81.691
+ c-6.124-6.124-14.347-9.496-23.154-9.496s-17.030,3.372-23.154,9.496l-49.691,49.691c-6.124,6.124-9.496,14.347-9.496,23.154
+ s 3.372,17.030, 9.496,23.154l 81.691,81.691c 6.124,6.124, 14.347,9.497, 23.154,9.497c 5.268,0, 10.322-1.215, 14.848-3.495l 32.669,32.669
+ c-13.935,10.705-30.72,16.080-47.517,16.080c-19.993,0-39.986-7.583-55.154-22.751l-81.691-81.691
+ c-30.335-30.335-30.335-79.974,0-110.309l 49.691-49.691C 87.611-24.416, 107.604-32, 127.597-32
+ c 19.994,0, 39.987,7.584, 55.154,22.751l 81.691,81.691c 27.91,27.91, 30.119,72.149, 6.672,102.672L 238.444,142.444zM 489.249,407.558l-49.691,49.691C 424.391,472.417, 404.398,480, 384.404,480c-19.993,0-39.986-7.583-55.154-22.751l-81.691-81.691
+ c-27.91-27.91-30.119-72.149-6.671-102.671l 32.669,32.67c-2.279,4.525-3.494,9.58-3.494,14.847c0,8.808, 3.372,17.030, 9.496,23.154
+ l 81.691,81.691c 6.124,6.124, 14.347,9.497, 23.154,9.497s 17.030-3.373, 23.154-9.497l 49.691-49.691
+ c 6.124-6.124, 9.496-14.347, 9.496-23.154s-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496
+ c-5.268,0-10.322,1.215-14.848,3.495l-32.669-32.669c 13.936-10.705, 30.72-16.080, 47.517-16.080c 19.994,0, 39.987,7.584, 55.154,22.751
+ l 81.691,81.691C 519.584,327.584, 519.584,377.223, 489.249,407.558z" />
+<glyph unicode="&#xe010;" d="M 288,355.814L 288,480 l 192-192L 288,96L 288,222.912 C 64.625,228.153, 74.206,71.016, 131.070-32
+ C-9.286,119.707, 20.52,362.785, 288,355.814z" />
+<glyph unicode="&#xe00f;" d="M 380.931-32C 437.794,71.016, 447.375,228.153, 224,222.912L 224,96 L 32,288L 224,480l0-124.186
+ C 491.481,362.785, 521.285,119.707, 380.931-32z" />
+<glyph unicode="&#xe00e;" d="M 112.5,256 C 174.356,256 224.5,205.855 224.5,144 C 224.5,82.144 174.356,32 112.5,32 C 50.644,32 0.5,82.144 0.5,144 L 0,160 C 0,283.712 100.288,384 224,384 L 224,320 C 181.263,320 141.083,303.357 110.863,273.137 C 105.046,267.319 99.737,261.129 94.948,254.627 C 100.667,255.527 106.528,256 112.5,256 ZM 400.5,256 C 462.355,256 512.5,205.855 512.5,144 C 512.5,82.144 462.355,32 400.5,32 C 338.645,32 288.5,82.144 288.5,144 L 288,160 C 288,283.712 388.288,384 512,384 L 512,320 C 469.263,320 429.083,303.357 398.863,273.137 C 393.045,267.319 387.736,261.129 382.947,254.627 C 388.667,255.527 394.527,256 400.5,256 Z" />
+<glyph unicode="&#xe00d;" d="M0,448L 512,448L 512,384L0,384zM 192,352L 512,352L 512,288L 192,288zM 192,256L 512,256L 512,192L 192,192zM 192,160L 512,160L 512,96L 192,96zM0,64L 512,64L 512,0L0,0zM 128,320 L 128,128 L 0,224 Z" />
+<glyph unicode="&#xe00c;" d="M0,448L 512,448L 512,384L0,384zM 192,352L 512,352L 512,288L 192,288zM 192,256L 512,256L 512,192L 192,192zM 192,160L 512,160L 512,96L 192,96zM0,64L 512,64L 512,0L0,0zM 0,128 L 0,320 L 128,224 Z" />
+<glyph unicode="&#xe00b;" d="M 192,64L 512,64L 512,0L 192,0zM 192,256L 512,256L 512,192L 192,192zM 192,448L 512,448L 512,384L 192,384zM 96,480 L 96,352 L 64,352 L 64,448 L 32,448 L 32,480 ZM 64,217 L 64,192 L 128,192 L 128,160 L 32,160 L 32,233 L 96,263 L 96,288 L 32,288 L 32,320 L 128,320 L 128,247 ZM 128,128 L 128-32 L 32-32 L 32,0 L 96,0 L 96,32 L 32,32 L 32,64 L 96,64 L 96,96 L 32,96 L 32,128 Z" />
+<glyph unicode="&#xe00a;" d="M 192,448l 320,0 l0-64 L 192,384 L 192,448 z M 192,256l 320,0 l0-64 L 192,192 L 192,256 z M 192,64l 320,0 l0-64 L 192,0 L 192,64 zM0,416A64,64 1980 1 0 128,416A64,64 1980 1 0 0,416zM0,224A64,64 1980 1 0 128,224A64,64 1980 1 0 0,224zM0,32A64,64 1980 1 0 128,32A64,64 1980 1 0 0,32z" />
+<glyph unicode="&#xe009;" d="M 32,480L 224,480L 224,448L 32,448zM 288,480L 480,480L 480,448L 288,448zM 476,320l-28,0 L 448,448 L 320,448 l0-128 L 192,320 L 192,448 L 64,448 l0-128 L 36,320 c-19.8,0-36-16.2-36-36l0-280 c0-19.8, 16.2-36, 36-36l 152,0 c 19.8,0, 36,16.2, 36,36L 224,192 l 64,0
+ l0-188 c0-19.8, 16.2-36, 36-36l 152,0 c 19.8,0, 36,16.2, 36,36L 512,284 C 512,303.8, 495.8,320, 476,320z M 174,0L 50,0 c-9.9,0-18,7.2-18,16
+ s 8.1,16, 18,16l 124,0 c 9.9,0, 18-7.2, 18-16S 183.9,0, 174,0z M 272,224l-32,0 c-8.8,0-16,7.2-16,16s 7.2,16, 16,16l 32,0 c 8.8,0, 16-7.2, 16-16
+ S 280.8,224, 272,224z M 462,0L 338,0 c-9.9,0-18,7.2-18,16s 8.1,16, 18,16l 124,0 c 9.9,0, 18-7.2, 18-16S 471.9,0, 462,0z" />
+<glyph unicode="&#xe008;" d="M 416,320L 416,400 c0,8.8-7.2,16-16,16L 288,416 L 288,448 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,416 c-8.801,0-16-7.2-16-16l0-320
+ c0-8.8, 7.199-16, 16-16l 144,0 l0-96 l 224,0 l 96,96L 512,320 L 416,320 z M 192,447.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 256,416 l-64,0 L 192,447.943 z M 96,352L 96,384 l 256,0 l0-32 L 96,352 z M 416,13.255L 416,64 l 50.745,0 L 416,13.255z M 480,96l-96,0 l0-96
+ L 224,0 L 224,288 l 256,0 L 480,96 z" />
+<glyph unicode="&#xe007;" d="M 445.387,125.423c-22.827,22.778-51.864,34.536-78.973,34.536l-14.556,0 l-31.952,32.004l 127.81,128.019
+ c 31.952,32.005, 31.952,96.014,0,128.019L 256.001,255.973L 64.285,448c-31.952-32.004-31.952-96.014,0-128.019l 127.811-128.017
+ l-31.953-32.004l-14.557,0 c-27.11,0-56.146-11.759-78.974-34.538c-40.811-40.721-46.325-101.242-12.315-135.175
+ C 69.282-24.704, 89.441-32, 110.795-32c 27.108,0, 56.145,11.757, 78.973,34.536c 26.792,26.732, 38.371,62, 33.542,92.674l 32.692,32.744
+ l 32.688-32.744c-4.828-30.674, 6.753-65.941, 33.542-92.674C 345.063-20.243, 374.098-32, 401.206-32
+ c 21.354,0, 41.512,7.296, 56.497,22.248C 491.713,24.181, 486.197,84.702, 445.387,125.423z M 176.512,57.231
+ c-3.849-8.941-9.505-17.173-16.813-24.463c-7.318-7.302-15.586-12.959-24.574-16.812c-8.066-3.458-16.48-5.284-24.331-5.284
+ c-7.573,0-18.306,1.701-26.431,9.806c-8.068,8.052-9.76,18.659-9.76,26.144c0,7.771, 1.821,16.105, 5.263,24.106
+ c 3.85,8.942, 9.507,17.173, 16.813,24.463c 7.317,7.303, 15.586,12.957, 24.575,16.812c 8.067,3.457, 16.48,5.284, 24.332,5.284
+ c 7.573,0, 18.306-1.7, 26.429-9.807c 8.067-8.049, 9.761-18.658, 9.761-26.142C 181.777,73.567, 179.957,65.23, 176.512,57.231z
+ M 256.002,146.702c-24.957,0-45.188,20.266-45.188,45.263c0,24.996, 20.231,45.26, 45.188,45.26s 45.186-20.264, 45.186-45.26
+ C 301.188,166.966, 280.958,146.702, 256.002,146.702z M 427.636,20.479c-8.124-8.104-18.856-9.806-26.43-9.806
+ c-7.852,0-16.265,1.826-24.333,5.284c-8.986,3.853-17.254,9.51-24.571,16.812c-7.307,7.29-12.963,15.521-16.813,24.463
+ c-3.443,7.999-5.263,16.336-5.263,24.106c0,7.483, 1.692,18.094, 9.76,26.143c 8.123,8.104, 18.856,9.807, 26.43,9.807
+ c 7.85,0, 16.265-1.827, 24.33-5.284c 8.989-3.854, 17.258-9.509, 24.575-16.812c 7.305-7.29, 12.962-15.521, 16.813-24.463
+ c 3.442-7.999, 5.263-16.335, 5.263-24.106C 437.396,39.138, 435.702,28.53, 427.636,20.479z" />
+<glyph unicode="&#xe006;" d="M0,448L 512,448L 512,384L0,384zM0,352L 512,352L 512,288L0,288zM0,256L 512,256L 512,192L0,192zM0,160L 512,160L 512,96L0,96zM0,64L 512,64L 512,0L0,0z" />
+<glyph unicode="&#xe005;" d="M0,448L 512,448L 512,384L0,384zM 192,352L 512,352L 512,288L 192,288zM 192,160L 512,160L 512,96L 192,96zM0,256L 512,256L 512,192L0,192zM0,64L 512,64L 512,0L0,0z" />
+<glyph unicode="&#xe004;" d="M0,448L 512,448L 512,384L0,384zM 96,352L 416,352L 416,288L 96,288zM 96,160L 416,160L 416,96L 96,96zM0,256L 512,256L 512,192L0,192zM0,64L 512,64L 512,0L0,0z" />
+<glyph unicode="&#xe003;" d="M0,448L 512,448L 512,384L0,384zM0,352L 320,352L 320,288L0,288zM0,160L 320,160L 320,96L0,96zM0,256L 512,256L 512,192L0,192zM0,64L 512,64L 512,0L0,0z" />
+<glyph unicode="&#xe002;" d="M 512,183.771l0,80.458 l-79.572,7.957c-4.093,15.021-10.044,29.274-17.605,42.49l 52.298,63.919L 410.595,435.12l-63.918-52.298
+ c-13.217,7.562-27.471,13.513-42.491,17.604L 296.229,480l-80.458,0 l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604
+ L 101.405,435.12L 44.88,378.595l 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49L0,264.229l0-80.458 l 79.573-7.957
+ c 4.093-15.021, 10.043-29.274, 17.605-42.491L 44.88,69.405l 56.524-56.524l 63.919,52.298c 13.216-7.562, 27.47-13.514, 42.49-17.605
+ L 215.771-32l 80.458,0 l 7.957,79.572c 15.021,4.093, 29.274,10.044, 42.491,17.605l 63.918-52.298l 56.524,56.524l-52.298,63.918
+ c 7.562,13.217, 13.514,27.471, 17.605,42.49L 512,183.771z M 352,192l-64-64l-64,0 l-64,64l0,64 l 64,64l 64,0 l 64-64L 352,192 z" />
+<glyph unicode="&#xe001;" d="M 451.716,380.285l-71.432,71.431C 364.728,467.272, 334,480, 312,480L 72,480 C 50,480, 32,462, 32,440l0-432 c0-22, 18-40, 40-40l 368,0 c 22,0, 40,18, 40,40
+ L 480,312 C 480,334, 467.272,364.729, 451.716,380.285z M 429.089,357.657c 1.565-1.565, 3.125-3.487, 4.64-5.657L 352,352 L 352,433.728
+ c 2.17-1.515, 4.092-3.075, 5.657-4.64L 429.089,357.657z M 448,8c0-4.336-3.664-8-8-8L 72,0 c-4.336,0-8,3.664-8,8L 64,440 c0,4.336, 3.664,8, 8,8
+ l 240,0 c 2.416,0, 5.127-0.305, 8-0.852L 320,320 l 127.148,0 c 0.547-2.873, 0.852-5.583, 0.852-8L 448,8 z" />
+<glyph unicode="&#xe000;" d="M 448,480L0,480 l0-512 l 512,0 L 512,416 L 448,480z M 256,416l 64,0 l0-128 l-64,0 L 256,416 z M 448,32L 64,32 L 64,416 l 32,0 l0-160 l 288,0 L 384,416 l 37.489,0 L 448,389.491L 448,32 z" />
+<glyph unicode="&#xe033;" d="M 64,208L 208,64L 448,304L 384,368L 208,192L 128,272 z" />
+<glyph unicode="&#xe035;" d="M 256,224L 256,160L 272,160L 288,192L 320,192L 320,64L 296,64L 296,32L 408,32L 408,64L 384,64L 384,192L 416,192L 432,160L 448,160L 448,224 zM 416,320L 416,400 c0,8.8-7.2,16-16,16L 288,416 L 288,448 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,416 c-8.801,0-16-7.2-16-16l0-320
+ c0-8.8, 7.199-16, 16-16l 144,0 l0-96 l 320,0 L 512,320 L 416,320 z M 192,447.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 256,416 l-64,0 L 192,447.943 z M 96,352L 96,384 l 256,0 l0-32 L 96,352 z M 480,0L 224,0 L 224,288 l 256,0 L 480,0 z" />
+<glyph unicode="&#x20;" horiz-adv-x="256" />
+</font></defs></svg> \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.ttf b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.ttf
new file mode 100755
index 00000000..dea6e458
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.ttf
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.woff b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.woff
new file mode 100755
index 00000000..f1765798
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/icomoon.woff
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/readme.md b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/readme.md
new file mode 100755
index 00000000..fa5d6394
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/fonts/readme.md
@@ -0,0 +1 @@
+Icons are generated and provided by the http://icomoon.io service.
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/anchor.gif b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/anchor.gif
new file mode 100755
index 00000000..606348c7
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/anchor.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/loader.gif b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/loader.gif
new file mode 100755
index 00000000..c69e9372
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/loader.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/object.gif b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/object.gif
new file mode 100755
index 00000000..cccd7f02
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/object.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/trans.gif b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/trans.gif
new file mode 100755
index 00000000..38848651
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/trans.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/wline.gif b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/wline.gif
new file mode 100755
index 00000000..7d0a4dbc
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/img/wline.gif
Binary files differ
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.ie7.min.css b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.ie7.min.css
new file mode 100755
index 00000000..0d29f3a8
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.ie7.min.css
@@ -0,0 +1 @@
+.mce-container,.mce-container *,.mce-widget,.mce-widget *{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#000;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-container ::-webkit-scrollbar{width:8px;height:8px;-webkit-border-radius:4px}.mce-container ::-webkit-scrollbar-track,.mce-container ::-webkit-scrollbar-track-piece{background-color:transparent}.mce-container ::-webkit-scrollbar-thumb{background-color:rgba(53,57,71,0.3);width:6px;height:6px;-webkit-border-radius:4px}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:visible!important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td div{border:1px solid #808080;width:12px;height:12px;margin:2px;cursor:pointer}.mce-grid td div:hover{border-color:black}.mce-grid td div:focus{border-color:#59a5e1;outline:1px solid rgba(82,168,236,0.8);border-color:rgba(82,168,236,0.8)}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover{border-color:#c5c5c5}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#e8e8e8;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#c4daff;background:#deeafa}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:#ccc 5px 5px 5px;-moz-box-shadow:#ccc 5px 5px 5px;box-shadow:#ccc 5px 5px 5px}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{top:0;left:0;background:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #EEE;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:bold;line-height:20px;color:#CCC;text-shadow:0 1px 0 white;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#AAA}.mce-window-head .mce-title{display:inline-block;*display:inline;*zoom:1;line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:whiteSmoke;border-top:1px solid #DDD;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000;-moz-box-shadow:0 0 5px #000;box-shadow:0 0 5px #000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:0;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #c5c5c5;position:relative;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-btn:hover,.mce-btn:focus{text-decoration:none;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn.mce-disabled,.mce-btn.mce-disabled:hover{cursor:default;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);zoom:1;border-color:#04c #04c #002b80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary:hover,.mce-primary:focus{color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#005fb3;background-image:-moz-linear-gradient(top,#0077b3,#003cb3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0077b3),to(#003cb3));background-image:-webkit-linear-gradient(top,#0077b3,#003cb3);background-image:-o-linear-gradient(top,#0077b3,#003cb3);background-image:linear-gradient(to bottom,#0077b3,#003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3',endColorstr='#ff003cb3',GradientType=0);zoom:1;border-color:#003cb3 #003cb3 #026;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary button{color:#fff}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:3px 5px;font-size:12px;line-height:15px}.mce-btn-small i{margin-top:0}.mce-btn .mce-caret{margin-top:8px;*margin-top:6px;margin-left:0}.mce-btn-small .mce-caret{margin-top:6px;*margin-top:4px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #444;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#999}.mce-caret.mce-up{border-bottom:4px solid #444;border-top:0}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-btn:hover,.mce-btn-group .mce-btn:focus{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-disabled,.mce-btn-group .mce-btn.mce-disabled:hover{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-active,.mce-btn-group .mce-btn.mce-active:hover,.mce-btn-group .mce-btn:active{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn-group .mce-btn.mce-disabled button{opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn-group .mce-first{border-left:1px solid #c5c5c5;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #c5c5c5;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0}.mce-checked i.mce-i-checkbox{color:#000;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox{border:1px solid #59a5e1;border:1px solid rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-colorbutton .mce-ico{position:relative}.mce-colorpicker{background:#FFF}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-17px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-combobox{display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:rgba(0,0,0,0.15);height:28px}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox *:focus{border-color:#59a5e1;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#000}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:gray;color:white}.mce-path .mce-divider{display:inline}.mce-fieldset{border:0 solid #9e9e9e;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);border:0 solid #c5c5c5;overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label-disabled .mce-text{color:#999}.mce-label.mce-multiline{white-space:pre-wrap}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #ddd}.mce-menubar .mce-menubtn button{color:#000}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#ddd;filter:none}.mce-menubtn.mce-disabled span{color:#999}.mce-menubtn span{margin-right:2px;line-height:20px;*line-height:16px}.mce-menubtn.mce-btn-small span{font-size:12px;line-height:15px;*line-height:16px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item.mce-disabled .mce-text{color:#999}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0);zoom:1}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#999}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #666}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret{border-left-color:#FFF}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item-sep,.mce-menu-item-sep:hover{padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#e5e5e5;border-bottom:1px solid white;cursor:default;filter:none}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item.mce-active{background-color:#c8def4;outline:1px solid #c5c5c5}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa;background-color:transparent;outline:0}.mce-menu-item-checkbox.mce-active{background-color:#FFF;outline:0}.mce-menu{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#FFF;border:1px solid #CCC;border:1px solid rgba(0,0,0,0.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline;*zoom:1}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}i.mce-radio{padding:1px;margin:0 3px 0 0;background-color:#fafafa;border:1px solid #cacece;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}i.mce-radio:after{font-family:Arial;font-size:12px;color:#000;content:'\25cf'}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#000}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #ccc}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #ccc;border-width:1px 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-textbox{background:#FFF;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);display:inline-block;-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#000}.mce-textbox:focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}@font-face{font-family:'icomoon';src:url('fonts/icomoon.eot');src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon.svg#icomoon') format('svg'),url('fonts/icomoon.woff') format('woff'),url('fonts/icomoon.ttf') format('truetype');font-weight:normal;font-style:normal}@font-face{font-family:'icomoon-small';src:url('fonts/icomoon-small.eot');src:url('fonts/icomoon-small.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon-small.svg#icomoon') format('svg'),url('fonts/icomoon-small.woff') format('woff'),url('fonts/icomoon-small.ttf') format('truetype');font-weight:normal;font-style:normal}.mce-ico{font-family:'icomoon';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'icomoon-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = this.currentStyle['-ie7-icon'].substr(1,1)+'&nbsp;')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-inserttime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#BBB} \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.min.css b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.min.css
new file mode 100755
index 00000000..23a89fdf
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/skins/lightgray/skin.min.css
@@ -0,0 +1 @@
+.mce-container,.mce-container *,.mce-widget,.mce-widget *{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#000;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-container ::-webkit-scrollbar{width:8px;height:8px;-webkit-border-radius:4px}.mce-container ::-webkit-scrollbar-track,.mce-container ::-webkit-scrollbar-track-piece{background-color:transparent}.mce-container ::-webkit-scrollbar-thumb{background-color:rgba(53,57,71,0.3);width:6px;height:6px;-webkit-border-radius:4px}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:visible!important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td div{border:1px solid #808080;width:12px;height:12px;margin:2px;cursor:pointer}.mce-grid td div:hover{border-color:black}.mce-grid td div:focus{border-color:#59a5e1;outline:1px solid rgba(82,168,236,0.8);border-color:rgba(82,168,236,0.8)}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover{border-color:#c5c5c5}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#e8e8e8;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#c4daff;background:#deeafa}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:#ccc 5px 5px 5px;-moz-box-shadow:#ccc 5px 5px 5px;box-shadow:#ccc 5px 5px 5px}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{top:0;left:0;background:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #EEE;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:bold;line-height:20px;color:#CCC;text-shadow:0 1px 0 white;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#AAA}.mce-window-head .mce-title{display:inline-block;*display:inline;*zoom:1;line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:whiteSmoke;border-top:1px solid #DDD;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000;-moz-box-shadow:0 0 5px #000;box-shadow:0 0 5px #000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:0;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #c5c5c5;position:relative;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-btn:hover,.mce-btn:focus{text-decoration:none;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn.mce-disabled,.mce-btn.mce-disabled:hover{cursor:default;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);zoom:1;border-color:#04c #04c #002b80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary:hover,.mce-primary:focus{color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#005fb3;background-image:-moz-linear-gradient(top,#0077b3,#003cb3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0077b3),to(#003cb3));background-image:-webkit-linear-gradient(top,#0077b3,#003cb3);background-image:-o-linear-gradient(top,#0077b3,#003cb3);background-image:linear-gradient(to bottom,#0077b3,#003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3',endColorstr='#ff003cb3',GradientType=0);zoom:1;border-color:#003cb3 #003cb3 #026;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary button{color:#fff}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:3px 5px;font-size:12px;line-height:15px}.mce-btn-small i{margin-top:0}.mce-btn .mce-caret{margin-top:8px;*margin-top:6px;margin-left:0}.mce-btn-small .mce-caret{margin-top:6px;*margin-top:4px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #444;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#999}.mce-caret.mce-up{border-bottom:4px solid #444;border-top:0}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-btn:hover,.mce-btn-group .mce-btn:focus{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-disabled,.mce-btn-group .mce-btn.mce-disabled:hover{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-active,.mce-btn-group .mce-btn.mce-active:hover,.mce-btn-group .mce-btn:active{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn-group .mce-btn.mce-disabled button{opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn-group .mce-first{border-left:1px solid #c5c5c5;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #c5c5c5;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0}.mce-checked i.mce-i-checkbox{color:#000;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox{border:1px solid #59a5e1;border:1px solid rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-colorbutton .mce-ico{position:relative}.mce-colorpicker{background:#FFF}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-17px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-combobox{display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:rgba(0,0,0,0.15);height:28px}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox *:focus{border-color:#59a5e1;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#000}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:gray;color:white}.mce-path .mce-divider{display:inline}.mce-fieldset{border:0 solid #9e9e9e;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);border:0 solid #c5c5c5;overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label-disabled .mce-text{color:#999}.mce-label.mce-multiline{white-space:pre-wrap}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #ddd}.mce-menubar .mce-menubtn button{color:#000}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#ddd;filter:none}.mce-menubtn.mce-disabled span{color:#999}.mce-menubtn span{margin-right:2px;line-height:20px;*line-height:16px}.mce-menubtn.mce-btn-small span{font-size:12px;line-height:15px;*line-height:16px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item.mce-disabled .mce-text{color:#999}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0);zoom:1}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#999}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #666}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret{border-left-color:#FFF}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item-sep,.mce-menu-item-sep:hover{padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#e5e5e5;border-bottom:1px solid white;cursor:default;filter:none}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item.mce-active{background-color:#c8def4;outline:1px solid #c5c5c5}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa;background-color:transparent;outline:0}.mce-menu-item-checkbox.mce-active{background-color:#FFF;outline:0}.mce-menu{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#FFF;border:1px solid #CCC;border:1px solid rgba(0,0,0,0.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline;*zoom:1}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}i.mce-radio{padding:1px;margin:0 3px 0 0;background-color:#fafafa;border:1px solid #cacece;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}i.mce-radio:after{font-family:Arial;font-size:12px;color:#000;content:'\25cf'}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#000}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #ccc}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #ccc;border-width:1px 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-textbox{background:#FFF;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);display:inline-block;-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#000}.mce-textbox:focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}@font-face{font-family:'tinymce';src:url('fonts/icomoon.eot');src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon.svg#icomoon') format('svg'),url('fonts/icomoon.woff') format('woff'),url('fonts/icomoon.ttf') format('truetype');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/icomoon-small.eot');src:url('fonts/icomoon-small.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon-small.svg#icomoon') format('svg'),url('fonts/icomoon-small.woff') format('woff'),url('fonts/icomoon-small.ttf') format('truetype');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-inserttime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-untitled:before{content:"\e029"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB} \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/themes/modern/theme.min.js b/framework/Web/Javascripts/source/tinymce-405/themes/modern/theme.min.js
new file mode 100755
index 00000000..4a636871
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/themes/modern/theme.min.js
@@ -0,0 +1 @@
+tinymce.ThemeManager.add("modern",function(e){function t(){function t(t){var i,r=[];if(t)return m(t.split(/[ ,]/),function(t){function n(){var n=e.selection;"bullist"==a&&n.selectorChanged("ul > li",function(e,n){for(var i,r=n.parents.length;r--&&(i=n.parents[r].nodeName,"OL"!=i&&"UL"!=i););t.active("UL"==i)}),"numlist"==a&&n.selectorChanged("ol > li",function(e,n){for(var i,r=n.parents.length;r--&&(i=n.parents[r].nodeName,"OL"!=i&&"UL"!=i););t.active("OL"==i)}),t.settings.stateSelector&&n.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&n.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})}var a;"|"==t?i=null:u.has(t)?(t={type:t},c.toolbar_items_size&&(t.size=c.toolbar_items_size),r.push(t),i=null):(i||(i={type:"buttongroup",items:[]},r.push(i)),e.buttons[t]&&(a=t,t=e.buttons[a],"function"==typeof t&&(t=t()),t.type=t.type||"button",c.toolbar_items_size&&(t.size=c.toolbar_items_size),t=u.create(t),i.items.push(t),e.initialized?n():e.on("init",n)))}),n.push({type:"toolbar",layout:"flow",items:r}),!0}for(var n=[],i=1;10>i&&t(c["toolbar"+i]);i++);return n.length||t(c.toolbar||h),n}function n(){function t(t){var n;return"|"==t?{text:"|"}:n=e.menuItems[t]}function n(n){var i,r,a,o,s;if(s=tinymce.makeMap((c.removed_menuitems||"").split(/[ ,]/)),c.menu?(r=c.menu[n],o=!0):r=f[n],r){i={text:r.title},a=[],m((r.items||"").split(/[ ,]/),function(e){var n=t(e);n&&!s[e]&&a.push(t(e))}),o||m(e.menuItems,function(e){e.context==n&&("before"==e.separator&&a.push({text:"|"}),e.prependToContext?a.unshift(e):a.push(e),"after"==e.separator&&a.push({text:"|"}))});for(var l=0;l<a.length;l++)"|"==a[l].text&&(0===l||l==a.length-1)&&a.splice(l,1);if(i.menu=a,!i.menu.length)return null}return i}var i,r=[],a=[];if(c.menu)for(i in c.menu)a.push(i);else for(i in f)a.push(i);for(var o=c.menubar?c.menubar.split(/[ ,]/):a,s=0;s<o.length;s++){var l=o[s];l=n(l),l&&r.push(l)}return r}function i(t){function n(e){var n=t.find(e)[0];n&&n.focus()}e.shortcuts.add("Alt+F9","",function(){n("menubar")}),e.shortcuts.add("Alt+F10","",function(){n("toolbar")}),e.shortcuts.add("Alt+F11","",function(){n("elementpath")}),t.on("cancel",function(){e.focus()})}function r(t,n){function i(e){return{width:e.clientWidth,height:e.clientHeight}}var r,a,o,s;r=e.getContainer(),a=e.getContentAreaContainer().firstChild,o=i(r),s=i(a),null!==t&&(t=Math.max(c.min_width||100,t),t=Math.min(c.max_width||65535,t),d.css(r,"width",t+(o.width-s.width)),d.css(a,"width",t)),n=Math.max(c.min_height||100,n),n=Math.min(c.max_height||65535,n),d.css(a,"height",n),e.fire("ResizeEditor")}function a(t,n){var i=e.getContentAreaContainer();l.resizeTo(i.clientWidth+t,i.clientHeight+n)}function o(){function r(){m&&m.moveRel&&m.visible()&&!m._fixed&&m.moveRel(e.getBody(),["tl-bl","bl-tl"])}function a(){m&&(m.show(),r(),d.addClass(e.getBody(),"mce-edit-focus"))}function o(){m&&(m.hide(),d.removeClass(e.getBody(),"mce-edit-focus"))}function s(){return m?(m.visible()||a(),void 0):(m=l.panel=u.create({type:f?"panel":"floatpanel",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",autohide:!1,autofix:!0,fixed:!!f,border:1,items:[c.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:n()},c.toolbar===!1?null:{type:"panel",name:"toolbar",layout:"stack",items:t()}]}),m.renderTo(f||document.body).reflow(),i(m),a(),e.on("nodeChange",r),e.on("activate",a),e.on("deactivate",o),void 0)}var m,f;return c.fixed_toolbar_container&&(f=d.select(c.fixed_toolbar_container)[0]),c.content_editable=!0,e.on("focus",s),e.on("blur",o),e.on("remove",function(){m&&(m.remove(),m=null)}),{}}function s(a){var o,s,m;return o=l.panel=u.create({type:"panel",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[c.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:n()},c.toolbar===!1?null:{type:"panel",layout:"stack",items:t()},{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),c.resize!==!1&&(s={type:"resizehandle",direction:c.resize,onResizeStart:function(){var t=e.getContentAreaContainer().firstChild;m={width:t.clientWidth,height:t.clientHeight}},onResize:function(e){"both"==c.resize?r(m.width+e.deltaX,m.height+e.deltaY):r(null,m.height+e.deltaY)}}),c.statusbar!==!1&&o.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",items:[{type:"elementpath"},s]}),o.renderBefore(a.targetNode).reflow(),c.width&&tinymce.DOM.setStyle(o.getEl(),"width",c.width),e.on("remove",function(){o.remove(),o=null}),i(o),{iframeContainer:o.find("#iframe")[0].getEl(),editorContainer:o.getEl()}}var l=this,c=e.settings,u=tinymce.ui.Factory,m=tinymce.each,d=tinymce.DOM,f={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},h="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";l.renderUI=function(t){var n=c.skin!==!1?c.skin||"lightgray":!1;return n&&(tinymce.Env.documentMode<=7?tinymce.DOM.loadCSS(tinymce.baseURL+"/skins/"+n+"/skin.ie7.min.css"):tinymce.DOM.loadCSS(tinymce.baseURL+"/skins/"+n+"/skin.min.css"),e.contentCSS.push(tinymce.baseURL+"/skins/"+n+"/content"+(e.inline?".inline":"")+".min.css")),e.on("ProgressState",function(e){l.throbber=l.throbber||new tinymce.ui.Throbber(l.panel.getEl("body")),e.state?l.throbber.show(e.time):l.throbber.hide()}),c.inline?o(t):s(t)},l.resizeTo=r,l.resizeBy=a}); \ No newline at end of file
diff --git a/framework/Web/Javascripts/source/tinymce-405/tinymce.min.js b/framework/Web/Javascripts/source/tinymce-405/tinymce.min.js
new file mode 100755
index 00000000..13f18233
--- /dev/null
+++ b/framework/Web/Javascripts/source/tinymce-405/tinymce.min.js
@@ -0,0 +1,10 @@
+// 4.0.5 (2013-08-27)
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var i=e,o=n[r],a=o.split(/[.\/]/),l=0;l<a.length-1;++l)i[a[l]]===t&&(i[a[l]]={}),i=i[a[l]];i[a[a.length-1]]=s[o]}}var s={},l="tinymce/dom/EventUtils",c="tinymce/dom/Sizzle",u="tinymce/dom/DomQuery",d="tinymce/html/Styles",f="tinymce/dom/TreeWalker",p="tinymce/util/Tools",h="tinymce/dom/Range",m="tinymce/html/Entities",g="tinymce/Env",v="tinymce/dom/DOMUtils",y="tinymce/dom/ScriptLoader",b="tinymce/AddOnManager",C="tinymce/html/Node",x="tinymce/html/Schema",w="tinymce/html/SaxParser",_="tinymce/html/DomParser",N="tinymce/html/Writer",E="tinymce/html/Serializer",k="tinymce/dom/Serializer",S="tinymce/dom/TridentSelection",T="tinymce/util/VK",R="tinymce/dom/ControlSelection",A="tinymce/dom/Selection",B="tinymce/dom/RangeUtils",D="tinymce/Formatter",L="tinymce/UndoManager",M="tinymce/EnterKey",H="tinymce/ForceBlocks",P="tinymce/EditorCommands",O="tinymce/util/URI",I="tinymce/util/Class",F="tinymce/ui/Selector",W="tinymce/ui/Collection",z="tinymce/ui/DomUtils",V="tinymce/ui/Control",U="tinymce/ui/Factory",q="tinymce/ui/Container",j="tinymce/ui/DragHelper",$="tinymce/ui/Scrollable",K="tinymce/ui/Panel",G="tinymce/ui/Movable",Y="tinymce/ui/Resizable",X="tinymce/ui/FloatPanel",J="tinymce/ui/KeyboardNavigation",Q="tinymce/ui/Window",Z="tinymce/ui/MessageBox",et="tinymce/WindowManager",tt="tinymce/util/Quirks",nt="tinymce/util/Observable",rt="tinymce/Shortcuts",it="tinymce/Editor",ot="tinymce/util/I18n",at="tinymce/FocusManager",st="tinymce/EditorManager",lt="tinymce/LegacyInput",ct="tinymce/util/XHR",ut="tinymce/util/JSON",dt="tinymce/util/JSONRequest",ft="tinymce/util/JSONP",pt="tinymce/util/LocalStorage",ht="tinymce/Compat",mt="tinymce/ui/Layout",gt="tinymce/ui/AbsoluteLayout",vt="tinymce/ui/Tooltip",yt="tinymce/ui/Widget",bt="tinymce/ui/Button",Ct="tinymce/ui/ButtonGroup",xt="tinymce/ui/Checkbox",wt="tinymce/ui/PanelButton",_t="tinymce/ui/ColorButton",Nt="tinymce/ui/ComboBox",Et="tinymce/ui/Path",kt="tinymce/ui/ElementPath",St="tinymce/ui/FormItem",Tt="tinymce/ui/Form",Rt="tinymce/ui/FieldSet",At="tinymce/ui/FilePicker",Bt="tinymce/ui/FitLayout",Dt="tinymce/ui/FlexLayout",Lt="tinymce/ui/FlowLayout",Mt="tinymce/ui/FormatControls",Ht="tinymce/ui/GridLayout",Pt="tinymce/ui/Iframe",Ot="tinymce/ui/Label",It="tinymce/ui/Toolbar",Ft="tinymce/ui/MenuBar",Wt="tinymce/ui/MenuButton",zt="tinymce/ui/ListBox",Vt="tinymce/ui/MenuItem",Ut="tinymce/ui/Menu",qt="tinymce/ui/Radio",jt="tinymce/ui/ResizeHandle",$t="tinymce/ui/Spacer",Kt="tinymce/ui/SplitButton",Gt="tinymce/ui/StackLayout",Yt="tinymce/ui/TabPanel",Xt="tinymce/ui/TextBox",Jt="tinymce/ui/Throbber";r(l,[],function(){function e(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function t(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function n(e,t){function n(){return!1}function r(){return!0}var i,o=t||{},l;for(i in e)s[i]||(o[i]=e[i]);if(o.target||(o.target=o.srcElement||document),e&&a.test(e.type)&&e.pageX===l&&e.clientX!==l){var c=o.target.ownerDocument||document,u=c.documentElement,d=c.body;o.pageX=e.clientX+(u&&u.scrollLeft||d&&d.scrollLeft||0)-(u&&u.clientLeft||d&&d.clientLeft||0),o.pageY=e.clientY+(u&&u.scrollTop||d&&d.scrollTop||0)-(u&&u.clientTop||d&&d.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=r,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=r,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=r,o.stopPropagation()},o.isDefaultPrevented||(o.isDefaultPrevented=n,o.isPropagationStopped=n,o.isImmediatePropagationStopped=n),o}function r(n,r,i){function o(){i.domLoaded||(i.domLoaded=!0,r(c))}function a(){"complete"===l.readyState&&(t(l,"readystatechange",a),o())}function s(){try{l.documentElement.doScroll("left")}catch(e){return setTimeout(s,0),void 0}o()}var l=n.document,c={type:"ready"};return i.domLoaded?(r(c),void 0):(l.addEventListener?e(n,"DOMContentLoaded",o):(e(l,"readystatechange",a),l.documentElement.doScroll&&n===n.top&&s()),e(n,"load",o),void 0)}function i(){function i(e,t){var n,r,i,o;if(n=s[t][e.type])for(r=0,i=n.length;i>r;r++)if(o=n[r],o&&o.func.call(o.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var a=this,s={},l,c,u,d,f;c=o+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},l=1,a.domLoaded=!1,a.events=s,a.bind=function(t,o,p,h){function m(e){i(n(e||_.event),g)}var g,v,y,b,C,x,w,_=window;if(t&&3!==t.nodeType&&8!==t.nodeType){for(t[c]?g=t[c]:(g=l++,t[c]=g,s[g]={}),h=h||t,o=o.split(" "),y=o.length;y--;)b=o[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),a.domLoaded&&"ready"===b&&"complete"==t.readyState?p.call(h,n({type:b})):(d||(C=f[b],C&&(x=function(e){var t,r;if(t=e.currentTarget,r=e.relatedTarget,r&&t.contains)r=t.contains(r);else for(;r&&r!==t;)r=r.parentNode;r||(e=n(e||_.event),e.type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,i(e,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(e){e=n(e||_.event),e.type="focus"===e.type?"focusin":"focusout",i(e,g)}),v=s[g][b],v?"ready"===b&&a.domLoaded?p({type:b}):v.push({func:p,scope:h}):(s[g][b]=v=[{func:p,scope:h}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?r(t,x,a):e(t,C||b,x,w)));return t=v=0,p}},a.unbind=function(e,n,r){var i,o,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return a;if(i=e[c]){if(f=s[i],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],o=f[d]){if(r)for(u=o.length;u--;)o[u].func===r&&o.splice(u,1);r&&0!==o.length||(delete f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture))}}else{for(d in f)o=f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture);f={}}for(d in f)return a;delete s[i];try{delete e[c]}catch(p){e[c]=null}}return a},a.fire=function(e,t,r){var o;if(!e||3===e.nodeType||8===e.nodeType)return a;r=n(null,r),r.type=t,r.target=e;do o=e[c],o&&i(r,o),e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow;while(e&&!r.isPropagationStopped());return a},a.clean=function(e){var t,n,r=a.unbind;if(!e||3===e.nodeType||8===e.nodeType)return a;if(e[c]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),n=e.getElementsByTagName("*"),t=n.length;t--;)e=n[t],e[c]&&r(e);return a},a.destroy=function(){s={}},a.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var o="mce-data-",a=/^(?:mouse|contextmenu)|click/,s={keyLocation:1,layerX:1,layerY:1};return i.Event=new i,i.Event.bind(window,"ready",function(){}),i}),r(c,[],function(){function e(e){return gt.test(e+"")}function n(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>N.cacheLength&&delete e[t.shift()],e[n]=r,r}}function i(e){return e[F]=!0,e}function o(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t=null}}function a(e,t,n,r){var i,o,a,s,l,c,u,p,h,m;if((t?t.ownerDocument||t:W)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(M&&!r){if(i=vt.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return et.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&z.getElementsByClassName&&t.getElementsByClassName)return et.apply(n,t.getElementsByClassName(a)),n}if(z.qsa&&!H.test(e)){if(u=!0,p=F,h=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=d(e),(u=t.getAttribute("id"))?p=u.replace(Ct,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",l=c.length;l--;)c[l]=p+f(c[l]);h=mt.test(e)&&t.parentNode||t,m=c.join(",")}if(m)try{return et.apply(n,h.querySelectorAll(m)),n}catch(g){}finally{u||t.removeAttribute("id")}}}return C(e.replace(ct,"$1"),t,n,r)}function s(e,t){var n=t&&e,r=n&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function l(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function c(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function u(e){return i(function(t){return t=+t,i(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function d(e,t){var n,r,i,o,s,l,c,u=j[e+" "];if(u)return t?0:u.slice(0);for(s=e,l=[],c=N.preFilter;s;){(!n||(r=ut.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=dt.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ct," ")}),s=s.slice(n.length));for(o in N.filter)!(r=ht[o].exec(s))||c[o]&&!(r=c[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?a.error(e):j(e,l).slice(0)}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=U++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c,u=V+" "+o;if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i)if(c=t[F]||(t[F]={}),(l=c[r])&&l[0]===u){if((s=l[1])===!0||s===_)return s===!0}else if(l=c[r]=[u],l[1]=e(t,n,a)||_,l[1]===!0)return!0}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),c&&t.push(s));return a}function g(e,t,n,r,o,a){return r&&!r[F]&&(r=g(r)),o&&!o[F]&&(o=g(o,a)),i(function(i,a,s,l){var c,u,d,f=[],p=[],h=a.length,g=i||b(t||"*",s.nodeType?[s]:s,[]),v=!e||!i&&t?g:m(g,f,e,s,l),y=n?o||(i?e:h||r)?[]:a:v;if(n&&n(v,y,s,l),r)for(c=m(y,p),r(c,[],s,l),u=c.length;u--;)(d=c[u])&&(y[p[u]]=!(v[p[u]]=d));if(i){if(o||e){if(o){for(c=[],u=y.length;u--;)(d=y[u])&&c.push(v[u]=d);o(null,y=[],c,l)}for(u=y.length;u--;)(d=y[u])&&(c=o?nt.call(i,d):f[u])>-1&&(i[c]=!(a[c]=d))}}else y=m(y===a?y.splice(h,y.length):y),o?o(null,a,y,l):et.apply(a,y)})}function v(e){for(var t,n,r,i=e.length,o=N.relative[e[0].type],a=o||N.relative[" "],s=o?1:0,l=p(function(e){return e===t},a,!0),c=p(function(e){return nt.call(t,e)>-1},a,!0),u=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];i>s;s++)if(n=N.relative[e[s].type])u=[p(h(u),n)];else{if(n=N.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;i>r&&!N.relative[e[r].type];r++);return g(s>1&&h(u),s>1&&f(e.slice(0,s-1)).replace(ct,"$1"),n,r>s&&v(e.slice(s,r)),i>r&&v(e=e.slice(r)),i>r&&f(e))}u.push(n)}return h(u)}function y(e,t){var n=0,r=t.length>0,o=e.length>0,s=function(i,s,l,c,u){var d,f,p,h=[],g=0,v="0",y=i&&[],b=null!=u,C=T,x=i||o&&N.find.TAG("*",u&&s.parentNode||s),w=V+=null==C?1:Math.random()||.1;for(b&&(T=s!==D&&s,_=n);null!=(d=x[v]);v++){if(o&&d){for(f=0;p=e[f++];)if(p(d,s,l)){c.push(d);break}b&&(V=w,_=++n)}r&&((d=!p&&d)&&g--,i&&y.push(d))}if(g+=v,r&&v!==g){for(f=0;p=t[f++];)p(y,h,s,l);if(i){if(g>0)for(;v--;)y[v]||h[v]||(h[v]=Q.call(c));h=m(h)}et.apply(c,h),b&&!i&&h.length>0&&g+t.length>1&&a.uniqueSort(c)}return b&&(V=w,T=C),y};return r?i(s):s}function b(e,t,n){for(var r=0,i=t.length;i>r;r++)a(e,t[r],n);return n}function C(e,t,n,r){var i,o,a,s,l,c=d(e);if(!r&&1===c.length){if(o=c[0]=c[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&9===t.nodeType&&M&&N.relative[o[1].type]){if(t=(N.find.ID(a.matches[0].replace(wt,_t),t)||[])[0],!t)return n;e=e.slice(o.shift().value.length)}for(i=ht.needsContext.test(e)?0:o.length;i--&&(a=o[i],!N.relative[s=a.type]);)if((l=N.find[s])&&(r=l(a.matches[0].replace(wt,_t),mt.test(o[0].type)&&t.parentNode||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return et.apply(n,r),n;break}}return S(e,c)(r,t,!M,n,mt.test(e)),n}function x(){}var w,_,N,E,k,S,T,R,A,B,D,L,M,H,P,O,I,F="sizzle"+-new Date,W=window.document,z={},V=0,U=0,q=n(),j=n(),$=n(),K=!1,G=function(){return 0},Y=typeof t,X=1<<31,J=[],Q=J.pop,Z=J.push,et=J.push,tt=J.slice,nt=J.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},rt="[\\x20\\t\\r\\n\\f]",it="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot=it.replace("w","w#"),at="([*^$|!~]?=)",st="\\["+rt+"*("+it+")"+rt+"*(?:"+at+rt+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+ot+")|)|)"+rt+"*\\]",lt=":("+it+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+st.replace(3,8)+")*)|.*)\\)|)",ct=new RegExp("^"+rt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+rt+"+$","g"),ut=new RegExp("^"+rt+"*,"+rt+"*"),dt=new RegExp("^"+rt+"*([\\x20\\t\\r\\n\\f>+~])"+rt+"*"),ft=new RegExp(lt),pt=new RegExp("^"+ot+"$"),ht={ID:new RegExp("^#("+it+")"),CLASS:new RegExp("^\\.("+it+")"),NAME:new RegExp("^\\[name=['\"]?("+it+")['\"]?\\]"),TAG:new RegExp("^("+it.replace("w","w*")+")"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+lt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+rt+"*(even|odd|(([+-]|)(\\d*)n|)"+rt+"*(?:([+-]|)"+rt+"*(\\d+)|))"+rt+"*\\)|)","i"),needsContext:new RegExp("^"+rt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+rt+"*((?:-\\d)?\\d*)"+rt+"*\\)|)(?=[^-]|$)","i")},mt=/[\x20\t\r\n\f]*[+~]/,gt=/^[^{]+\{\s*\[native code/,vt=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,yt=/^(?:input|select|textarea|button)$/i,bt=/^h\d$/i,Ct=/'|\\/g,xt=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,wt=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,_t=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{et.apply(J=tt.call(W.childNodes),W.childNodes),J[W.childNodes.length].nodeType}catch(Nt){et={apply:J.length?function(e,t){Z.apply(e,tt.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}k=a.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=a.setDocument=function(n){var r=n?n.ownerDocument||n:W;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=r.documentElement,M=!k(r),z.getElementsByTagName=o(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),z.attributes=o(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),z.getElementsByClassName=o(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),z.getByName=o(function(e){e.id=F+0,e.appendChild(D.createElement("a")).setAttribute("name",F),e.appendChild(D.createElement("i")).setAttribute("name",F),L.appendChild(e);var t=r.getElementsByName&&r.getElementsByName(F).length===2+r.getElementsByName(F+0).length;return L.removeChild(e),t}),z.sortDetached=o(function(e){return e.compareDocumentPosition&&1&e.compareDocumentPosition(D.createElement("div"))}),N.attrHandle=o(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==Y&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},z.getByName?(N.find.ID=function(e,t){if(typeof t.getElementById!==Y&&M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},N.filter.ID=function(e){var t=e.replace(wt,_t);return function(e){return e.getAttribute("id")===t}}):(N.find.ID=function(e,n){if(typeof n.getElementById!==Y&&M){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==Y&&r.getAttributeNode("id").value===e?[r]:t:[]}},N.filter.ID=function(e){var t=e.replace(wt,_t);return function(e){var n=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return n&&n.value===t}}),N.find.TAG=z.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==Y?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},N.find.NAME=z.getByName&&function(e,t){return typeof t.getElementsByName!==Y?t.getElementsByName(name):void 0},N.find.CLASS=z.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==Y&&M?t.getElementsByClassName(e):void 0},P=[],H=[":focus"],(z.qsa=e(r.querySelectorAll))&&(o(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||H.push("\\["+rt+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||H.push(":checked")}),o(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&H.push("[*^$]="+rt+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||H.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),H.push(",.*:")})),(z.matchesSelector=e(O=L.matchesSelector||L.mozMatchesSelector||L.webkitMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&o(function(e){z.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),P.push("!=",lt)}),H=new RegExp(H.join("|")),P=P.length&&new RegExp(P.join("|")),I=e(L.contains)||L.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},G=L.compareDocumentPosition?function(e,t){if(e===t)return K=!0,0;var n=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return n?1&n||R&&t.compareDocumentPosition(e)===n?e===r||I(W,e)?-1:t===r||I(W,t)?1:A?nt.call(A,e)-nt.call(A,t):0:4&n?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var n,i=0,o=e.parentNode,a=t.parentNode,l=[e],c=[t];if(e===t)return K=!0,0;if(!o||!a)return e===r?-1:t===r?1:o?-1:a?1:0;if(o===a)return s(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)c.unshift(n);for(;l[i]===c[i];)i++;return i?s(l[i],c[i]):l[i]===W?-1:c[i]===W?1:0},D):D},a.matches=function(e,t){return a(e,null,null,t)},a.matchesSelector=function(e,t){if((e.ownerDocument||e)!==D&&B(e),t=t.replace(xt,"='$1']"),z.matchesSelector&&M&&(!P||!P.test(t))&&!H.test(t))try{var n=O.call(e,t);if(n||z.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return a(t,D,null,[e]).length>0},a.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},a.attr=function(e,t){var n;return(e.ownerDocument||e)!==D&&B(e),M&&(t=t.toLowerCase()),(n=N.attrHandle[t])?n(e):!M||z.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},a.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a.uniqueSort=function(e){var t,n=[],r=0,i=0;if(K=!z.detectDuplicates,R=!z.sortDetached,A=!z.sortStable&&e.slice(0),e.sort(G),K){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return e},E=a.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=E(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=E(t);return n},N=a.selectors={cacheLength:50,createPseudo:i,match:ht,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(wt,_t),e[3]=(e[4]||e[5]||"").replace(wt,_t),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||a.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&a.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return ht.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&ft.test(n)&&(t=d(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(wt,_t).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=q[e+" "];return t||(t=new RegExp("(^|"+rt+")"+e+"("+rt+"|$)"))&&q(e,function(e){return t.test(e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=a.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,f,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(u=g[F]||(g[F]={}),c=u[e]||[],p=c[0]===V&&c[1],f=c[0]===V&&c[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){u[e]=[V,p,f];break}}else if(y&&(c=(t[F]||(t[F]={}))[e])&&c[0]===V)f=c[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[V,f]),d!==t)););return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=N.pseudos[e]||N.setFilters[e.toLowerCase()]||a.error("unsupported pseudo: "+e);return r[F]?r(t):r.length>1?(n=[e,e,"",t],N.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,n){for(var i,o=r(e,t),a=o.length;a--;)i=nt.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:i(function(e){var t=[],n=[],r=S(e.replace(ct,"$1"));return r[F]?i(function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:i(function(e){return function(t){return a(e,t).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||E(t)).indexOf(e)>-1}}),lang:i(function(e){return pt.test(e||"")||a.error("unsupported lang: "+e),e=e.replace(wt,_t).toLowerCase(),function(t){var n;do if(n=M?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!N.pseudos.empty(e)},header:function(e){return bt.test(e.nodeName)},input:function(e){return yt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:u(function(){return[0]}),last:u(function(e,t){return[t-1]}),eq:u(function(e,t,n){return[0>n?n+t:n]}),even:u(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:u(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:u(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:u(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}};for(w in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})N.pseudos[w]=l(w);for(w in{submit:!0,reset:!0})N.pseudos[w]=c(w);return S=a.compile=function(e,t){var n,r=[],i=[],o=$[e+" "];if(!o){for(t||(t=d(e)),n=t.length;n--;)o=v(t[n]),o[F]?r.push(o):i.push(o);o=$(e,y(i,r))}return o},N.pseudos.nth=N.pseudos.eq,x.prototype=N.filters=N.pseudos,N.setFilters=new x,z.sortStable=F.split("").sort(G).join("")===F,B(),[0,0].sort(G),z.detectDuplicates=K,"function"==typeof r&&r.amd?r(function(){return a}):window.Sizzle=a,a}),r(u,[l,c],function(e,n){function r(e){return"undefined"!=typeof e}function i(e){return"string"==typeof e}function o(e){var t,n,r;for(r=g.createElement("div"),t=g.createDocumentFragment(),r.innerHTML=e;n=r.firstChild;)t.appendChild(n);return t}function a(e,t,n){var r;if("string"==typeof t)t=o(t);else if(t.length){for(r=0;r<t.length;r++)a(e,t[r],n);return e}for(r=e.length;r--;)n.call(e[r],t.parentNode?t:t);return e}function s(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function l(e,t){var n;for(e=e||[],"string"==typeof e&&(e=e.split(" ")),t=t||{},n=e.length;n--;)t[e[n]]={};return t}function c(e,t){return new c.fn.init(e,t)}function u(e){var t=arguments,n,r,i;for(r=1;r<t.length;r++){n=t[r];for(i in n)e[i]=n[i]}return e}function d(e){var t=[],n,r;for(n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function f(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function p(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,a,r)===!1))break}else for(i=0;n>i&&(a=e[i],t.call(a,a,r)!==!1);i++);return e}function h(e,n,r){for(var i=[],o=e[n];o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!c(o).is(r));)1===o.nodeType&&i.push(o),o=o[n];return i}function m(e,t,n,r){for(var i=[];e;e=e[n])r&&e.nodeType!==r||e===t||i.push(e);return i}var g=document,v=Array.prototype.push,y=Array.prototype.slice,b=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,C=e.Event,x=l("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"),w=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},_=/^\s*|\s*$/g,N=function(e){return null===e||e===t?"":(""+e).replace(_,"")};return c.fn=c.prototype={constructor:c,selector:"",length:0,init:function(e,t){var n=this,r,a;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(i(e)){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:b.exec(e),!r)return c(t||document).find(e);if(r[1])for(a=o(e).firstChild;a;)this.add(a),a=a.nextSibling;else{if(a=g.getElementById(r[2]),a.id!==r[2])return n.find(e);n.length=1,n[0]=a}}else this.add(e);return n},toArray:function(){return d(this)},add:function(e){var t=this;return w(e)?v.apply(t,e):e instanceof c?t.add(e.toArray()):v.call(t,e),t},attr:function(e,n){var i=this;if("object"==typeof e)p(e,function(e,t){i.attr(t,e)});else{if(!r(n))return i[0]&&1===i[0].nodeType?i[0].getAttribute(e):t;this.each(function(){1===this.nodeType&&this.setAttribute(e,n)})}return i},css:function(e,n){var i=this;if("object"==typeof e)p(e,function(e,t){i.css(t,e)});else{if(e=e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),!r(n))return i[0]?i[0].style[e]:t;"number"!=typeof n||x[e]||(n+="px"),i.each(function(){var t=this.style;"opacity"===e&&this.runtimeStyle&&"undefined"==typeof this.runtimeStyle.opacity&&(t.filter=""===n?"":"alpha(opacity="+100*n+")");try{t[e]=n}catch(r){}})}return i},remove:function(){for(var e=this,t,n=this.length;n--;)t=e[n],C.clean(t),t.parentNode&&t.parentNode.removeChild(t);return this},empty:function(){for(var e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return this},html:function(e){var t=this,n;if(r(e)){for(n=t.length;n--;)t[n].innerHTML=e;return t}return t[0]?t[0].innerHTML:""},text:function(e){var t=this,n;if(r(e)){for(n=t.length;n--;)t[n].innerText=t[0].textContent=e;return t}return t[0]?t[0].innerText||t[0].textContent:""},append:function(){return a(this,arguments,function(e){1===this.nodeType&&this.appendChild(e)})},prepend:function(){return a(this,arguments,function(e){1===this.nodeType&&this.insertBefore(e,this.firstChild)})},before:function(){var e=this;return e[0]&&e[0].parentNode?a(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)}):e},after:function(){var e=this;return e[0]&&e[0].parentNode?a(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},appendTo:function(e){return c(e).append(this),this},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(e,t){var n=this;return-1!==e.indexOf(" ")?p(e.split(" "),function(){n.toggleClass(this,t)}):n.each(function(){var n=this,r;s(n,e)!==t&&(r=n.className,t?n.className+=r?" "+e:e:n.className=N((" "+r+" ").replace(" "+e+" "," ")))}),n},hasClass:function(e){return s(this[0],e)},each:function(e){return p(this,e)},on:function(e,t){return this.each(function(){C.bind(this,e,t)})},off:function(e,t){return this.each(function(){C.unbind(this,e,t)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new c(y.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},replaceWith:function(e){var t=this;return t[0]&&t[0].parentNode.replaceChild(c(e)[0],t[0]),t},wrap:function(e){return e=c(e)[0],this.each(function(){var t=this,n=e.cloneNode(!1);t.parentNode.insertBefore(n,t),n.appendChild(t)})},unwrap:function(){return this.each(function(){for(var e=this,t=e.firstChild,n;t;)n=t,t=t.nextSibling,e.parentNode.insertBefore(n,e)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),c(e)},find:function(e){var t,n,r=[];for(t=0,n=this.length;n>t;t++)c.find(e,this[t],r);return c(r)},push:v,sort:[].sort,splice:[].splice},u(c,{extend:u,toArray:d,inArray:f,isArray:w,each:p,trim:N,makeMap:l,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,isXMLDoc:n.isXML,contains:n.contains,filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?c.find.matchesSelector(t[0],e)?[t[0]]:[]:c.find.matches(e,t)}}),p({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t){return h(e,"parentNode",t)},next:function(e){return m(e,"nextSibling",1)},prev:function(e){return m(e,"previousSibling",1)},nextNodes:function(e){return m(e,"nextSibling")},prevNodes:function(e){return m(e,"previousSibling")},children:function(e){return m(e.firstChild,"nextSibling",1)},contents:function(e){return d(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){c.fn[e]=function(n){var r=this,i;if(r.length>1)throw new Error("DomQuery only supports traverse functions on a single node.");return r[0]&&(i=t(r[0],n)),i=c(i),n&&"parentsUntil"!==e?i.filter(n):i}}),c.fn.filter=function(e){return c.filter(e)},c.fn.is=function(e){return!!e&&this.filter(e).length>0},c.fn.init.prototype=c.fn,c}),r(d,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d="\ufeff";
+for(e=e||{},u=("\\\" \\' \\; \\: ; : "+d).split(" "),l=0;l<u.length;l++)c[u[l]]=d+l,c[d+l]=u[l];return{toHex:function(e){return e.replace(r,n)},parse:function(t){function s(e,t){var n,r,i,o;n=h[e+"-top"+t],n&&(r=h[e+"-right"+t],n==r&&(i=h[e+"-bottom"+t],r==i&&(o=h[e+"-left"+t],i==o&&(h[e+t]=o,delete h[e+"-top"+t],delete h[e+"-right"+t],delete h[e+"-bottom"+t],delete h[e+"-left"+t]))))}function l(e){var t=h[e],n;if(t&&!(t.indexOf(" ")<0)){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return h[e]=t[0],!0}}function u(e,t,n,r){l(t)&&l(n)&&l(r)&&(h[e]=h[t]+" "+h[n]+" "+h[r],delete h[t],delete h[n],delete h[r])}function d(e){return y=!0,c[e]}function f(e,t){return y&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function p(e,t,n,r,i,o){return(i=i||o)?(i=f(i),"'"+i.replace(/\'/g,"\\'")+"'"):(t=f(t||n||r),b&&(t=b.call(C,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')")}var h={},m,g,v,y,b=e.url_converter,C=e.url_converter_scope||this;if(t){for(t=t.replace(/\\[\"\';:\uFEFF]/g,d).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,d)});m=o.exec(t);)g=m[1].replace(a,"").toLowerCase(),v=m[2].replace(a,""),g&&v.length>0&&("font-weight"===g&&"700"===v?v="bold":("color"===g||"background-color"===g)&&(v=v.toLowerCase()),v=v.replace(r,n),v=v.replace(i,p),h[g]=y?f(v,!0):v),o.lastIndex=m.index+m[0].length;s("border",""),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),u("border","border-width","border-style","border-color"),"medium none"===h.border&&delete h.border}return h},serialize:function(e,n){function r(n){var r,o,a,l;if(r=t.styles[n])for(o=0,a=r.length;a>o;o++)n=r[o],l=e[n],l!==s&&l.length>0&&(i+=(i.length>0?" ":"")+n+": "+l+";")}var i="",o,a;if(n&&t&&t.styles)r("*"),r(n);else for(o in e)a=e[o],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+o+": "+a+";");return i}}}}),r(f,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}var r=e;this.current=function(){return r},this.next=function(e){return r=n(r,"firstChild","nextSibling",e)},this.prev=function(e){return r=n(r,"lastChild","previousSibling",e)}}}),r(p,[],function(){function e(e,n){return n?"array"==n&&g(e)?!0:typeof e==n:e!==t}function n(e){var t=[],n,r;for(n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function r(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function i(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function o(e,t){var n=[];return i(e,function(e){n.push(t(e))}),n}function a(e,t){var n=[];return i(e,function(e){(!t||t(e))&&n.push(e)}),n}function s(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,this.onCreate&&this.onCreate(e[2],e[3],o[a]),void 0;t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],o[a]=c?function(){return i[s].apply(this,arguments)}:function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function l(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function c(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function u(e,t,n,r){r=r||this,e&&(n&&(e=e[n]),i(e,function(e,i){return t.call(r,e,i,n)===!1?!1:(u(e,t,n,r),void 0)}))}function d(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return t}function f(e,t){var n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;r>n&&(t=t[e[n]],t);n++);return t}function p(t,n){return!t||e(t,"array")?t:o(t.split(n||","),m)}var h=/^\s*|\s*$/g,m=function(e){return null===e||e===t?"":(""+e).replace(h,"")},g=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{trim:m,isArray:g,is:e,toArray:n,makeMap:r,each:i,map:o,grep:a,inArray:l,extend:c,create:s,walk:u,createNS:d,resolve:f,explode:p}}),r(h,[p],function(e){function t(n){function r(){return H.createDocumentFragment()}function i(e,t){_(F,e,t)}function o(e,t){_(W,e,t)}function a(e){i(e.parentNode,$(e))}function s(e){i(e.parentNode,$(e)+1)}function l(e){o(e.parentNode,$(e))}function c(e){o(e.parentNode,$(e)+1)}function u(e){e?(M[U]=M[V],M[q]=M[z]):(M[V]=M[U],M[z]=M[q]),M.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function p(e,t){var n=M[V],r=M[z],i=M[U],o=M[q],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function h(){N(I)}function m(){return N(P)}function g(){return N(O)}function v(e){var t=this[V],r=this[z],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function b(){return j(new t(n),{startContainer:M[V],startOffset:M[z],endContainer:M[U],endOffset:M[q],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return M[V]==M[U]&&M[z]==M[q]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function _(e,t,r){var i,o;for(e?(M[V]=t,M[z]=r):(M[U]=t,M[q]=r),i=M[U];i.parentNode;)i=i.parentNode;for(o=M[V];o.parentNode;)o=o.parentNode;o==i?w(M[V],M[z],M[U],M[q])>0&&M.collapse(e):M.collapse(e),M.collapsed=x(),M.commonAncestorContainer=n.findCommonAncestor(M[V],M[U])}function N(e){var t,n=0,r=0,i,o,a,s,l,c;if(M[V]==M[U])return E(e);for(t=M[U],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return k(t,e);++n}for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[U])return S(t,e);++r}for(o=r-n,a=M[V];o>0;)a=a.parentNode,o--;for(s=M[U];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function E(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),M[z]==M[q])return t;if(3==M[V].nodeType){if(n=M[V].nodeValue,i=n.substring(M[z],M[q]),e!=O&&(o=M[V],c=M[z],u=M[q]-M[z],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),M.collapse(F)),e==I)return;return i.length>0&&t.appendChild(H.createTextNode(i)),t}for(o=C(M[V],M[z]),a=M[q]-M[z];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=O&&M.collapse(F),t}function k(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=$(e),a=o-M[z],0>=a)return t!=O&&(M.setEndBefore(e),M.collapse(W)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=O&&(M.setEndBefore(e),M.collapse(W)),n}function S(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=$(e),++i,a=M[q]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=O&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u,d;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=e.parentNode,s=$(e),l=$(t),++s,c=l-s,u=e.nextSibling;c>0;)d=u.nextSibling,i=D(u,n),o&&o.appendChild(i),u=d,--c;return i=R(t,n),o&&o.appendChild(i),n!=O&&(M.setStartAfter(e),M.collapse(F)),o}function R(e,t){var n=C(M[U],M[q]-1),r,i,o,a,s,l=n!=M[U];if(n==e)return B(n,l,W,t);for(r=n.parentNode,i=B(r,W,W,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,W,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,W,W,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(M[V],M[z]),r=n!=M[V],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,W,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,W,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[z],a=o.substring(l),s=o.substring(0,l)):(l=M[q],a=o.substring(0,l),s=o.substring(l)),i!=O&&(e.nodeValue=s),i==I)return;return c=n.clone(e,W),c.nodeValue=a,c}if(i!=I)return n.clone(e,W)}function D(e,t){return t!=I?t==O?n.clone(e,F):e:(e.parentNode.removeChild(e),void 0)}function L(){return n.create("body",null,g()).outerText}var M=this,H=n.doc,P=0,O=1,I=2,F=!0,W=!1,z="startOffset",V="startContainer",U="endContainer",q="endOffset",j=e.extend,$=n.nodeIndex;return j(M,{startContainer:H,startOffset:0,endContainer:H,endOffset:0,collapsed:F,commonAncestorContainer:H,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:p,deleteContents:h,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return t.prototype.toString=function(){return this.toStringIE()},t}),r(m,[p],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return a}}var r=e.makeMap,i,o,a,s=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&(#x|#)?([\w]+);/g,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"},a={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n,r){return n?(r=parseInt(r,2===n.length?16:10),r>65535?(r-=65536,String.fromCharCode(55296+(r>>10),56320+(1023&r))):d[r]||String.fromCharCode(r)):a[e]||i[e]||t(e)})}};return f}),r(g,[],function(){var e=navigator,t=e.userAgent,n,r,i,o,a,s,l;n=window.opera&&window.opera.buildNumber,r=/WebKit/.test(t),i=!r&&!n&&/MSIE/gi.test(t)&&/Explorer/gi.test(e.appName),i=i&&/MSIE (\w+)\./.exec(t)[1],o=-1!=t.indexOf("Trident")?11:!1,i=i||o,a=!r&&/Gecko/.test(t),s=-1!=t.indexOf("Mac"),l=/(iPad|iPhone)/.test(t);var c=!l||t.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:n,webkit:r,ie:i,gecko:a,mac:s,iOS:l,contentEditable:c,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=i,range:window.getSelection&&"Range"in window,documentMode:i?document.documentMode||7:10}}),r(v,[c,d,l,f,h,m,g,p],function(e,n,r,i,o,a,s,l){function c(e,t){var i=this,o;i.doc=e,i.win=window,i.files={},i.counter=0,i.stdMode=!g||e.documentMode>=8,i.boxModel=!g||"CSS1Compat"==e.compatMode||i.stdMode,i.hasOuterHTML="outerHTML"in e.createElement("a"),i.settings=t=h({keep_values:!1,hex_colors:1},t),i.schema=t.schema,i.styles=new n({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),i.fixDoc(e),i.events=t.ownEvents?new r(t.proxy):r.Event,o=t.schema?t.schema.getBlockElements():{},i.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!o[e.nodeName]):!!o[e]}}var u=l.each,d=l.is,f=l.grep,p=l.trim,h=l.extend,m=s.webkit,g=s.ie,v=/^([a-z0-9],?)+$/i,y=/^[ \t\r\n]*$/,b=l.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," ");return c.prototype={root:null,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},fixDoc:function(e){var t=this.settings,n;if(g&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!g||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),u(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.get(e.settings.root_element)||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),d(n,"string")&&(a=n,n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.get(r.settings.root_element)||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(v.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}return n.nodeType&&1!=n.nodeType?!1:e.matches(r,n.nodeType?[n]:n).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=d(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"</"+e+">":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return this.run(e,function(e){var n,r=e.parentNode;if(!r)return null;if(t)for(;n=e.firstChild;)!g||3!==n.nodeType||n.nodeValue?r.insertBefore(n,e):e.removeChild(n);return r.removeChild(e)})},setStyle:function(e,t,n){return this.run(e,function(e){var r=this,i,o;if(t)if("string"==typeof t){i=e.style,t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"number"!=typeof n||b[t]||(n+="px"),"opacity"===t&&e.runtimeStyle&&"undefined"==typeof e.runtimeStyle.opacity&&(i.filter=""===n?"":"alpha(opacity="+100*n+")"),"float"==t&&(t="cssFloat"in e.style?"cssFloat":"styleFloat");try{i[t]=n}catch(a){}r.settings.update_styles&&e.removeAttribute("data-mce-style")}else for(o in t)r.setStyle(e,o,t[o])})},getStyle:function(e,n,r){if(e=this.get(e)){if(this.doc.defaultView&&r){n=n.replace(/[A-Z]/g,function(e){return"-"+e});try{return this.doc.defaultView.getComputedStyle(e,null).getPropertyValue(n)}catch(i){return null}}return n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=g?"styleFloat":"cssFloat"),e.currentStyle&&r?e.currentStyle[n]:e.style?e.style[n]:t}},setStyles:function(e,t){this.setStyle(e,t)},css:function(e,t,n){this.setStyle(e,t,n)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this;if(e&&t)return this.run(e,function(e){var i=r.settings,o=e.getAttribute(t);if(null!==n)switch(t){case"style":if(!d(n,"string"))return u(n,function(t,n){r.setStyle(e,n,t)}),void 0;i.keep_values&&(n?e.setAttribute("data-mce-style",n,2):e.removeAttribute("data-mce-style",2)),e.style.cssText=n;break;case"class":e.className=n||"";break;case"src":case"href":i.keep_values&&(i.url_converter&&(n=i.url_converter.call(i.url_converter_scope||r,n,t,e)),r.setAttrib(e,"data-mce-"+t,n,2));break;case"shape":e.setAttribute("data-mce-style",n)}d(n)&&null!==n&&0!==n.length?e.setAttribute(t,""+n,2):e.removeAttribute(t,2),o!=n&&i.onSetAttrib&&i.onSetAttrib({attrElm:e,attrName:t,attrValue:n})})},setAttribs:function(e,t){var n=this;return this.run(e,function(e){u(t,function(t,r){n.setAttrib(e,r,t)})})},getAttrib:function(e,t,n){var r,i=this,o;if(e=i.get(e),!e||1!==e.nodeType)return n===o?!1:n;if(d(n)||(n=""),/^(src|href|style|coords|shape)$/.test(t)&&(r=e.getAttribute("data-mce-"+t)))return r;if(g&&i.props[t]&&(r=e[i.props[t]],r=r&&r.nodeValue?r.nodeValue:r),r||(r=e.getAttribute(t,2)),/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(t))return e[i.props[t]]===!0&&""===r?t:r?t:"";if("FORM"===e.nodeName&&e.getAttributeNode(t))return e.getAttributeNode(t).nodeValue;if("style"===t&&(r=r||e.style.cssText,r&&(r=i.serializeStyle(i.parseStyle(r),e.nodeName),i.settings.keep_values&&e.setAttribute("data-mce-style",r))),m&&"class"===t&&r&&(r=r.replace(/(apple|webkit)\-[a-z\-]+/gi,"")),g)switch(t){case"rowspan":case"colspan":1===r&&(r="");break;case"size":("+0"===r||20===r||0===r)&&(r="");break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":0===r&&(r="");break;case"hspace":-1===r&&(r="");break;case"maxlength":case"tabindex":(32768===r||2147483647===r||"32768"===r)&&(r="");break;case"multiple":case"compact":case"noshade":case"nowrap":return 65535===r?t:n;case"shape":r=r.toLowerCase();break;default:0===t.indexOf("on")&&r&&(r=(""+r).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1"))}return r!==o&&null!==r&&""!==r?""+r:n},getPos:function(e,t){var n=this,r=0,i=0,o,a=n.doc,s;if(e=n.get(e),t=t||a.body,e){if(t===a.body&&e.getBoundingClientRect)return s=e.getBoundingClientRect(),t=n.boxModel?a.documentElement:a.body,r=s.left+(a.documentElement.scrollLeft||a.body.scrollLeft)-t.clientTop,i=s.top+(a.documentElement.scrollTop||a.body.scrollTop)-t.clientLeft,{x:r,y:i};for(o=e;o&&o!=t&&o.nodeType;)r+=o.offsetLeft||0,i+=o.offsetTop||0,o=o.offsetParent;for(o=e.parentNode;o&&o!=t&&o.nodeType;)r-=o.scrollLeft||0,i-=o.scrollTop||0,o=o.parentNode}return{x:r,y:i}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==c.DOM&&n===document){var o=c.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,c.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==c.DOM&&n===document?(c.DOM.loadCSS(e),void 0):(e||(e=""),r=n.getElementsByTagName("head")[0],u(e.split(","),function(e){var i;t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),g&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}),void 0)},addClass:function(e,t){return this.run(e,function(e){var n;return t?this.hasClass(e,t)?e.className:(n=this.removeClass(e,t),e.className=n=(""!==n?n+" ":"")+t,n):0})},removeClass:function(e,t){var n=this,r;return n.run(e,function(e){var i;return n.hasClass(e,t)?(r||(r=new RegExp("(^|\\s+)"+t+"(\\s+|$)","g")),i=e.className.replace(r," "),i=p(" "!=i?i:""),e.className=i,i||(e.removeAttribute("class"),e.removeAttribute("className")),i):e.className})},hasClass:function(e,t){return e=this.get(e),e&&t?-1!==(" "+e.className+" ").indexOf(" "+t+" "):!1},toggleClass:function(e,n,r){r=r===t?!this.hasClass(e,n):r,this.hasClass(e,n)!==r&&(r?this.addClass(e,n):this.removeClass(e,n))},show:function(e){return this.setStyle(e,"display","block")},hide:function(e){return this.setStyle(e,"display","none")},isHidden:function(e){return e=this.get(e),!e||"none"==e.style.display||"none"==this.getStyle(e,"display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){var n=this;return n.run(e,function(e){if(g){for(;e.firstChild;)e.removeChild(e.firstChild);try{e.innerHTML="<br />"+t,e.removeChild(e.firstChild)}catch(r){var i=n.create("div");i.innerHTML="<br />"+t,u(f(i.childNodes),function(t,n){n&&e.canHaveHTML&&e.appendChild(t)})}}else e.innerHTML=t;return t})},getOuterHTML:function(e){var t,n=this;return(e=n.get(e))?1===e.nodeType&&n.hasOuterHTML?e.outerHTML:(t=(e.ownerDocument||n.doc).createElement("body"),t.appendChild(e.cloneNode(!0)),t.innerHTML):null},setOuterHTML:function(e,t,n){var r=this;return r.run(e,function(e){function i(){var i,o;for(o=n.createElement("body"),o.innerHTML=t,i=o.lastChild;i;)r.insertAfter(i.cloneNode(!0),e),i=i.previousSibling;r.remove(e)}if(1==e.nodeType)if(n=n||e.ownerDocument||r.doc,g)try{1==e.nodeType&&r.hasOuterHTML?e.outerHTML=t:i()}catch(o){i()}else i()})},decode:a.decode,encode:a.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return d(t,"array")&&(e=e.cloneNode(!0)),n&&u(f(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),u(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(l.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],u(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(g){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,o,a,s,l,c=0;if(e=e.firstChild){s=new i(e,e.parentNode),t=t||n.schema?n.schema.getNonEmptyElements():null;do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(o=n.getAttribs(e),r=e.attributes.length;r--;)if(l=e.attributes[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!y.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new o(this)},nodeIndex:function(e,t){var n=0,r,i,o;if(e)for(r=e.nodeType,e=e.previousSibling,i=e;e;e=e.previousSibling)o=e.nodeType,(!t||3!=o||o!=r&&e.nodeValue.length)&&(n++,r=o);return n},split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=p(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.replaceChild(n,t):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){return this.events.bind(e,t,n,r||this)},unbind:function(e,t,n){return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return 1!=e.nodeType?null:(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null)},destroy:function(){var e=this;e.win=e.doc=e.root=e.events=e.frag=null},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},c.DOM=new c(document),c}),r(y,[v,p],function(e,t){function n(){function e(e,t){function n(){o.remove(s),a&&(a.onreadystatechange=a.onload=a=null),t()}function i(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var o=r,a,s;s=o.uniqueId(),a=document.createElement("script"),a.id=s,a.type="text/javascript",a.src=e,"onreadystatechange"in a?a.onreadystatechange=function(){/loaded|complete/.test(a.readyState)&&n()}:a.onload=n,a.onerror=i,(document.getElementsByTagName("head")[0]||document.body).appendChild(a)}var t=0,n=1,a=2,s={},l=[],c={},u=[],d=0,f;this.isDone=function(e){return s[e]==a},this.markDone=function(e){s[e]=a},this.add=this.load=function(e,n,r){var i=s[e];i==f&&(l.push(e),s[e]=t),n&&(c[e]||(c[e]=[]),c[e].push({func:n,scope:r||this}))},this.loadQueue=function(e,t){this.loadScripts(l,e,t)},this.loadScripts=function(t,r,l){function p(e){i(c[e],function(e){e.func.call(e.scope)}),c[e]=f}var h;u.push({func:r,scope:l||this}),h=function(){var r=o(t);t.length=0,i(r,function(t){return s[t]==a?(p(t),void 0):(s[t]!=n&&(s[t]=n,d++,e(t,function(){s[t]=a,d--,p(t),h()})),void 0)}),d||(i(u,function(e){e.func.call(e.scope)}),u.length=0)},h()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(b,[y,p],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t){var n=r.settings;n&&n.language&&n.language_load!==!1&&e.ScriptLoader.add(this.urls[t]+"/langs/"+n.language+".js")},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(C,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";
+if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(x,[p],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e){var t={},n,r;for(n=0,r=e.length;r>n;n++)t[e[n]]={};return t}var o,l,c,u=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),l=3;l<u.length;l++)"string"==typeof u[l]&&(u[l]=t(u[l])),r.push.apply(r,u[l]);for(e=t(e),o=e.length;o--;)c=[].concat(s,t(n)),a[e[o]]={attributes:i(c),attributesOrder:c,children:i(r)}}function i(e,n){var r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;s>o;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},s,l,c,u,d,f,p;return r[e]?r[e]:(s=t("id accesskey class dir lang style tabindex title"),l=t("onabort onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncontextmenu oncuechange ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onerror onfocus oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata onloadedmetadata onloadstart onmousedown onmousemove onmouseout onmouseover onmouseup onmousewheel onpause onplay onplaying onprogress onratechange onreset onscroll onseeked onseeking onseeking onselect onshow onstalled onsubmit onsuspend ontimeupdate onvolumechange onwaiting"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(s.push.apply(s,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(s.push("xml:lang"),p=t("acronym applet basefont big font strike tt"),u.push.apply(u,p),o(p,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),o(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls",d,"track source"),n("source","src type media"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(i("script","language xml:space"),i("style","xml:space"),i("object","declare classid codebase codetype archive standby align border hspace vspace"),i("param","valuetype type"),i("a","charset name rev shape coords"),i("br","clear"),i("applet","codebase archive code object alt name width height align hspace vspace"),i("img","name longdesc align border hspace vspace"),i("iframe","longdesc frameborder marginwidth marginheight scrolling align"),i("font basefont","size color face"),i("input","usemap align"),i("select","onchange"),i("textarea"),i("h1 h2 h3 h4 h5 h6 div p legend caption","align"),i("ul","type compact"),i("li","type"),i("ol dl menu dir","compact"),i("pre","width xml:space"),i("hr","align noshade size width"),i("isindex","prompt"),i("table","summary width frame rules cellspacing cellpadding align bgcolor"),i("col","width align char charoff valign"),i("colgroup","width align char charoff valign"),i("thead","align char charoff valign"),i("tr","align char charoff valign bgcolor"),i("th","axis align char charoff valign nowrap bgcolor width height"),i("form","accept"),i("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),i("tfoot","align char charoff valign"),i("tbody","align char charoff valign"),i("area","nohref"),i("body","background bgcolor text link vlink alink")),"html4"!=e&&(i("input button select textarea","autofocus"),i("input textarea","placeholder"),i("a","download"),i("link script img","crossorigin"),i("iframe","srcdoc sandbox seamless allowfullscreen")),o(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,r[e]=a,a)}var r={},i=e.makeMap,o=e.each,a=e.extend,s=e.explode,l=e.inArray;return function(e){function c(t,n,o){var s=e[t];return s?s=i(s,",",i(s.toUpperCase()," ")):(s=r[t],s||(s=i(n," ",i(n.toUpperCase()," ")),s=a(s,o),r[t]=s)),s}function u(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function d(e){var n,r,o,a,s,c,d,f,p,h,m,g,y,C,x,w,_,N,E,k=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,S=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),v["@"]&&(w=v["@"].attributes,_=v["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=k.exec(e[n])){if(C=s[1],p=s[2],x=s[3],f=s[5],g={},y=[],c={attributes:g,attributesOrder:y},"#"===C&&(c.paddEmpty=!0),"-"===C&&(c.removeEmpty=!0),"!"===s[4]&&(c.removeEmptyAttrs=!0),w){for(N in w)g[N]=w[N];y.push.apply(y,_)}if(f)for(f=t(f,"|"),o=0,a=f.length;a>o;o++)if(s=S.exec(f[o])){if(d={},m=s[1],h=s[2].replace(/::/g,":"),C=s[3],E=s[4],"!"===m&&(c.attributesRequired=c.attributesRequired||[],c.attributesRequired.push(h),d.required=!0),"-"===m){delete g[h],y.splice(l(y,h),1);continue}C&&("="===C&&(c.attributesDefault=c.attributesDefault||[],c.attributesDefault.push({name:h,value:E}),d.defaultValue=E),":"===C&&(c.attributesForced=c.attributesForced||[],c.attributesForced.push({name:h,value:E}),d.forcedValue=E),"<"===C&&(d.validValues=i(E,"?"))),T.test(h)?(c.attributePatterns=c.attributePatterns||[],d.pattern=u(h),c.attributePatterns.push(d)):(g[h]||y.push(h),g[h]=d)}w||"@"!=p||(w=g,_=y),x&&(c.outputName=p,v[x]=c),T.test(p)?(c.pattern=u(p),b.push(c)):v[p]=c}}function f(e){v={},b=[],d(e),o(x,function(e,t){y[t]=e.children})}function p(e){var n=/^(~)?(.+)$/;e&&o(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",s=t[2];if(y[s]=y[i],R[s]=i,r||(k[s.toUpperCase()]={},k[s]={}),!v[s]){var l=v[i];l=a({},l),delete l.removeEmptyAttrs,delete l.removeEmpty,v[s]=l}o(y,function(e){e[i]&&(e[s]=e[i])})})}function h(e){var n=/^([+\-]?)(\w+)\[([^\]]+)\]$/;e&&o(t(e,","),function(e){var r=n.exec(e),i,a;r&&(a=r[1],i=a?y[r[2]]:y[r[2]]={"#comment":{}},i=y[r[2]],o(t(r[3],"|"),function(e){"-"===a?delete i[e]:i[e]={}}))})}function m(e){var t=v[e],n;if(t)return t;for(n=b.length;n--;)if(t=b[n],t.pattern.test(e))return t}var g=this,v={},y={},b=[],C,x,w,_,N,E,k,S,T,R={},A={};e=e||{},x=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),e.valid_styles&&(C={},o(e.valid_styles,function(e,t){C[t]=s(e)})),w=c("whitespace_elements","pre script noscript style textarea video audio iframe object"),_=c("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),N=c("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),E=c("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),S=c("non_empty_elements","td th iframe video audio object",N),T=c("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),k=c("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup",T),o((e.special||"script noscript style textarea").split(" "),function(e){A[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?f(e.valid_elements):(o(x,function(e,t){v[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},y[t]=e.children}),"html5"!=e.schema&&o(t("strong/b em/i"),function(e){e=t(e,"/"),v[e[1]].outputName=e[0]}),v.img.attributesDefault=[{name:"alt",value:""}],o(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){v[e]&&(v[e].removeEmpty=!0)}),o(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){v[e].paddEmpty=!0}),o(t("span"),function(e){v[e].removeEmptyAttrs=!0})),p(e.custom_elements),h(e.valid_children),d(e.extended_valid_elements),h("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&o(s(e.invalid_elements),function(e){v[e]&&delete v[e]}),m("span")||d("span[!data-mce-type|*]"),g.children=y,g.styles=C,g.getBoolAttrs=function(){return E},g.getBlockElements=function(){return k},g.getTextBlockElements=function(){return T},g.getShortEndedElements=function(){return N},g.getSelfClosingElements=function(){return _},g.getNonEmptyElements=function(){return S},g.getWhiteSpaceElements=function(){return w},g.getSpecialElements=function(){return A},g.isValidChild=function(e,t){var n=y[e];return!(!n||!n[t])},g.isValid=function(e,t){var n,r,i=m(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},g.getElementRule=m,g.getCustomElements=function(){return R},g.addValidElements=d,g.setValidElements=f,g.addCustomElements=p,g.addValidChildren=h,g.elements=v}}),r(w,[x,m,p],function(e,t,n){var r=n.each;return function(n,i){var o=this,a=function(){};n=n||{},o.schema=i=i||new e,n.fix_self_closing!==!1&&(n.fix_self_closing=!0),r("comment cdata text start end pi doctype".split(" "),function(e){e&&(o[e]=n[e]||a)}),o.parse=function(e){function r(e){var t,n;for(t=d.length;t--&&d[t].name!==e;);if(t>=0){for(n=d.length-1;n>=t;n--)e=d[n],e.valid&&a.end(e.name);d.length=t}}function o(e,t,n,r,i){var o,a;if(t=t.toLowerCase(),n=t in b?t:I(n||r||i||""),x&&!g&&0!==t.indexOf("data-")){if(o=k[t],!o&&S){for(a=S.length;a--&&(o=S[a],!o.pattern.test(t)););-1===a&&(o=null)}if(!o)return;if(o.validValues&&!(n in o.validValues))return}f.map[t]=n,f.push({name:t,value:n})}var a=this,s,l=0,c,u,d=[],f,p,h,m,g,v,y,b,C,x,w,_,N,E,k,S,T,R,A,B,D,L,M,H,P,O=0,I=t.decode,F;for(L=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),M=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,y=i.getShortEndedElements(),D=n.self_closing_elements||i.getSelfClosingElements(),b=i.getBoolAttrs(),x=n.validate,v=n.remove_internals,F=n.fix_self_closing,H=i.getSpecialElements();s=L.exec(e);){if(l<s.index&&a.text(I(e.substr(l,s.index-l))),c=s[6])c=c.toLowerCase(),":"===c.charAt(0)&&(c=c.substr(1)),r(c);else if(c=s[7]){if(c=c.toLowerCase(),":"===c.charAt(0)&&(c=c.substr(1)),C=c in y,F&&D[c]&&d.length>0&&d[d.length-1].name===c&&r(c),!x||(w=i.getElementRule(c))){if(_=!0,x&&(k=w.attributes,S=w.attributePatterns),(E=s[8])?(g=-1!==E.indexOf("data-mce-type"),g&&v&&(_=!1),f=[],f.map={},E.replace(M,o)):(f=[],f.map={}),x&&!g){if(T=w.attributesRequired,R=w.attributesDefault,A=w.attributesForced,B=w.removeEmptyAttrs,B&&!f.length&&(_=!1),A)for(p=A.length;p--;)N=A[p],m=N.name,P=N.value,"{$uid}"===P&&(P="mce_"+O++),f.map[m]=P,f.push({name:m,value:P});if(R)for(p=R.length;p--;)N=R[p],m=N.name,m in f.map||(P=N.value,"{$uid}"===P&&(P="mce_"+O++),f.map[m]=P,f.push({name:m,value:P}));if(T){for(p=T.length;p--&&!(T[p]in f.map););-1===p&&(_=!1)}f.map["data-mce-bogus"]&&(_=!1)}_&&a.start(c,f,C)}else _=!1;if(u=H[c]){u.lastIndex=l=s.index+s[0].length,(s=u.exec(e))?(_&&(h=e.substr(l,s.index-l)),l=s.index+s[0].length):(h=e.substr(l),l=e.length),_&&(h.length>0&&a.text(h,!0),a.end(c)),L.lastIndex=l;continue}C||(E&&E.indexOf("/")==E.length-1?_&&a.end(c):d.push({name:c,valid:_}))}else(c=s[1])?a.comment(c):(c=s[2])?a.cdata(c):(c=s[3])?a.doctype(c):(c=s[4])&&a.pi(c,s[5]);l=s.index+s[0].length}for(l<e.length&&a.text(I(e.substr(l))),p=d.length-1;p>=0;p--)c=d[p],c.valid&&a.end(c.name)}}}),r(_,[C,x,w,p],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,p,h,m,g,v,y;for(m=i("tr,td,th,tbody,thead,tfoot,table"),h=l.getNonEmptyElements(),g=l.getTextBlockElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(g[r.name]&&"li"==r.parent.name){for(v=r.next;v&&g[v.name];)v.name="li",v.fixed=!0,r.parent.insert(v,r.parent),v=v.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!l.isValidChild(o.name,r.name)&&!m[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),p=0;p<a.length-1;p++){for(l.isValidChild(c.name,a[p].name)?(d=u.filterNode(a[p].clone()),c.append(d)):d=c,f=a[p].firstChild;f&&f!=a[p+1];)y=f.next,d.append(f),f=y;c=d}s.isEmpty(h)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(h)||o.firstChild===o.lastChild&&"br"===o.firstChild.name)&&o.empty().remove()}else if(r.parent){if("li"===r.name){if(v=r.prev,v&&("ul"===v.name||"ul"===v.name)){v.append(r);continue}if(v=r.next,v&&("ul"===v.name||"ul"===v.name)){v.insert(r,v.firstChild,!0);continue}r.wrap(u.filterNode(new e("ul",1)));continue}l.isValidChild(r.parent.name,"div")&&l.isValidChild("div",r.name)?r.wrap(u.filterNode(new e("div",1))):"style"===r.name||"script"===r.name?r.empty().remove():r.unwrap()}}}var u=this,d={},f=[],p={},h={};r=r||{},r.validate="validate"in r?r.validate:!0,r.root_name=r.root_name||"body",u.schema=l=l||new t,u.filterNode=function(e){var t,n,r;n in d&&(r=p[n],r?r.push(e):p[n]=[e]),t=f.length;for(;t--;)n=f[t].name,n in e.attributes.map&&(r=h[n],r?r.push(e):h[n]=[e]);return e},u.addNodeFilter=function(e,t){o(a(e),function(e){var n=d[e];n||(d[e]=n=[]),n.push(t)})},u.addAttributeFilter=function(e,t){o(a(e),function(e){var n;for(n=0;n<f.length;n++)if(f[n].name===e)return f[n].callbacks.push(t),void 0;f.push({name:e,callbacks:[t]})})},u.parse=function(t,o){function a(){function e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(R,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(D,"")))}var t=y.firstChild,n,r;if(l.isValidChild(y.name,I.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!T[t.name]&&!t.attr("data-mce-type")?r?r.append(t):(r=u(I,1),y.insert(r,t),r.append(t)):(e(r),r=null),t=n;e(r)}}function u(t,n){var r=new e(t,n),i;return t in d&&(i=p[t],i?i.push(r):p[t]=[r]),r}function m(e){var t,n,r;for(t=e.prev;t&&3===t.type;)n=t.value.replace(D,""),n.length>0?(t.value=n,t=t.prev):(r=t.prev,t.remove(),t=r)}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var v,y,b,C,x,w,_,N,E,k,S,T,R,A=[],B,D,L,M,H,P,O,I;if(o=o||{},p={},h={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),O=l.getNonEmptyElements(),P=l.children,S=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,H=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,L=/[ \t\r\n]+/g,M=/^[ \t\r\n]+$/,v=new n({validate:S,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(L," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=S?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=P[b.name],s&&P[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(E=h[a],E?E.push(r):h[a]=[r]);T[e]&&m(r),n||(b=r),!B&&H[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=S?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o}if(B&&H[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(O))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,b.empty().remove(),b=a,void 0;b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),S&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(k in p){for(E=d[k],C=p[k],_=C.length;_--;)C[_].parent||C.splice(_,1);for(x=0,w=E.length;w>x;x++)E[x](C,k,o)}for(x=0,w=f.length;w>x;x++)if(E=f[x],E.name in h){for(C=h[E.name],_=C.length;_--;)C[_].parent||C.splice(_,1);for(_=0,N=E.callbacks.length;N>_;_++)E.callbacks[_](C,E.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,p,h;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(p=l.getElementRule(c.name),p&&(p.removeEmpty?c.remove():p.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(h=new e("#text",3),h.value="\xa0",i.replace(h))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}})}}),r(N,[m,p],function(e,t){var n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var c,u,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');r[r.length]=!n||l?">":" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e," ",t,"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(E,[N,x],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,p,h,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1){for(f=[],f.map={},m=r.getElementRule(e.name),p=0,h=m.attributesOrder.length;h>p;p++)u=m.attributesOrder[p],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(p=0,h=c.length;h>p;p++)u=c[p].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(k,[v,_,m,E,C,x,g,p],function(e,t,n,r,i,o,a,s){var l=s.each,c=s.trim,u=e.DOM;return function(e,i){var s,d,f;return i&&(s=i.dom,d=i.schema),s=s||u,d=d||new o(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,f=new t(e,d),f.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,l=e.url_converter,c=e.url_converter_scope,u;r--;)i=t[r],o=i.attributes.map[a],o!==u?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=s.serializeStyle(s.parseStyle(o),i.name):l&&(o=l.call(c,o,n,i.name)),i.attr(n,o.length>0?o:null))}),f.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null)}),f.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),f.addAttributeFilter("data-mce-expando",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),f.addNodeFilter("noscript",function(e){for(var t=e.length,r;t--;)r=e[t].firstChild,r&&(r.value=n.decode(r.value))}),f.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o;r--;)if(i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t){var a=(i.attr("type")||"text/javascript").replace(/^mce\-/,"");i.attr("type","text/javascript"===a?null:a),o.length>0&&(i.firstChild.value="// <![CDATA[\n"+n(o)+"\n// ]]>")}else o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),f.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),f.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&f.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,("ul"===r.name||"ol"===r.name)&&n.prev&&"li"===n.prev.name&&n.prev.append(n)}),f.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:d,addNodeFilter:f.addNodeFilter,addAttributeFilter:f.addAttributeFilter,serialize:function(t,n){var i=this,o,u,p,h,m;return a.ie&&s.select("script,style,select,map").length>0?(m=t.innerHTML,t=t.cloneNode(!1),s.setHTML(t,m)):t=t.cloneNode(!0),o=t.ownerDocument.implementation,o.createHTMLDocument&&(u=o.createHTMLDocument(""),l("BODY"==t.nodeName?t.childNodes:[t],function(e){u.body.appendChild(u.importNode(e,!0))}),t="BODY"!=t.nodeName?u.body.firstChild:u.body,p=s.doc,s.doc=u),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,i.onPreProcess(n)),h=new r(e,d),n.content=h.serialize(f.parse(c(n.getInner?t.innerHTML:s.getOuterHTML(t)),n)),n.cleanup||(n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||i.onPostProcess(n),p&&(s.doc=p),n.node=null,n.content},addRules:function(e){d.addValidElements(e)},setRules:function(e){d.setValidElements(e)},onPreProcess:function(e){i&&i.fire("PreProcess",e)},onPostProcess:function(e){i&&i.fire("PostProcess",e)}}}}),r(S,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return a[e?"setStart":"setEnd"](r,0),void 0;if(i===c)return a[e?"setStartBefore":"setEndAfter"](r),void 0;if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return a[e?"setStartAfter":"setEndAfter"](r),void 0;if(!i)return 3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l),void 0;for(;l;){if(u=l.nodeValue,s+=u.length,s>=i){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return 3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l),void 0;for(;l;){if(s+=l.nodeValue.length,s>=i){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,h;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),(t==f||t==f.documentElement)&&(t=p,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(h=t.childNodes,h.length?(n>=h.length?i.insertAfter(a,h[h.length-1]):t.insertBefore(a,h[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span>&#xFEFF;</span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))
+}var r,a,s,l,c,u,d,f=e.dom.doc,p=f.body,h,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=p.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="&#xFEFF;":d=null,s.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",d&&(d.innerHTML=""),void 0;l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=p.createControlRange(),a.addElement(m),a.select(),h=e.getRng(),h.item&&m===h.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(T,[g],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey},metaKeyPressed:function(t){return(e.mac?t.ctrlKey||t.metaKey:t.ctrlKey)&&!t.altKey}}}),r(R,[T,p,g],function(e,t,n){return function(r,i){function o(e){return i.settings.object_resizing===!1?!1:/TABLE|IMG|DIV/.test(e.nodeName)?"false"===e.getAttribute("data-mce-resize")?!1:!0:!1}function a(t){var n,r;n=t.screenX-k,r=t.screenY-S,M=n*N[2]+A,H=r*N[3]+B,M=5>M?5:M,H=5>H?5:H,(e.modifierPressed(t)||"IMG"==x.nodeName&&0!==N[2]*N[3])&&(M=Math.round(H/D),H=Math.round(M*D)),b.setStyles(w,{width:M,height:H}),N[2]<0&&w.clientWidth<=M&&b.setStyle(w,"left",T+(A-M)),N[3]<0&&w.clientHeight<=H&&b.setStyle(w,"top",R+(B-H)),L||(i.fire("ObjectResizeStart",{target:x,width:A,height:B}),L=!0)}function s(){function e(e,t){t&&(x.style[e]||!i.schema.isValid(x.nodeName.toLowerCase(),e)?b.setStyle(x,e,t):b.setAttrib(x,e,t))}L=!1,e("width",M),e("height",H),b.unbind(P,"mousemove",a),b.unbind(P,"mouseup",s),O!=P&&(b.unbind(O,"mousemove",a),b.unbind(O,"mouseup",s)),b.remove(w),I&&"TABLE"!=x.nodeName||l(x),i.fire("ObjectResized",{target:x,width:M,height:H}),i.nodeChanged()}function l(e,t,n){var r,l,u,d,f,p=i.getBody().offsetParent||i.getBody();r=b.getPos(e,p),T=r.x,R=r.y,f=e.getBoundingClientRect(),l=f.width||f.right-f.left,u=f.height||f.bottom-f.top,x!=e&&(m(),x=e,M=H=0),d=i.fire("ObjectSelected",{target:e}),o(e)&&!d.isDefaultPrevented()?C(_,function(e,r){function o(t){L=!0,k=t.screenX,S=t.screenY,A=x.clientWidth,B=x.clientHeight,D=B/A,N=e,w=x.cloneNode(!0),b.addClass(w,"mce-clonedresizable"),w.contentEditable=!1,w.unSelectabe=!0,b.setStyles(w,{left:T,top:R,margin:0}),w.removeAttribute("data-mce-selected"),i.getBody().appendChild(w),b.bind(P,"mousemove",a),b.bind(P,"mouseup",s),O!=P&&(b.bind(O,"mousemove",a),b.bind(O,"mouseup",s))}var c,d;return t?(r==t&&o(n),void 0):(c=b.get("mceResizeHandle"+r),c?b.show(c):(d=i.getBody(),c=b.add(d,"div",{id:"mceResizeHandle"+r,"data-mce-bogus":!0,"class":"mce-resizehandle",contentEditable:!1,unSelectabe:!0,style:"cursor:"+r+"-resize; margin:0; padding:0"}),b.bind(c,"mousedown",function(e){e.preventDefault(),o(e)})),b.setStyles(c,{left:l*e[0]+T-c.offsetWidth/2,top:u*e[1]+R-c.offsetHeight/2}),void 0)}):c(),x.setAttribute("data-mce-selected","1")}function c(){var e,t;x&&x.removeAttribute("data-mce-selected");for(e in _)t=b.get("mceResizeHandle"+e),t&&(b.unbind(t),b.remove(t))}function u(e){function t(e,t){do if(e===t)return!0;while(e=e.parentNode)}var n;return C(b.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),n="mousedown"==e.type?e.target:r.getNode(),n=b.getParent(n,I?"table":"table,img,hr"),n&&(g(),t(r.getStart(),n)&&t(r.getEnd(),n)&&(!I||n!=r.getStart()&&"IMG"!==r.getStart().nodeName))?(l(n),void 0):(c(),void 0)}function d(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function f(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function p(e){var t=e.srcElement,n,r,o,a,s,c,u;n=t.getBoundingClientRect(),c=E.clientX-n.left,u=E.clientY-n.top;for(r in _)if(o=_[r],a=t.offsetWidth*o[0],s=t.offsetHeight*o[1],Math.abs(a-c)<8&&Math.abs(s-u)<8){N=o;break}L=!0,i.getDoc().selection.empty(),l(t,r,E)}function h(e){var t=e.srcElement;if(t!=x){if(m(),0===t.id.indexOf("mceResizeHandle"))return e.returnValue=!1,void 0;("IMG"==t.nodeName||"TABLE"==t.nodeName)&&(c(),x=t,d(t,"resizestart",p))}}function m(){f(x,"resizestart",p)}function g(){try{i.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function v(e){var t;if(I){t=P.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function y(){x=w=null,I&&(m(),f(i.getBody(),"controlselect",h))}var b=i.dom,C=t.each,x,w,_,N,E,k,S,T,R,A,B,D,L,M,H,P=i.getDoc(),O=document,I=n.ie&&n.ie<11;_={n:[.5,0,0,-1],e:[1,.5,1,0],s:[.5,1,0,1],w:[0,.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var F=".mce-content-body";return i.contentStyles.push(F+" div.mce-resizehandle {"+"position: absolute;"+"border: 1px solid black;"+"background: #FFF;"+"width: 5px;"+"height: 5px;"+"z-index: 10000"+"}"+F+" .mce-resizehandle:hover {"+"background: #000"+"}"+F+" img[data-mce-selected], hr[data-mce-selected] {"+"outline: 1px solid black;"+"resize: none"+"}"+F+" .mce-clonedresizable {"+"position: absolute;"+(n.gecko?"":"outline: 1px dashed black;")+"opacity: .5;"+"filter: alpha(opacity=50);"+"z-index: 10000"+"}"),i.on("init",function(){I?(i.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(c(),v(e.target))}),d(i.getBody(),"controlselect",h),i.on("mousedown",function(e){E=e})):(g(),n.ie>=11&&i.on("mouseup mousedown",function(e){("IMG"==e.target.nodeName||"IMG"==i.selection.getNode().nodeName)&&(e.preventDefault(),i.selection.select(e.target))})),i.on("nodechange mousedown ResizeEditor",u),i.on("keydown keyup",function(e){x&&"TABLE"==x.nodeName&&u(e)})}),{controlSelect:v,destroy:y}}}),r(A,[f,S,R,g,p],function(e,n,r,i,o){function a(e,t,i,o){var a=this;a.dom=e,a.win=t,a.serializer=i,a.editor=o,a.controlSelection=new r(a,o),a.win.getSelection||(a.tridentSel=new n(a))}var s=o.each,l=o.grep,c=o.trim,u=i.ie,d=i.opera;return a.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,e=t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='<span id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(){var e=this,t=e.getRng(),n,r,i,o;if(t.duplicate||t.item){if(t.item)return t.item(0);for(i=t.duplicate(),i.collapse(1),n=i.parentElement(),n.ownerDocument!==e.dom.doc&&(n=e.dom.getRoot()),r=o=t.parentElement();o=o.parentNode;)if(o==n){n=r;break}return n}return n=t.startContainer,1==n.nodeType&&n.hasChildNodes()&&(n=n.childNodes[Math.min(n.childNodes.length-1,t.startOffset)]),n&&3==n.nodeType?n.parentNode:n},getEnd:function(){var e=this,t=e.getRng(),n,r;return t.duplicate||t.item?t.item?t.item(0):(t=t.duplicate(),t.collapse(0),n=t.parentElement(),n.ownerDocument!==e.dom.doc&&(n=e.dom.getRoot()),n&&"BODY"==n.nodeName?n.lastChild||n:n):(n=t.endContainer,r=t.endOffset,1==n.nodeType&&n.hasChildNodes()&&(n=n.childNodes[r>0?r-1:r]),n&&3==n.nodeType?n.parentNode:n)},getBookmark:function(e,t){function n(e,t){var n=0;return s(a.select(e),function(e,r){e==t&&(n=r)}),n}function r(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function i(){function e(e,n){var i=e[n?"startContainer":"endContainer"],a=e[n?"startOffset":"endOffset"],s=[],l,c,u=0;if(3==i.nodeType){if(t)for(l=i.previousSibling;l&&3==l.nodeType;l=l.previousSibling)a+=l.nodeValue.length;s.push(a)}else c=i.childNodes,a>=c.length&&c.length&&(u=1,a=Math.max(0,c.length-1)),s.push(o.dom.nodeIndex(c[a],t)+u);for(;i&&i!=r;i=i.parentNode)s.push(o.dom.nodeIndex(i,t));return s}var n=o.getRng(!0),r=a.getRoot(),i={};return i.start=e(n,!0),o.isCollapsed()||(i.end=e(n)),i}var o=this,a=o.dom,l,c,u,d,f,p,h="&#xFEFF;",m;if(2==e)return p=o.getNode(),f=p.nodeName,"IMG"==f?{name:f,index:n(f,p)}:o.tridentSel?o.tridentSel.getBookmark(e):i();if(e)return{rng:o.getRng()};if(l=o.getRng(),u=a.uniqueId(),d=o.isCollapsed(),m="overflow:hidden;line-height:0px",l.duplicate||l.item){if(l.item)return p=l.item(0),f=p.nodeName,{name:f,index:n(f,p)};c=l.duplicate();try{l.collapse(),l.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_start" style="'+m+'">'+h+"</span>"),d||(c.collapse(!1),l.moveToElementText(c.parentElement()),0===l.compareEndPoints("StartToEnd",c)&&c.move("character",-1),c.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_end" style="'+m+'">'+h+"</span>"))}catch(g){return null}}else{if(p=o.getNode(),f=p.nodeName,"IMG"==f)return{name:f,index:n(f,p)};c=r(l.cloneRange()),d||(c.collapse(!1),c.insertNode(a.create("span",{"data-mce-type":"bookmark",id:u+"_end",style:m},h))),l=r(l),l.collapse(!0),l.insertNode(a.create("span",{"data-mce-type":"bookmark",id:u+"_start",style:m},h))}return o.moveToBookmark({id:u,keep:1}),{id:u}},moveToBookmark:function(e){function t(t){var n=e[t?"start":"end"],r,i,o,s;if(n){for(o=n[0],i=c,r=n.length-1;r>=1;r--){if(s=i.childNodes,n[r]>s.length-1)return;i=s[n[r]]}3===i.nodeType&&(o=Math.min(n[0],i.nodeValue.length)),1===i.nodeType&&(o=Math.min(n[0],i.childNodes.length)),t?a.setStart(i,o):a.setEnd(i,o)}return!0}function n(t){var n=o.get(e.id+"_"+t),r,i,a,c,u=e.keep;if(n&&(r=n.parentNode,"start"==t?(u?(r=n.firstChild,i=1):i=o.nodeIndex(n),f=p=r,h=m=i):(u?(r=n.firstChild,i=1):i=o.nodeIndex(n),p=r,m=i),!u)){for(c=n.previousSibling,a=n.nextSibling,s(l(n.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});n=o.get(e.id+"_"+t);)o.remove(n,1);c&&a&&c.nodeType==a.nodeType&&3==c.nodeType&&!d&&(i=c.nodeValue.length,c.appendData(a.nodeValue),o.remove(a),"start"==t?(f=p=c,h=m=i):(p=c,m=i))}}function r(e){return!o.isBlock(e)||e.innerHTML||u||(e.innerHTML='<br data-mce-bogus="1" />'),e}var i=this,o=i.dom,a,c,f,p,h,m;if(e)if(e.start){if(a=o.createRng(),c=o.getRoot(),i.tridentSel)return i.tridentSel.moveToBookmark(e);t(!0)&&t()&&i.setRng(a)}else e.id?(n("start"),n("end"),f&&(a=o.createRng(),a.setStart(r(f),h),a.setEnd(r(p),m),i.setRng(a))):e.name?i.select(o.select(e.name)[e.index]):e.rng&&i.setRng(e.rng)},select:function(t,n){function r(t,n){var r=new e(t,t);do{if(3==t.nodeType&&0!==c(t.nodeValue).length)return n?a.setStart(t,0):a.setEnd(t,t.nodeValue.length),void 0;if("BR"==t.nodeName)return n?a.setStartBefore(t):a.setEndBefore(t),void 0}while(t=n?r.next():r.prev())}var i=this,o=i.dom,a=o.createRng(),s;if(i.lastFocusBookmark=null,t){if(!n&&i.controlSelection.controlSelect(t))return;s=o.nodeIndex(t),a.setStart(t.parentNode,s),a.setEnd(t.parentNode,s+1),n&&(r(t,1),r(t)),i.setRng(a)}return t},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){var t=this,n,r,i,o=t.win.document,a;if(!e&&t.lastFocusBookmark){var s=t.lastFocusBookmark;return s.startContainer?(r=o.createRange(),r.setStart(s.startContainer,s.startOffset),r.setEnd(s.endContainer,s.endOffset)):r=s,r}if(e&&t.tridentSel)return t.tridentSel.getRangeAt(0);try{(n=t.getSel())&&(r=n.rangeCount>0?n.getRangeAt(0):n.createRange?n.createRange():o.createRange())}catch(l){}if(u&&r&&r.setStart){try{a=o.selection.createRange()}catch(l){}a&&a.item&&(i=a.item(0),r=o.createRange(),r.setStartBefore(i),r.setEndAfter(i))}return r||(r=o.createRange?o.createRange():o.body.createTextRange()),r.setStart&&9===r.startContainer.nodeType&&r.collapsed&&(i=t.dom.getRoot(),r.setStart(i,0),r.setEnd(i,0)),t.selectedRange&&t.explicitRange&&(0===r.compareBoundaryPoints(r.START_TO_START,t.selectedRange)&&0===r.compareBoundaryPoints(r.END_TO_END,t.selectedRange)?r=t.explicitRange:(t.selectedRange=null,t.explicitRange=null)),r},setRng:function(e,t){var n=this,r;if(e.select)try{e.select()}catch(i){}else if(n.tridentSel){if(e.cloneRange)try{return n.tridentSel.addRange(e),void 0}catch(i){}}else if(r=n.getSel()){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(i){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset;return n?n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):n.item?n.item(0):n.parentElement():t.dom.getRoot()},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){function t(t){function a(t,n){for(var r=new e(t,f.getParent(t.parentNode,f.isBlock)||p);t=r[n?"prev":"next"]();)if("BR"===t.nodeName)return!0}function s(e,t){return e.previousSibling&&e.previousSibling.nodeName==t}function l(t,n){var r,a;for(n=n||c,r=new e(n,f.getParent(n.parentNode,f.isBlock)||p);h=r[t?"prev":"next"]();){if(3===h.nodeType&&h.nodeValue.length>0)return c=h,u=t?h.nodeValue.length:0,i=!0,void 0;if(f.isBlock(h)||m[h.nodeName.toLowerCase()])return;a=h}o&&a&&(c=a,i=!0,u=0)}var c,u,d,f=n.dom,p=f.getRoot(),h,m,g;if(c=r[(t?"start":"end")+"Container"],u=r[(t?"start":"end")+"Offset"],m=f.schema.getNonEmptyElements(),9===c.nodeType&&(c=f.getRoot(),u=0),c===p){if(t&&(h=c.childNodes[u>0?u-1:0],h&&(g=h.nodeName.toLowerCase(),m[h.nodeName]||"TABLE"==h.nodeName)))return;if(c.hasChildNodes()&&(u=Math.min(!t&&u>0?u-1:u,c.childNodes.length-1),c=c.childNodes[u],u=0,c.hasChildNodes()&&!/TABLE/.test(c.nodeName))){h=c,d=new e(c,p);do{if(3===h.nodeType&&h.nodeValue.length>0){u=t?0:h.nodeValue.length,c=h,i=!0;break}if(m[h.nodeName.toLowerCase()]){u=f.nodeIndex(h),c=h.parentNode,"IMG"!=h.nodeName||t||u++,i=!0;break}}while(h=t?d.next():d.prev())}}o&&(3===c.nodeType&&0===u&&l(!0),1===c.nodeType&&(h=c.childNodes[u],!h||"BR"!==h.nodeName||s(h,"A")||a(h)||a(h,!0)||l(!0,c.childNodes[u]))),t&&!o&&3===c.nodeType&&u===c.nodeValue.length&&l(!1),i&&r["set"+(t?"Start":"End")](c,u)}var n=this,r,i,o;u||(r=n.getRng(),o=r.collapsed,t(!0),o||t(),i&&(o&&r.collapse(!0),n.setRng(r,n.isForward())))},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};s(n.selectorChangedData,function(e,t){s(o,function(n){return i.is(n,t)?(r[t]||(s(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),s(r,function(e,n){a[n]||(delete r[n],s(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},scrollIntoView:function(e){var t,n,r=this,i=r.dom;n=i.getViewPort(r.editor.getWin()),t=i.getPos(e).y,(t<n.y||t+25>n.y+n.h)&&r.editor.getWin().scrollTo(0,t<n.y?t:t-n.h+25)},destroy:function(){this.win=null,this.controlSelection.destroy()}},a}),r(B,[p],function(e){function t(e){this.walk=function(t,r){function i(e){var t;return t=e[0],3===t.nodeType&&t===l&&c>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===d&&e.length>0&&t===u&&3===t.nodeType&&e.splice(e.length-1,1),e}function o(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function a(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function s(e,t,n){var a=n?"nextSibling":"previousSibling";for(m=e,g=m.parentNode;m&&m!=t;m=g)g=m.parentNode,v=o(m==e?m:m[a],a),v.length&&(n||v.reverse(),r(i(v)))}var l=t.startContainer,c=t.startOffset,u=t.endContainer,d=t.endOffset,f,p,h,m,g,v,y;if(y=e.select("td.mce-item-selected,th.mce-item-selected"),y.length>0)return n(y,function(e){r([e])}),void 0;if(1==l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[c]),1==u.nodeType&&u.hasChildNodes()&&(u=u.childNodes[Math.min(d-1,u.childNodes.length-1)]),l==u)return r(i([l]));for(f=e.findCommonAncestor(l,u),m=l;m;m=m.parentNode){if(m===u)return s(l,f,!0);if(m===f)break}for(m=u;m;m=m.parentNode){if(m===l)return s(u,f);if(m===f)break}p=a(l,f)||l,h=a(u,f)||u,s(l,p,!0),v=o(p==l?p:p.nextSibling,"nextSibling",h==u?h.nextSibling:h),v.length&&r(i(v)),s(u,h)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}}}var n=e.each;return t.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},t}),r(D,[f,B,p],function(e,t,n){return function(r){function i(e){return e.nodeType&&(e=e.nodeName),!!r.schema.getTextBlockElements()[e.toLowerCase()]}function o(e,t){return I.getParents(e,t,I.getRoot())}function a(e){return 1===e.nodeType&&"_mce_caret"===e.id}function s(){u({alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:!1},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:!1},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){et(n,function(t,n){I.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),et("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){u(e,{block:e,remove:"all"})}),u(r.settings.formats)}function l(){r.addShortcut("ctrl+b","bold_desc","Bold"),r.addShortcut("ctrl+i","italic_desc","Italic"),r.addShortcut("ctrl+u","underline_desc","Underline");for(var e=1;6>=e;e++)r.addShortcut("ctrl+"+e,"",["FormatBlock",!1,"h"+e]);r.addShortcut("ctrl+7","",["FormatBlock",!1,"p"]),r.addShortcut("ctrl+8","",["FormatBlock",!1,"div"]),r.addShortcut("ctrl+9","",["FormatBlock",!1,"address"])}function c(e){return e?O[e]:O}function u(e,t){e&&("string"!=typeof e?et(e,function(e,t){u(t,e)}):(t=t.length?t:[t],et(t,function(e){e.deep===X&&(e.deep=!e.selector),e.split===X&&(e.split=!e.selector||e.inline),e.remove===X&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),O[e]=t))}function d(e){var t;return r.dom.getParent(e,function(e){return t=r.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function f(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=d(e.parentNode),r.dom.getStyle(e,"color")&&t?r.dom.setStyle(e,"text-decoration",t):r.dom.getStyle(e,"textdecoration")===t&&r.dom.setStyle(e,"text-decoration",null))}function p(t,n,o){function s(e,t){t=t||m,e&&(t.onformat&&t.onformat(e,t,n,o),et(t.styles,function(t,r){I.setStyle(e,r,E(t,n))}),et(t.attributes,function(t,r){I.setAttrib(e,r,E(t,n))}),et(t.classes,function(t){t=E(t,n),I.hasClass(e,t)||I.addClass(e,t)}))}function l(){function t(t,n){var r=new e(n);for(o=r.current();o;o=r.prev())if(o.childNodes.length>1||o==t||"BR"==o.tagName)return o}var n=r.selection.getRng(),i=n.startContainer,a=n.endContainer;if(i!=a&&0===n.endOffset){var s=t(i,a),l=3==s.nodeType?s.length:s.childNodes.length;n.setEnd(s,l)}return n}function u(e,t,n,r,i){var o=[],a=-1,s,l=-1,c=-1,u;return et(e.childNodes,function(e,t){return"UL"===e.nodeName||"OL"===e.nodeName?(a=t,s=e,!1):void 0}),et(e.childNodes,function(e,n){"SPAN"===e.nodeName&&"bookmark"==I.getAttrib(e,"data-mce-type")&&(e.id==t.id+"_start"?l=n:e.id==t.id+"_end"&&(c=n))}),0>=a||a>l&&c>a?(et(tt(e.childNodes),i),0):(u=I.clone(n,K),et(tt(e.childNodes),function(e,t){(a>l&&a>t||l>a&&t>a)&&(o.push(e),e.parentNode.removeChild(e))}),a>l?e.insertBefore(u,s):l>a&&e.insertBefore(u,s.nextSibling),r.push(u),et(o,function(e){u.appendChild(e)}),u)}function d(e,r,o){var l=[],c,d,f=!0;c=m.inline||m.block,d=I.create(c),s(d),W.walk(e,function(e){function p(e){var y,C,x,_,N;return N=f,y=e.nodeName.toLowerCase(),C=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&J(e)&&(N=f,f="true"===J(e),_=!0),w(y,"br")?(v=0,m.block&&I.remove(e),void 0):m.wrapper&&g(e,t,n)?(v=0,void 0):f&&!_&&m.block&&!m.wrapper&&i(y)&&z(C,c)?(e=I.rename(e,c),s(e),l.push(e),v=0,void 0):m.selector&&(et(h,function(t){"collapsed"in t&&t.collapsed!==b||I.is(e,t.selector)&&!a(e)&&(s(e,t),x=!0)}),!m.inline||x)?(v=0,void 0):(!f||_||!z(c,y)||!z(C,c)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||a(e)||m.inline&&V(e)?"li"==y&&r?v=u(e,r,d,l,p):(v=0,et(tt(e.childNodes),p),_&&(f=N),v=0):(v||(v=I.clone(d,K),e.parentNode.insertBefore(v,e),l.push(v)),v.appendChild(e)),void 0)}var v;et(e,p)}),m.wrap_links===!1&&et(l,function(e){function t(e){var n,r,i;if("A"===e.nodeName){for(r=I.clone(d,K),l.push(r),i=tt(e.childNodes),n=0;n<i.length;n++)r.appendChild(i[n]);e.appendChild(r)}et(tt(e.childNodes),t)}t(e)}),et(l,function(e){function r(e){var t=0;return et(e.childNodes,function(e){k(e)||D(e)||t++}),t}function i(e){var t,n;return et(e.childNodes,function(e){return 1!=e.nodeType||D(e)||a(e)?void 0:(t=e,K)}),t&&x(t,m)&&(n=I.clone(t,K),s(n),I.replace(n,e,G),I.remove(t,1)),n||e}var o;if(o=r(e),(l.length>1||!V(e))&&0===o)return I.remove(e,1),void 0;if(m.inline||m.wrapper){if(m.exact||1!==o||(e=i(e)),et(h,function(t){et(I.select(t.inline,e),function(e){var r;if(t.wrap_links===!1){r=e.parentNode;do if("A"===r.nodeName)return;while(r=r.parentNode)}R(t,n,e,t.exact?e:null)})}),g(e.parentNode,t,n))return I.remove(e,1),e=0,G;m.merge_with_parents&&I.getParent(e.parentNode,function(r){return g(r,t,n)?(I.remove(e,1),e=0,G):void 0}),e&&m.merge_siblings!==!1&&(e=L(B(e),e),e=L(e,B(e,G)))}})}var h=c(t),m=h[0],v,y,b=!o&&F.isCollapsed();if(m)if(o)o.nodeType?(y=I.createRng(),y.setStartBefore(o),y.setEndAfter(o),d(T(y,h),null,!0)):d(o,null,!0);else if(b&&m.inline&&!I.select("td.mce-item-selected,th.mce-item-selected").length)H("apply",t,n);else{var C=r.selection.getNode();U||!h[0].defaultBlock||I.getParent(C,I.isBlock)||p(h[0].defaultBlock),r.selection.setRng(l()),v=F.getBookmark(),d(T(F.getRng(G),h),v),m.styles&&(m.styles.color||m.styles.textDecoration)&&(nt(C,f,"childNodes"),f(C)),F.moveToBookmark(v),P(F.getRng(G)),r.nodeChanged()}}function h(e,t,n){function i(e){var n,r,o,a,s;if(1===e.nodeType&&J(e)&&(a=b,b="true"===J(e),s=!0),n=tt(e.childNodes),b&&!s)for(r=0,o=p.length;o>r&&!R(p[r],t,e,e);r++);if(h.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(b=a)}}function a(n){var r;return et(o(n.parentNode).reverse(),function(n){var i;r||"_start"==n.id||"_end"==n.id||(i=g(n,e,t),i&&i.split!==!1&&(r=n))}),r}function s(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode,o=n.parentNode;o&&o!=u;o=o.parentNode){for(a=I.clone(o,K),c=0;c<p.length;c++)if(R(p[c],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||h.mixed&&V(e)||(n=I.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return n}function l(e){return s(a(e),e,e,!0)}function u(e){var t=I.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return D(n)&&(n=n[e?"firstChild":"lastChild"]),I.remove(t,!0),n}function f(e){var t,n;e=T(e,p,G),h.split&&(t=M(e,G),n=M(e),t!=n?(/^(TR|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TD"==t.nodeName?t.firstChild||t:t.firstChild.firstChild||t),t=S(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=S(n,"span",{id:"_end","data-mce-type":"bookmark"}),l(t),l(n),t=u(G),n=u()):t=n=l(t),e.startContainer=t.parentNode,e.startOffset=q(t),e.endContainer=n.parentNode,e.endOffset=q(n)+1),W.walk(e,function(e){et(e,function(e){i(e),1===e.nodeType&&"underline"===r.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===d(e.parentNode)&&R({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var p=c(e),h=p[0],m,y,b=!0;return n?(n.nodeType?(y=I.createRng(),y.setStartBefore(n),y.setEndAfter(n),f(y)):f(n),void 0):(F.isCollapsed()&&h.inline&&!I.select("td.mce-item-selected,th.mce-item-selected").length?H("remove",e,t):(m=F.getBookmark(),f(F.getRng(G)),F.moveToBookmark(m),h.inline&&v(e,t,F.getStart())&&P(F.getRng(!0)),r.nodeChanged()),void 0)}function m(e,t,n){var r=c(e);!v(e,t,n)||"toggle"in r[0]&&!r[0].toggle?p(e,t,n):h(e,t,n)}function g(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===X){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?I.getAttrib(e,o):_(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!w(a,N(E(s[o],n),o)))return}}else for(l=0;l<s.length;l++)if("attributes"===i?I.getAttrib(e,s[l]):_(e,s[l]))return t;return t}var o=c(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],x(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!I.hasClass(e,l[s]))return;return a}}function v(e,t,n){function r(n){var r=I.getRoot();return n=I.getParent(n,function(n){return n.parentNode===r||!!g(n,e,t,!0)}),g(n,e,t)}var i;return n?r(n):(n=F.getNode(),r(n)?G:(i=F.getStart(),i!=n&&r(i)?G:K))}function y(e,t){var n,r=[],i={};return n=F.getStart(),I.getParent(n,function(n){var o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&g(n,a,t)&&(i[a]=!0,r.push(a))},I.getRoot()),r}function b(e){var t=c(e),n,r,i,a,s;if(t)for(n=F.getStart(),r=o(n),a=t.length-1;a>=0;a--){if(s=t[a].selector,!s||t[a].defaultBlock)return G;for(i=r.length-1;i>=0;i--)if(I.is(r[i],s))return G}return K}function C(e,t,n){var i;return Y||(Y={},i={},r.on("NodeChange",function(e){var t=o(e.element),n={};et(Y,function(e,r){et(t,function(o){return g(o,r,{},e.similar)?(i[r]||(et(e,function(e){e(!0,{node:o,format:r,parents:t})}),i[r]=e),n[r]=e,!1):void 0})}),et(i,function(r,o){n[o]||(delete i[o],et(r,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),et(e.split(","),function(e){Y[e]||(Y[e]=[],Y[e].similar=n),Y[e].push(t)}),this}function x(e,t){return w(e,t.inline)?G:w(e,t.block)?G:t.selector?1==e.nodeType&&I.is(e,t.selector):void 0}function w(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function _(e,t){return N(I.getStyle(e,t),t)}function N(e,t){return("color"==t||"backgroundColor"==t)&&(e=I.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function E(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function k(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function S(e,t,n){var r=I.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function T(t,n,a){function s(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=I.getRoot(),3==r.nodeType&&!k(r)&&(e?v>0:b<r.nodeValue.length))return r;for(;;){if(!n[0].block_expand&&V(i))return i;for(o=i[a];o;o=o[a])if(!D(o)&&!k(o)&&!t(o))return i;if(i.parentNode==s){r=i;break}i=i.parentNode}return r}function l(e,t){for(t===X&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function c(e){for(var t=e;t;){if(1===t.nodeType&&J(t))return"false"===J(t)?t:e;t=t.parentNode}return e}function u(t,n,i){function o(e,t){var n,r,o=e.nodeValue;return"undefined"==typeof t&&(t=i?o.length:0),i?(n=o.lastIndexOf(" ",t),r=o.lastIndexOf("\xa0",t),n=n>r?n:r,-1===n||a||n++):(n=o.indexOf(" ",t),r=o.indexOf("\xa0",t),n=-1!==n&&(-1===r||r>n)?n:r),n}var s,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(s=new e(t,I.getParent(t,V)||r.getBody());l=s[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(V(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function d(e,r){var i,a,s,l;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=o(e),a=0;a<i.length;a++)for(s=0;s<n.length;s++)if(l=n[s],!("collapsed"in l&&l.collapsed!==t.collapsed)&&I.is(i[a],l.selector))return i[a];
+return e}function f(e,t){var r,a=I.getRoot();if(n[0].wrapper||(r=I.getParent(e,n[0].block)),r||(r=I.getParent(3==e.nodeType?e.parentNode:e,function(e){return e!=a&&i(e)})),r&&n[0].wrapper&&(r=o(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!V(r[t])&&(r=r[t],!w(r,"br")););return r||e}var p,h,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(p=g.childNodes.length-1,g=g.childNodes[v>p?p:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(p=y.childNodes.length-1,y=y.childNodes[b>p?p:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=c(g),y=c(y),(D(g.parentNode)||D(g))&&(g=D(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(D(y.parentNode)||D(y))&&(y=D(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=u(g,v,!0),m&&(g=m.container,v=m.offset),m=u(y,b),m&&(y=m.container,b=m.offset)),h=l(y,b),h.node)){for(;h.node&&0===h.offset&&h.node.previousSibling;)h=l(h.node.previousSibling);h.node&&h.offset>0&&3===h.node.nodeType&&" "===h.node.nodeValue.charAt(h.offset-1)&&h.offset>1&&(y=h.node,y.splitText(h.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=s(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=s())),n[0].selector&&n[0].expand!==K&&!n[0].inline&&(g=d(g,"previousSibling"),y=d(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(V(g)||(g=s(!0)),V(y)||(y=s()))),1==g.nodeType&&(v=q(g),g=g.parentNode),1==y.nodeType&&(b=q(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function R(e,t,n,r){var i,o,a;if(!x(n,e))return K;if("all"!=e.remove)for(et(e.styles,function(e,i){e=N(E(e,t),i),"number"==typeof i&&(i=e,r=0),(!r||w(_(r,i),e))&&I.setStyle(n,i,""),a=1}),a&&""===I.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),et(e.attributes,function(e,i){var o;if(e=E(e,t),"number"==typeof i&&(i=e,r=0),!r||w(I.getAttrib(r,i),e)){if("class"==i&&(e=I.getAttrib(n,i),e&&(o="",et(e.split(/\s+/),function(e){/mce\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return I.setAttrib(n,i,o),void 0;"class"==i&&n.removeAttribute("className"),$.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),et(e.classes,function(e){e=E(e,t),(!r||I.hasClass(r,e))&&I.removeClass(n,e)}),o=I.getAttribs(n),i=0;i<o.length;i++)if(0!==o[i].nodeName.indexOf("_"))return K;return"none"!=e.remove?(A(n,e),G):void 0}function A(e,t){function n(e,t,n){return e=B(e,t,n),!e||"BR"==e.nodeName||V(e)}var r=e.parentNode,i;t.block&&(U?r==I.getRoot()&&(t.list_block&&w(e,t.list_block)||et(tt(e.childNodes),function(e){z(U,e.nodeName.toLowerCase())?i?i.appendChild(e):i=S(e,U):i=0})):V(e)&&!V(r)&&(n(e,K)||n(e.firstChild,G,1)||e.insertBefore(I.create("br"),e.firstChild),n(e,G)||n(e.lastChild,K,1)||e.appendChild(I.create("br")))),t.selector&&t.inline&&!w(t.inline,e)||I.remove(e,1)}function B(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!k(e))return e}function D(e){return e&&1==e.nodeType&&"bookmark"==e.getAttribute("data-mce-type")}function L(e,t){function n(e,t){function n(e){var t={};return et(I.getAttribs(e),function(n){var r=n.nodeName.toLowerCase();0!==r.indexOf("_")&&"style"!==r&&(t[r]=I.getAttrib(e,r))}),t}function r(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],n===X)return K;if(e[r]!=n)return K;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return K;return G}return e.nodeName!=t.nodeName?K:r(n(e),n(t))?r(I.parseStyle(I.getAttrib(e,"style")),I.parseStyle(I.getAttrib(t,"style")))?G:K:K}function r(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return e;if(1==i.nodeType&&!D(i))return i}return e}var i,o;if(e&&t&&(e=r(e,"previousSibling"),t=r(t,"nextSibling"),n(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return I.remove(t),et(tt(t.childNodes),function(t){e.appendChild(t)}),e}return t}function M(t,n){var i,o,a;return i=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],1==i.nodeType&&(a=i.childNodes.length-1,!n&&o&&o--,i=i.childNodes[o>a?a:o]),3===i.nodeType&&n&&o>=i.nodeValue.length&&(i=new e(i,r.getBody()).next()||i),3!==i.nodeType||n||0!==o||(i=new e(i,r.getBody()).prev()||i),i}function H(t,n,o){function a(e){var t=I.create("span",{id:y,"data-mce-bogus":!0,style:b?"color:red":""});return e&&t.appendChild(r.getDoc().createTextNode(j)),t}function s(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==j||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function l(e){for(;e;){if(e.id===y)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=F.getRng(!0),s(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),I.remove(e)):(n=u(e),n.nodeValue.charAt(0)===j&&(n=n.deleteData(0,1)),I.remove(e,1)),F.setRng(r);else if(e=l(F.getStart()),!e)for(;e=I.get(y);)d(e,!1)}function f(){var e,t,r,i,s,d,f;e=F.getRng(!0),i=e.startOffset,d=e.startContainer,f=d.nodeValue,t=l(F.getStart()),t&&(r=u(t)),f&&i>0&&i<f.length&&/\w/.test(f.charAt(i))&&/\w/.test(f.charAt(i-1))?(s=F.getBookmark(),e.collapse(!0),e=T(e,c(n)),e=W.split(e),p(n,o,e),F.moveToBookmark(s)):(t&&r.nodeValue===j?p(n,o,t):(t=a(!0),r=t.firstChild,e.insertNode(t),i=1,p(n,o,t)),F.setCursorLocation(r,i))}function m(){var e=F.getRng(!0),t,r,s,l,u,d,f=[],p,m;for(t=e.startContainer,r=e.startOffset,u=t,3==t.nodeType&&((r!=t.nodeValue.length||t.nodeValue===j)&&(l=!0),u=u.parentNode);u;){if(g(u,n,o)){d=u;break}u.nextSibling&&(l=!0),f.push(u),u=u.parentNode}if(d)if(l)s=F.getBookmark(),e.collapse(!0),e=T(e,c(n),!0),e=W.split(e),h(n,o,e),F.moveToBookmark(s);else{for(m=a(),u=m,p=f.length-1;p>=0;p--)u.appendChild(I.clone(f[p],!1)),u=u.firstChild;u.appendChild(I.doc.createTextNode(j)),u=u.firstChild;var v=I.getParent(d,i);v&&I.isEmpty(v)?d.parentNode.replaceChild(m,d):I.insertAfter(m,d),F.setCursorLocation(u,1),I.isEmpty(d)&&I.remove(d)}}function v(){var e;e=l(F.getStart()),e&&!I.isEmpty(e)&&nt(e,function(e){1!=e.nodeType||e.id===y||I.isEmpty(e)||I.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var y="_mce_caret",b=r.settings.caret_debug;r._hasCaretEvents||(Z=function(){var e=[],t;if(s(l(F.getStart()),e))for(t=e.length;t--;)I.setAttrib(e[t],"data-mce-bogus","1")},Q=function(e){var t=e.keyCode;d(),(8==t||37==t||39==t)&&d(l(F.getStart())),v()},r.on("SetContent",function(e){e.selection&&v()}),r._hasCaretEvents=!0),"apply"==t?f():m()}function P(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if(3==n.nodeType&&r>=n.nodeValue.length&&(r=q(n),n=n.parentNode,i=!0),1==n.nodeType)for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,I.getParent(n,I.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!k(a))return l=I.create("a",null,j),a.parentNode.insertBefore(l,a),t.setStart(a,0),F.setRng(t),I.remove(l),void 0}var O={},I=r.dom,F=r.selection,W=new t(I),z=r.schema.isValidChild,V=I.isBlock,U=r.settings.forced_root_block,q=I.nodeIndex,j="\ufeff",$=/^(src|href|style)$/,K=!1,G=!0,Y,X,J=I.getContentEditable,Q,Z,et=n.each,tt=n.grep,nt=n.walk,rt=n.extend;rt(this,{get:c,register:u,apply:p,remove:h,toggle:m,match:v,matchAll:y,matchNode:g,canApply:b,formatChanged:C}),s(),l(),r.on("BeforeGetContent",function(){Z&&Z()}),r.on("mouseup keydown",function(e){Q&&Q(e)})}}),r(L,[g,p],function(e,t){var n=t.trim,r;return r=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>","<div[^>]+data-mce-bogus[^>]+><\\/div>",'\\s?data-mce-selected="[^"]+"'].join("|"),"gi"),function(t){function i(){return n(t.getContent({format:"raw",no_events:1}).replace(r,""))}function o(){a.typing=!1,a.add()}var a,s=0,l=[],c,u,d;return t.on("init",function(){a.add()}),t.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&a.beforeChange()}),t.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&a.add()}),t.on("ObjectResizeStart",function(){a.beforeChange()}),t.on("SaveContent ObjectResized",o),t.dom.bind(t.dom.getRoot(),"dragend",o),t.dom.bind(t.getBody(),"focusout",function(){!t.removed&&a.typing&&o()}),t.on("KeyUp",function(n){var r=n.keyCode;(r>=33&&36>=r||r>=37&&40>=r||45==r||13==r||n.ctrlKey)&&(o(),t.nodeChanged()),(46==r||8==r||e.mac&&(91==r||93==r))&&t.nodeChanged(),u&&a.typing&&(t.isDirty()||(t.isNotDirty=!l[0]||i()==l[0].content,t.isNotDirty||t.fire("change",{level:l[0],lastLevel:null})),t.fire("TypingUndo"),u=!1,t.nodeChanged())}),t.on("KeyDown",function(e){var t=e.keyCode;return t>=33&&36>=t||t>=37&&40>=t||45==t?(a.typing&&o(),void 0):((16>t||t>20)&&224!=t&&91!=t&&!a.typing&&(a.beforeChange(),a.typing=!0,a.add(),u=!0),void 0)}),t.on("MouseDown",function(){a.typing&&o()}),t.addShortcut("ctrl+z","","Undo"),t.addShortcut("ctrl+y,ctrl+shift+z","","Redo"),t.on("AddUndo Undo Redo ClearUndos MouseUp",function(e){e.isDefaultPrevented()||t.nodeChanged()}),a={data:l,typing:!1,beforeChange:function(){d||(c=t.selection.getBookmark(2,!0))},add:function(e){var n,r=t.settings,o;if(e=e||{},e.content=i(),d||t.fire("BeforeAddUndo",{level:e}).isDefaultPrevented())return null;if(o=l[s],o&&o.content==e.content)return null;if(l[s]&&(l[s].beforeBookmark=c),r.custom_undo_redo_levels&&l.length>r.custom_undo_redo_levels){for(n=0;n<l.length-1;n++)l[n]=l[n+1];l.length--,s=l.length}e.bookmark=t.selection.getBookmark(2,!0),s<l.length-1&&(l.length=s+1),l.push(e),s=l.length-1;var a={level:e,lastLevel:o};return t.fire("AddUndo",a),s>0&&(t.fire("change",a),t.isNotDirty=!1),e},undo:function(){var e;return a.typing&&(a.add(),a.typing=!1),s>0&&(e=l[--s],t.setContent(e.content,{format:"raw"}),t.selection.moveToBookmark(e.beforeBookmark),t.fire("undo",{level:e})),e},redo:function(){var e;return s<l.length-1&&(e=l[++s],t.setContent(e.content,{format:"raw"}),t.selection.moveToBookmark(e.bookmark),t.fire("redo",{level:e})),e},clear:function(){l=[],s=0,a.typing=!1,t.fire("ClearUndos")},hasUndo:function(){return s>0||a.typing&&l[0]&&i()!=l[0].content},hasRedo:function(){return s<l.length-1&&!this.typing},transact:function(e){a.beforeChange(),d=!0,e(),d=!1,a.add()}}}}),r(M,[f,g],function(e,t){var n=t.ie&&t.ie<11;return function(t){function r(r){function u(e){return e&&i.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==i.getContentEditable(e)}function d(e){var t;i.isBlock(e)&&(t=o.getRng(),e.appendChild(i.create("span",null,"\xa0")),o.select(e),e.lastChild.outerHTML="",o.setRng(t))}function f(e){for(var t=e,n=[],r;t=t.firstChild;){if(i.isBlock(t))return;1!=t.nodeType||c[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?i.remove(t):"A"==t.nodeName&&" "===(t.innerText||t.textContent)&&i.remove(t)}function p(t){var n,r,a,s=t,l;if(a=i.createRng(),t.hasChildNodes()){for(n=new e(t,t);r=n.current();){if(3==r.nodeType){a.setStart(r,0),a.setEnd(r,0);break}if(c[r.nodeName.toLowerCase()]){a.setStartBefore(r),a.setEndBefore(r);break}s=r,r=n.next()}r||(a.setStart(s,0),a.setEnd(s,0))}else"BR"==t.nodeName?t.nextSibling&&i.isBlock(t.nextSibling)?((!R||9>R)&&(l=i.create("br"),t.parentNode.insertBefore(l,t)),a.setStartBefore(t),a.setEndBefore(t)):(a.setStartAfter(t),a.setEndAfter(t)):(a.setStart(t,0),a.setEnd(t,0));o.setRng(a),i.remove(l),o.scrollIntoView(t)}function h(e){var t=k,r,o,s;if(r=e||"TABLE"==M?i.create(e||P):T.cloneNode(!1),s=r,a.keep_styles!==!1)do if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(t.nodeName)){if("_mce_caret"==t.id)continue;o=t.cloneNode(!1),i.setAttrib(o,"id",""),r.hasChildNodes()?(o.appendChild(r.firstChild),r.appendChild(o)):(s=o,r.appendChild(o))}while(t=t.parentNode);return n||(s.innerHTML='<br data-mce-bogus="1">'),r}function m(t){var n,r,i;if(3==k.nodeType&&(t?S>0:S<k.nodeValue.length))return!1;if(k.parentNode==T&&O&&!t)return!0;if(t&&1==k.nodeType&&k==T.firstChild)return!0;if("TABLE"===k.nodeName||k.previousSibling&&"TABLE"==k.previousSibling.nodeName)return O&&!t||!O&&t;for(n=new e(k,T),3==k.nodeType&&(t&&0===S?n.prev():t||S!=k.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),c[i]&&"br"!==i))return!1}else if(3===r.nodeType&&!/^[ \t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function g(e,n){var r,o,a,s,c,d,f=P||"P";if(o=i.getParent(e,i.isBlock),d=t.getBody().nodeName.toLowerCase(),!o||!u(o)){if(o=o||E,!o.hasChildNodes())return r=i.create(f),o.appendChild(r),_.setStart(r,0),_.setEnd(r,0),r;for(s=e;s.parentNode!=o;)s=s.parentNode;for(;s&&!i.isBlock(s);)a=s,s=s.previousSibling;if(a&&l.isValidChild(d,f.toLowerCase())){for(r=i.create(f),a.parentNode.insertBefore(r,a),s=a;s&&!i.isBlock(s);)c=s.nextSibling,r.appendChild(s),s=c;_.setStart(e,n),_.setEnd(e,n)}}return e}function v(){function e(e){for(var t=L[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return t===T}function t(){var e=L.parentNode;return"LI"==e.nodeName?e:L}var n=L.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(P="LI"),B=P?h(P):i.create("BR"),e(!0)&&e()?"LI"==n?i.insertAfter(B,t()):i.replace(B,L):e(!0)?"LI"==n?(i.insertAfter(B,t()),B.appendChild(i.doc.createTextNode(" ")),B.appendChild(L)):L.parentNode.insertBefore(B,L):e()?(i.insertAfter(B,t()),d(B)):(L=t(),N=_.cloneRange(),N.setStartAfter(T),N.setEndAfter(L),D=N.extractContents(),i.insertAfter(D,L),i.insertAfter(B,L)),i.remove(T),p(B),s.add()}function y(){for(var t=new e(k,T),n;n=t.next();)if(c[n.nodeName.toLowerCase()]||n.length>0)return!0}function b(){var e,t,r;k&&3==k.nodeType&&S>=k.nodeValue.length&&(n||y()||(e=i.create("br"),_.insertNode(e),_.setStartAfter(e),_.setEndAfter(e),t=!0)),e=i.create("br"),_.insertNode(e),n&&"PRE"==M&&(!R||8>R)&&e.parentNode.insertBefore(i.doc.createTextNode("\r"),e),r=i.create("span",{},"&nbsp;"),e.parentNode.insertBefore(r,e),o.scrollIntoView(r),i.remove(r),t?(_.setStartBefore(e),_.setEndBefore(e)):(_.setStartAfter(e),_.setEndAfter(e)),o.setRng(_),s.add()}function C(e){do 3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function x(e){var t=i.getRoot(),n,r;for(n=e;n!==t&&"false"!==i.getContentEditable(n);)"true"===i.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==t?r:t}function w(e){var t;n||(e.normalize(),t=e.lastChild,(!t||/^(left|right)$/gi.test(i.getStyle(t,"float",!0)))&&i.add(e,"br"))}var _=o.getRng(!0),N,E,k,S,T,R,A,B,D,L,M,H,P,O;if(!_.collapsed)return t.execCommand("Delete"),void 0;if(!r.isDefaultPrevented()&&(k=_.startContainer,S=_.startOffset,P=(a.force_p_newlines?"p":"")||a.forced_root_block,P=P?P.toUpperCase():"",R=i.doc.documentMode,A=r.shiftKey,1==k.nodeType&&k.hasChildNodes()&&(O=S>k.childNodes.length-1,k=k.childNodes[Math.min(S,k.childNodes.length-1)]||k,S=O&&3==k.nodeType?k.nodeValue.length:0),E=x(k))){if(s.beforeChange(),!i.isBlock(E)&&E!=i.getRoot())return(!P||A)&&b(),void 0;if((P&&!A||!P&&A)&&(k=g(k,S)),T=i.getParent(k,i.isBlock),L=T?i.getParent(T.parentNode,i.isBlock):null,M=T?T.nodeName.toUpperCase():"",H=L?L.nodeName.toUpperCase():"","LI"!=H||r.ctrlKey||(T=L,M=H),"LI"==M){if(!P&&A)return b(),void 0;if(i.isEmpty(T))return v(),void 0}if("PRE"==M&&a.br_in_pre!==!1){if(!A)return b(),void 0}else if(!P&&!A&&"LI"!=M||P&&A)return b(),void 0;P&&T===t.getBody()||(P=P||"P",m()?(B=/^(H[1-6]|PRE|FIGURE)$/.test(M)&&"HGROUP"!=H?h(P):h(),a.end_container_on_empty_block&&u(L)&&i.isEmpty(T)?B=i.split(L,T):i.insertAfter(B,T),p(B)):m(!0)?(B=T.parentNode.insertBefore(h(),T),d(B)):(N=_.cloneRange(),N.setEndAfter(T),D=N.extractContents(),C(D),B=D.firstChild,i.insertAfter(D,T),f(B),w(T),p(B)),i.setAttrib(B,"id",""),s.add())}}var i=t.dom,o=t.selection,a=t.settings,s=t.undoManager,l=t.schema,c=l.getNonEmptyElements();t.on("keydown",function(e){13==e.keyCode&&r(e)!==!1&&e.preventDefault()})}}),r(H,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,p,h,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){h=t,t=t.nextSibling,r.remove(h);continue}p||(p=r.create(C),t.parentNode.insertBefore(p,t),g=!0),h=t,t=t.nextSibling,p.appendChild(h)}else p=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(P,[E,g,p],function(e,n,r){var i=r.each,o=r.extend,a=r.map,s=r.inArray,l=r.explode,c=n.gecko,u=n.ie,d=!0,f=!1;return function(n){function r(e,t,n){var r;return e=e.toLowerCase(),(r=_.exec[e])?(r(e,t,n),d):f}function p(e){var t;return e=e.toLowerCase(),(t=_.state[e])?t(e):-1}function h(e){var t;return e=e.toLowerCase(),(t=_.value[e])?t(e):f}function m(e,t){t=t||"exec",i(e,function(e,n){i(n.toLowerCase().split(","),function(n){_[t][n]=e})})}function g(e,r,i){return r===t&&(r=f),i===t&&(i=null),n.getDoc().execCommand(e,r,i)}function v(e){return E.match(e)}function y(e,r){E.toggle(e,r?{value:r}:t),n.nodeChanged()}function b(e){k=w.getBookmark(e)}function C(){w.moveToBookmark(k)}var x=n.dom,w=n.selection,_={state:{},exec:{},value:{}},N=n.settings,E=n.formatter,k;o(this,{execCommand:r,queryCommandState:p,queryCommandValue:h,addCommands:m}),m({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(e){var t=n.getDoc(),r;try{g(e)}catch(i){r=d}(r||!t.queryCommandSupported(e))&&n.windowManager.alert("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.")},unlink:function(e){w.isCollapsed()&&w.select(w.getNode()),g(e),w.collapse(f)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t=e.substring(7);"full"==t&&(t="justify"),i("left,center,right,justify".split(","),function(e){t!=e&&E.remove("align"+e)}),y("align"+t),r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;g(e),t=x.getParent(w.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(b(),x.split(n,t),C()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){y(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){y(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=l(N.font_size_style_values),r=l(N.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),y(e,n)},RemoveFormat:function(e){E.remove(e)},mceBlockQuote:function(){y("blockquote")},FormatBlock:function(e,t,n){return y(n||"p")},mceCleanup:function(){var e=w.getBookmark();n.setContent(n.getContent({cleanup:d}),{cleanup:d}),w.moveToBookmark(e)},mceRemoveNode:function(e,t,r){var i=r||w.getNode();i!=n.getBody()&&(b(),n.dom.remove(i,d),C())},mceSelectNodeDepth:function(e,t,r){var i=0;x.getParent(w.getNode(),function(e){return 1==e.nodeType&&i++==r?(w.select(e),f):void 0},n.getBody())},mceSelectNode:function(e,t,n){w.select(n)},mceInsertContent:function(t,r,i){function o(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=w.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^&nbsp;/," "):t("previousSibling")||(e=e.replace(/^ /,"&nbsp;")),i<r.length?e=e.replace(/&nbsp;(<br>|)$/," "):t("nextSibling")||(e=e.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),e}var a,s,l,c,d,f,p,h,m,g,v,y,b,C;if(/^ | $/.test(i)&&(i=o(i)),a=n.parser,s=new e({},n.schema),b='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;</span>',f={content:i,format:"html",selection:!0},n.fire("BeforeSetContent",f),i=f.content,-1==i.indexOf("{$caret}")&&(i+="{$caret}"),i=i.replace(/\{\$caret\}/,b),w.isCollapsed()||n.getDoc().execCommand("Delete",!1,null),l=w.getNode(),f={context:l.nodeName.toLowerCase()},d=a.parse(i,f),v=d.lastChild,"mce_marker"==v.attr("id"))for(p=v,v=v.prev;v;v=v.walk(!0))if(3==v.type||!x.isBlock(v.name)){v.parent.insert(p,v,"br"===v.name);break}if(f.invalid){for(w.setContent(b),l=w.getNode(),c=n.getBody(),9==l.nodeType?l=v=c:v=l;v!==c;)l=v,v=v.parentNode;i=l==c?c.innerHTML:x.getOuterHTML(l),i=s.serialize(a.parse(i.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return s.serialize(d)}))),l==c?x.setHTML(c,i):x.setOuterHTML(l,i)}else i=s.serialize(d),v=l.firstChild,y=l.lastChild,!v||v===y&&"BR"===v.nodeName?x.setHTML(l,i):w.setContent(i);p=x.get("mce_marker"),h=x.getRect(p),m=x.getViewPort(n.getWin()),(h.y+h.h>m.y+m.h||h.y<m.y||h.x>m.x+m.w||h.x<m.x)&&(C=u?n.getDoc().documentElement:n.getBody(),C.scrollLeft=h.x,C.scrollTop=h.y-m.h+25),g=x.createRng(),v=p.previousSibling,v&&3==v.nodeType?(g.setStart(v,v.nodeValue.length),u||(y=p.nextSibling,y&&3==y.nodeType&&(v.appendData(y.data),y.parentNode.removeChild(y)))):(g.setStartBefore(p),g.setEndBefore(p)),x.remove(p),w.setRng(g),n.fire("SetContent",f),n.addVisual()},mceInsertRawHTML:function(e,t,r){w.setContent("tiny_mce_marker"),n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return r}))},mceToggleFormat:function(e,t,n){y(n)},mceSetContent:function(e,t,r){n.setContent(r)},"Indent,Outdent":function(e){var t,n,r;t=N.indentation,n=/[a-z%]+$/i.exec(t),t=parseInt(t,10),p("InsertUnorderedList")||p("InsertOrderedList")?g(e):(N.forced_root_block||x.getParent(w.getNode(),x.isBlock)||E.apply("div"),i(w.getSelectedBlocks(),function(i){var o;"LI"!=i.nodeName&&(o="rtl"==x.getStyle(i,"direction",!0)?"paddingRight":"paddingLeft","outdent"==e?(r=Math.max(0,parseInt(i.style[o]||0,10)-t),x.setStyle(i,o,r?r+n:"")):(r=parseInt(i.style[o]||0,10)+t+n,x.setStyle(i,o,r)))}))},mceRepaint:function(){if(c)try{b(d),w.getSel()&&w.getSel().selectAllChildren(n.getBody()),w.collapse(d),C()}catch(e){}},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual,n.addVisual()},mceReplaceContent:function(e,t,r){n.execCommand("mceInsertContent",!1,r.replace(/\{\$selection\}/g,w.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=x.getParent(w.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||E.remove("link"),n.href&&E.apply("link",n,r)},selectAll:function(){var e=x.getRoot(),t=x.createRng();w.getRng().setStart?(t.setStart(e,0),t.setEnd(e,e.childNodes.length),w.setRng(t)):g("SelectAll")},mceNewDocument:function(){n.setContent("")}}),m({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=w.isCollapsed()?[x.getParent(w.getNode(),x.isBlock)]:w.getSelectedBlocks(),r=a(n,function(e){return!!E.matchNode(e,t)});return-1!==s(r,d)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return v(e)},mceBlockQuote:function(){return v("blockquote")},Outdent:function(){var e;if(N.inline_styles){if((e=x.getParent(w.getStart(),x.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return d;if((e=x.getParent(w.getEnd(),x.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return d}return p("InsertUnorderedList")||p("InsertOrderedList")||!N.inline_styles&&!!x.getParent(w.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=x.getParent(w.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),m({"FontSize,FontName":function(e){var t=0,n;return(n=x.getParent(w.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),m({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}),r(O,[p],function(e){function t(e,i){var o=this,a,s;return e=r(e),i=o.settings=i||{},/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)?(o.source=e,void 0):(0===e.indexOf("/")&&0!==e.indexOf("//")&&(e=(i.base_uri?i.base_uri.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(s=i.base_uri?i.base_uri.path:new t(location.href).directory,e=(i.base_uri&&i.base_uri.protocol||"http")+"://mce_host"+o.toAbsPath(s,e)),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),o[t]=r}),a=i.base_uri,a&&(o.protocol||(o.protocol=a.protocol),o.userInfo||(o.userInfo=a.userInfo),o.port||"mce_host"!==o.host||(o.port=a.port),o.host&&"mce_host"!==o.host||(o.host=a.host),o.source=""),void 0)}var n=e.each,r=e.trim;return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(this.host==e.host&&this.protocol==e.protocol?n:0)},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;a>o;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return(!n.source||e)&&(t="",e||(n.protocol&&(t+=n.protocol+"://"),n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t}),r(I,[p],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r;if(!o&&(r=this,r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){t=t;for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],u[d]="function"==typeof f&&c[d]?s(d,f):f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r(F,[I,p],function(e,t){function n(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var r=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,i=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,o=/^\s*|\s*$/g,a,s=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function n(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.hasClass(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?0===n%2:"odd"===e?1===n%2:t[e]?t[e]():!1})):void 0}function c(e,i,c){function u(e){e&&i.push(e)}var d;return d=r.exec(e.replace(o,"")),u(t(d[1])),u(n(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),i.psuedo=!!d[7],i.direct=c,i}function u(e,t){var n=[],r,o,a;do if(i.exec(""),o=i.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){r=o[3];break}while(o);for(r&&u(r,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,n){var r,i,o,a,s,l,c,u,d,f,p,h,m;for(n=n||this._selectors,r=0,i=n.length;i>r;r++){for(s=n[r],a=s.length,m=e,h=0,o=a-1;o>=0;o--)for(u=s[o];m;){for(u.psuedo&&(p=m.parent().items(),d=t.inArray(m,p),f=p.length),l=0,c=u.length;c>l;l++)if(!u[l](m,d,f)){l=c+1;break}if(l===c){h++;break}if(o===a-1)break;m=m.parent()}if(h===a)return!0}return!1},find:function(e){function t(e,n,i){var o,a,s,l,c,u=n[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==n.length-1?r.push(c):c.items&&t(c.items(),n,i+1);else if(u.direct)return;c.items&&t(c.items(),n,i)}}var r=[],i,o,l=this._selectors;if(e.items){for(i=0,o=l.length;o>i;i++)t(e.items(),l[i],0);o>1&&(r=n(r))}return a||(a=s.Collection),new a(r)}});return s}),r(W,[p,F,I],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].hasClass(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this}},e.each("fire on off show hide addClass removeClass append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)
+}}),r=n.extend(i),t.Collection=r,r}),r(z,[p,v],function(e,t){return{id:function(){return t.DOM.uniqueId()},createFragment:function(e){return t.DOM.createFragment(e)},getWindowSize:function(){return t.DOM.getViewPort()},getSize:function(e){return t.DOM.getSize(e)},getPos:function(e,n){return t.DOM.getPos(e,n)},getViewPort:function(e){return t.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,n){return t.DOM.addClass(e,n)},removeClass:function(e,n){return t.DOM.removeClass(e,n)},hasClass:function(e,n){return t.DOM.hasClass(e,n)},toggleClass:function(e,n,r){return t.DOM.toggleClass(e,n,r)},css:function(e,n,r){return t.DOM.setStyle(e,n,r)},on:function(e,n,r,i){return t.DOM.bind(e,n,r,i)},off:function(e,n,r){return t.DOM.unbind(e,n,r)},fire:function(e,n,r){return t.DOM.fire(e,n,r)},innerHtml:function(e,n){t.DOM.setHTML(e,n)}}}),r(V,[I,p,W,z],function(e,t,n,r){var i=t.makeMap("focusin focusout scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave wheel keydown keypress keyup contextmenu"," "),o={},a="onmousewheel"in document,s=!1,l=e.extend({Statics:{controlIdLookup:{}},classPrefix:"mce-",init:function(e){var n=this,i,o;if(n.settings=e=t.extend({},n.Defaults,e),n._id=r.id(),n._text=n._name="",n._width=n._height=0,n._aria={role:e.role},i=e.classes)for(i=i.split(" "),i.map={},o=i.length;o--;)i.map[i[o]]=!0;n._classes=i||[],n.visible(!0),t.each("title text width height name classes visible disabled active value".split(" "),function(t){var r=e[t],i;r!==i?n[t](r):n["_"+t]===i&&(n["_"+t]=!1)}),n.on("click",function(){return n.disabled()?!1:void 0}),e.classes&&t.each(e.classes.split(" "),function(e){n.addClass(e)}),n.settings=e,n._borderBox=n.parseBox(e.border),n._paddingBox=n.parseBox(e.padding),n._marginBox=n.parseBox(e.margin),e.hidden&&n.hide()},Properties:"parent,title,text,width,height,disabled,active,name,value",Methods:"renderHtml",getContainerElm:function(){return document.body},getParentCtrl:function(e){for(var t;e&&!(t=l.controlIdLookup[e.id]);)e=e.parentNode;return t},parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},borderBox:function(){return this._borderBox},paddingBox:function(){return this._paddingBox},marginBox:function(){return this._marginBox},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseInt(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}},initLayoutRect:function(){var e=this,t=e.settings,n,r,i=e.getEl(),o,a,s,l,c,u,d;n=e._borderBox=e._borderBox||e.measureBox(i,"border"),e._paddingBox=e._paddingBox||e.measureBox(i,"padding"),e._marginBox=e._marginBox||e.measureBox(i,"margin"),u=t.minWidth,d=t.minHeight,s=u||i.offsetWidth,l=d||i.offsetHeight,o=t.width,a=t.height,c=t.autoResize,c="undefined"!=typeof c?c:!o&&!a,o=o||s,a=a||l;var f=n.left+n.right,p=n.top+n.bottom,h=t.maxWidth||65535,m=t.maxHeight||65535;return e._layoutRect=r={x:t.x||0,y:t.y||0,w:o,h:a,deltaW:f,deltaH:p,contentW:o-f,contentH:a-p,innerW:o-f,innerH:a-p,startMinWidth:u||0,startMinHeight:d||0,minW:Math.min(s,h),minH:Math.min(l,m),maxW:h,maxH:m,autoResize:c,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var t=this,n=t._layoutRect,r,i,o,a,s,c;return n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,(r.x!==n.x||r.y!==n.y||r.w!==n.w||r.h!==n.h)&&(c=l.repaintControls,c&&c.map&&!c.map[t._id]&&(c.push(t),c.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o=0,a=0,s;t=e.getEl().style,r=e._layoutRect,s=e._lastRepaintRect||{},i=e._borderBox,o=i.left+i.right,a=i.top+i.bottom,r.x!==s.x&&(t.left=r.x+"px",s.x=r.x),r.y!==s.y&&(t.top=r.y+"px",s.y=r.y),r.w!==s.w&&(t.width=r.w-o+"px",s.w=r.w),r.h!==s.h&&(t.height=r.h-a+"px",s.h=r.h),e._hasBody&&r.innerW!==s.innerW&&(n=e.getEl("body").style,n.width=r.innerW+"px",s.innerW=r.innerW),e._hasBody&&r.innerH!==s.innerH&&(n=n||e.getEl("body").style,n.height=r.innerH+"px",s.innerH=r.innerH),e._lastRepaintRect=s,e.fire("repaint",{},!1)},on:function(e,t){function n(e){var t,n;return function(i){return t||r.parents().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t.call(n,i)}}var r=this,o,a,s,l;if(t)for("string"==typeof t&&(t=n(t)),s=e.toLowerCase().split(" "),l=s.length;l--;)e=s[l],o=r._bindings,o||(o=r._bindings={}),a=o[e],a||(a=o[e]=[]),a.push(t),i[e]&&(r._nativeEvents?r._nativeEvents[e]=!0:r._nativeEvents={name:!0},r._rendered&&r.bindPendingEvents());return r},off:function(e,t){var n=this,r,i=n._bindings,o,a,s,l;if(i)if(e)for(s=e.toLowerCase().split(" "),r=s.length;r--;){if(e=s[r],o=i[e],!e){for(a in i)i[a].length=0;return n}if(o)if(t)for(l=o.length;l--;)o[l]===t&&o.splice(l,1);else o.length=0}else n._bindings=[];return n},fire:function(e,t,n){function r(){return!1}function i(){return!0}var o=this,a,s,l,c;if(e=e.toLowerCase(),t=t||{},t.type||(t.type=e),t.control||(t.control=o),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=i},t.stopPropagation=function(){t.isPropagationStopped=i},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=i},t.isDefaultPrevented=r,t.isPropagationStopped=r,t.isImmediatePropagationStopped=r),o._bindings&&(l=o._bindings[e]))for(a=0,s=l.length;s>a&&(t.isImmediatePropagationStopped()||l[a].call(o,t)!==!1);a++);if(n!==!1)for(c=o.parent();c&&!t.isPropagationStopped();)c.fire(e,t,!1),c=c.parent();return t},parents:function(e){var t=this,r=new n;for(t=t.parent();t;t=t.parent())r.add(t);return e&&(r=r.filter(e)),r},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},findCommonAncestor:function(e,t){for(var n;e;){for(n=t;n&&e!=n;)n=n.parent();if(e==n)break;e=e.parent()}return e},hasClass:function(e,t){var n=this._classes[t||"control"];return e=this.classPrefix+e,n&&!!n.map[e]},addClass:function(e,t){var n=this,r,i;return e=this.classPrefix+e,r=n._classes[t||"control"],r||(r=[],r.map={},n._classes[t||"control"]=r),r.map[e]||(r.map[e]=e,r.push(e),n._rendered&&(i=n.getEl(t),i&&(i.className=r.join(" ")))),n},removeClass:function(e,t){var n=this,r,i,o;if(e=this.classPrefix+e,r=n._classes[t||"control"],r&&r.map[e])for(delete r.map[e],i=r.length;i--;)r[i]===e&&r.splice(i,1);return n._rendered&&(o=n.getEl(t),o&&(o.className=r.join(" "))),n},toggleClass:function(e,t,n){var r=this;return t?r.addClass(e,n):r.removeClass(e,n),r},classes:function(e){var t=this._classes[e||"control"];return t?t.join(" "):""},innerHtml:function(e){return r.innerHtml(this.getEl(),e),this},getEl:function(e,t){var n,i=e?this._id+"-"+e:this._id;return n=o[i]=(t===!0?null:o[i])||r.get(i)},visible:function(e){var t=this,n;return"undefined"!=typeof e?(t._visible!==e&&(t._rendered&&(t.getEl().style.display=e?"":"none"),t._visible=e,n=t.parent(),n&&(n._lastRect=null),t.fire(e?"show":"hide")),t):t._visible},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl();return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n._rendered&&("label"==e&&r.setAttribute("aria-labeledby",n._id),r.setAttribute("role"==e?e:"aria-"+e,t)),n)},encode:function(e,t){return t!==!1&&l.translate&&(e=l.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),i;if(e.items)for(var o=e.items().toArray(),a=o.length;a--;)o[a].remove();return n&&n.items&&(i=[],n.items().each(function(t){t!==e&&i.push(t)}),n.items().set(i),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&r.off(t),delete l.controlIdLookup[e._id],t.parentNode&&t.parentNode.removeChild(t),e},renderBefore:function(e){var t=this;return e.parentNode.insertBefore(r.createFragment(t.renderHtml()),e),t.postRender(),t},renderTo:function(e){var t=this;return e=e||t.getContainerElm(),e.appendChild(r.createFragment(t.renderHtml())),t.postRender(),t},postRender:function(){var e=this,t=e.settings,n,i,o,a,s;for(a in t)0===a.indexOf("on")&&e.on(a.substr(2),t[a]);if(e._eventsRoot){for(o=e.parent();!s&&o;o=o.parent())s=o._eventsRoot;if(s)for(a in s._nativeEvents)e._nativeEvents[a]=!0}e.bindPendingEvents(),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e._visible||r.css(e.getEl(),"display","none"),e.settings.border&&(i=e.borderBox(),r.css(e.getEl(),{"border-top-width":i.top,"border-right-width":i.right,"border-bottom-width":i.bottom,"border-left-width":i.left})),l.controlIdLookup[e._id]=e;for(var c in e._aria)e.aria(c,e._aria[c]);e.fire("postrender",{},!1)},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},bindPendingEvents:function(){function e(e){var t=o.getParentCtrl(e.target);t&&t.fire(e.type,e)}function t(){var e=d._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),d._lastHoverCtrl=null)}function n(e){var t=o.getParentCtrl(e.target),n=d._lastHoverCtrl,r=0,i,a,s;if(t!==n){if(d._lastHoverCtrl=t,a=t.parents().toArray().reverse(),a.push(t),n){for(s=n.parents().toArray().reverse(),s.push(n),r=0;r<s.length&&a[r]===s[r];r++);for(i=s.length-1;i>=r;i--)n=s[i],n.fire("mouseleave",{target:n.getEl()})}for(i=r;i<a.length;i++)t=a[i],t.fire("mouseenter",{target:t.getEl()})}}function i(e){e.preventDefault(),"mousewheel"==e.type?(e.deltaY=-1/40*e.wheelDelta,e.wheelDeltaX&&(e.deltaX=-1/40*e.wheelDeltaX)):(e.deltaX=0,e.deltaY=e.detail),e=o.fire("wheel",e)}var o=this,l,c,u,d,f,p;if(o._rendered=!0,f=o._nativeEvents){for(u=o.parents().toArray(),u.unshift(o),l=0,c=u.length;!d&&c>l;l++)d=u[l]._eventsRoot;for(d||(d=u[u.length-1]||o),o._eventsRoot=d,c=l,l=0;c>l;l++)u[l]._eventsRoot=d;for(p in f){if(!f)return!1;"wheel"!==p||s?("mouseenter"===p||"mouseleave"===p?d._hasMouseEnter||(r.on(d.getEl(),"mouseleave",t),r.on(d.getEl(),"mouseover",n),d._hasMouseEnter=1):d[p]||(r.on(d.getEl(),p,e),d[p]=!0),f[p]=!1):a?r.on(o.getEl(),"mousewheel",i):r.on(o.getEl(),"DOMMouseScroll",i)}}},reflow:function(){return this.repaint(),this}});return l}),r(U,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(q,[V,W,F,U,p,z],function(e,t,n,r,i,o){var a={};return e.extend({layout:"",innerClass:"container-inner",init:function(e){var n=this;n._super(e),e=n.settings,n._fixed=e.fixed,n._items=new t,n.addClass("container"),n.addClass("container-body","body"),e.containerCls&&n.addClass(e.containerCls),n._layout=r.create((e.layout||n.layout)+"layout"),n.settings.items&&n.add(n.settings.items),n._hasBody=!0},items:function(){return this._items},find:function(e){return e=a[e]=a[e]||new n(e),e.find(this)},add:function(e){var t=this;return t.items().add(t.create(e)).parent(t),t},focus:function(){var e=this;return e.keyNav?e.keyNav.focusFirst():e._super(),e},replace:function(e,t){for(var n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,o,a=[];return i.isArray(t)||(t=[t]),i.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),o=i.extend({},n.settings.defaults,t),t.type=o.type=o.type||t.type||n.settings.defaultType||(o.defaults?o.defaults.type:null),t=r.create(o)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r,i;t.parent(e),t._rendered||(r=e.getEl("body"),i=o.createFragment(t.renderHtml()),r.hasChildNodes()&&n<=r.childNodes.length-1?r.insertBefore(i,r.childNodes[n]):r.appendChild(i),t.postRender())}),e._layout.applyClasses(e),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var t=this;for(var n in e)t.find("#"+n).value(e[n]);return t},toJSON:function(){var e=this,t={};return e.find("*").each(function(e){var n=e.name(),r=e.value();n&&"undefined"!=typeof r&&(t[n]=r)}),t},preRender:function(){},renderHtml:function(){var e=this,t=e._layout;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'" role="'+this.settings.role+'">'+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div>"+"</div>"},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e._rendered=!0,e.settings.style&&o.css(e.getEl(),e.settings.style),e.settings.border&&(t=e.borderBox(),o.css(e.getEl(),{"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t,n;if(this.visible()){for(e.repaintControls=[],e.repaintControls.map={},n=this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(j,[z],function(e){function t(){var e=document,t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}return function(n,r){function i(){return a.getElementById(r.handle||n)}var o,a=document,s,l,c,u,d,f;r=r||{},l=function(n){var l=t(),p,h;n.preventDefault(),s=n.button,p=i(),d=n.screenX,f=n.screenY,h=window.getComputedStyle?window.getComputedStyle(p,null).getPropertyValue("cursor"):p.runtimeStyle.cursor,o=a.createElement("div"),e.css(o,{position:"absolute",top:0,left:0,width:l.width,height:l.height,zIndex:2147483647,opacity:1e-4,background:"red",cursor:h}),a.body.appendChild(o),e.on(a,"mousemove",u),e.on(a,"mouseup",c),r.start(n)},u=function(e){return e.button!==s?c(e):(e.deltaX=e.screenX-d,e.deltaY=e.screenY-f,e.preventDefault(),r.drag(e),void 0)},c=function(t){e.off(a,"mousemove",u),e.off(a,"mouseup",c),o.parentNode.removeChild(o),r.stop&&r.stop(t)},this.destroy=function(){e.off(i())},e.on(i(),"mousedown",l)}}),r($,[z,j],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,p,h,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),i.getEl("absend")&&e.css(i.getEl("absend"),y,i.layoutRect()[l]-1),!c)return e.css(f,"display","none"),void 0;e.css(f,"display","block"),d=i.getEl("body"),p=i.getEl("scroll"+t+"t"),h=d["client"+s]-2*o,h-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=h/m,v={},v[y]=d["offset"+a]+o,v[b]=h,e.css(f,v),v={},v[y]=d["scroll"+a]*g,v[b]=h*g,e.css(p,v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;i.getEl().appendChild(e.createFragment('<div id="'+u+'" class="'+d+"scrollbar "+d+"scrollbar-"+n+'">'+'<div id="'+u+'t" class="'+d+'scrollbar-thumb"></div>'+"</div>")),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e.addClass(e.get(u),d+"active")},drag:function(e){var t,u,d,f,p=i.layoutRect();u=p.contentW>p.innerW,d=p.contentH>p.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e.removeClass(e.get(u),d+"active")}})}i.addClass("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e.on(i.getEl("body"),"scroll",n)),n())}}}),r(K,[q,$],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes()+'" hideFocus="1" tabIndex="-1">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(G,[z],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t._fixed&&(a-=f.x,s-=f.y),i=t.getEl(),l=i.offsetWidth,c=i.offsetHeight,u=n.offsetWidth,d=n.offsetHeight,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o<r.length;o++){var a=t(this,n,r[o]);if(this._fixed){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return r[o]}else if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return this.moveTo(r.x,r.y)},moveBy:function(e,t){var n=this,r=n.layoutRect();return n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return 0>e?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i._rendered?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(Y,[z],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(X,[K,G,Y,z],function(e,t,n,r){function i(e){var t;for(t=s.length;t--;)s[t]===e&&s.splice(t,1)}var o,a,s=[],l=[],c,u=e.extend({Mixins:[t,n],init:function(e){function t(){var e,t=u.zIndex||65535,n;if(l.length)for(e=0;e<l.length;e++)l[e].modal&&(t++,n=l[e]),l[e].getEl().style.zIndex=t,l[e].zIndex=t,t++;var i=document.getElementById(d.classPrefix+"modal-block");n?r.css(i,"z-index",n.zIndex-1):i&&(i.parentNode.removeChild(i),c=!1),u.currentZIndex=t}function n(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function i(e){function t(t,n){for(var r,i=0;i<s.length;i++)if(s[i]!=e)for(r=s[i].parent();r&&(r=r.parent());)r==e&&s[i].fixed(t).moveBy(0,n).repaint()}var n=r.getViewPort().y;e.settings.autofix&&(e._fixed?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}var d=this;d._super(e),d._eventsRoot=d,d.addClass("floatpanel"),e.autohide&&(o||(o=function(e){var t,r=d.getParentCtrl(e.target);for(t=s.length;t--;){var i=s[t];if(i.settings.autohide){if(r&&(n(r,i)||i.parent()===r))continue;e=i.fire("autohide",{target:e.target}),e.isDefaultPrevented()||i.hide()}}},r.on(document,"click",o)),s.push(d)),e.autofix&&(a||(a=function(){var e;for(e=s.length;e--;)i(s[e])},r.on(window,"scroll",a)),d.on("move",function(){i(this)})),d.on("postrender show",function(e){if(e.control==d){var n,i=d.classPrefix;d.modal&&!c&&(n=r.createFragment('<div id="'+i+'modal-block" class="'+i+"reset "+i+'fade"></div>'),n=n.firstChild,d.getContainerElm().appendChild(n),setTimeout(function(){r.addClass(n,i+"in"),r.addClass(d.getEl(),i+"in")},0),c=!0),l.push(d),t()}}),d.on("close hide",function(e){if(e.control==d){for(var n=l.length;n--;)l[n]===d&&l.splice(n,1);t()}}),d.on("show",function(){d.parents().each(function(e){return e._fixed?(d.fixed(!0),!1):void 0})}),e.popover&&(d._preBodyHtml='<div class="'+d.classPrefix+'arrow"></div>',d.addClass("popover").addClass("bottom").addClass("start"))},fixed:function(e){var t=this;if(t._fixed!=e){if(t._rendered){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.toggleClass("fixed",e),t._fixed=e}return t},show:function(){var e=this,t,n=e._super();for(t=s.length;t--&&s[t]!==e;);return-1===t&&s.push(e),n},hide:function(){return i(this),this._super()},hideAll:function(){u.hideAll()},close:function(){var e=this;return e.fire("close"),e.remove()},remove:function(){i(this),this._super()}});return u.hideAll=function(){for(var e=s.length;e--;){var t=s[e];t.settings.autohide&&(t.fire("cancel",{},!1),t.hide(),s.splice(e,1))}},u}),r(J,[z],function(e){return function(t){function n(){if(!h)if(h=[],d.find)d.find("*").each(function(e){e.canFocus&&h.push(e.getEl())});else for(var e=d.getEl().getElementsByTagName("*"),t=0;t<e.length;t++)e[t].id&&e[t]&&h.push(e[t])}function r(){return document.getElementById(m)}function i(e){return e=e||r(),e&&e.getAttribute("role")}function o(e){for(var t,n=e||r();n=n.parentNode;)if(t=i(n))return t}function a(e){var t=document.getElementById(m);return t?t.getAttribute("aria-"+e):void 0}function s(){var n=r();if(!n||"TEXTAREA"!=n.nodeName&&"text"!=n.type)return t.onAction?t.onAction(m):e.fire(r(),"click",{keyboard:!0}),!0}function l(){var e;t.onCancel?((e=r())&&e.blur(),t.onCancel()):t.root.fire("cancel")}function c(e){function r(e){for(var t=d?d.getEl():document.body;e&&e!=t;){if("none"==e.style.display)return!1;e=e.parentNode}return!0}var i=-1,o,a,l=[];for(n(),a=l.length,a=0;a<h.length;a++)r(h[a])&&l.push(h[a]);for(a=l.length;a--;)if(l[a].id===m){i=a;break}i+=e,0>i?i=l.length-1:i>=l.length&&(i=0),o=l[i],o.focus(),m=o.id,t.actOnFocus&&s()}function u(){var e,r;for(r=i(t.root.getEl()),n(),e=h.length;e--;)if("toolbar"==r&&h[e].id===m)return h[e].focus(),void 0;h[0].focus()}var d=t.root,f=t.enableUpDown!==!1,p=t.enableLeftRight!==!1,h=t.items,m;return d.on("keydown",function(e){var n=37,r=39,u=38,d=40,h=27,m=14,g=13,v=32,y=9,b;switch(e.keyCode){case n:p&&(t.leftAction?t.leftAction():c(-1),b=!0);break;case r:p&&("menuitem"==i()&&"menu"==o()?a("haspopup")&&s():c(1),b=!0);break;case u:f&&(c(-1),b=!0);break;case d:f&&("menuitem"==i()&&"menubar"==o()?s():"button"==i()&&a("haspopup")?s():c(1),b=!0);break;case y:b=!0,e.shiftKey?c(-1):c(1);break;case h:b=!0,l();break;case m:case g:case v:b=s()}b&&(e.stopPropagation(),e.preventDefault())}),d.on("focusin",function(e){n(),m=e.target.id}),{moveFocus:c,focusFirst:u,cancel:l}}}),r(Q,[X,K,z,J,j],function(e,t,n,r,i){var o=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.addClass("window"),n._fixed=!0,e.buttons&&(n.statusbar=new t({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.addClass("foot"),n.statusbar.parent(n)),n.on("click",function(e){-1!=e.target.className.indexOf(n.classPrefix+"close")&&n.close()}),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e=this,t=e.statusbar,r,i,o;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(e.layoutRect({w:i}),o=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(e.layoutRect({w:i}),o=!0)),o&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;e.settings.title&&!e._fullscreen&&(i=e.getEl("head"),t.headerW=i.offsetWidth,t.headerH=i.offsetHeight,r+=t.headerH),e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var o=n.getWindowSize();return t.x=Math.max(0,o.w/2-t.w/2),t.y=Math.max(0,o.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='<div id="'+n+'-head" class="'+r+'window-head">'+'<div class="'+r+'title">'+e.encode(i.title)+"</div>"+'<button type="button" class="'+r+'close" aria-hidden="true">&times;</button>'+'<div id="'+n+'-dragh" class="'+r+'dragh"></div>'+"</div>"),i.url&&(s='<iframe src="'+i.url+'" tabindex="-1"></iframe>'),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes()+'" hideFocus="1" tabIndex="-1">'+o+'<div id="'+n+'-body" class="'+e.classes("body")+'">'+s+"</div>"+a+"</div>"},fullscreen:function(e){var t=this,r=document.documentElement,i,o=t.classPrefix,a;if(e!=t._fullscreen)if(n.on(window,"resize",function(){var e;if(t._fullscreen)if(i)t._timer||(t._timer=setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(i=!0)}}),a=t.layoutRect(),t._fullscreen=e,e){t._initial={x:a.x,y:a.y,w:a.w,h:a.h},t._borderBox=t.parseBox("0"),t.getEl("head").style.display="none",a.deltaH-=a.headerH+2,n.addClass(r,o+"fullscreen"),n.addClass(document.body,o+"fullscreen"),t.addClass("fullscreen");var s=n.getWindowSize();t.moveTo(0,0).resizeTo(s.w,s.h)}else t._borderBox=t.parseBox(t.settings.border),t.getEl("head").style.display="",a.deltaH+=a.headerH,n.removeClass(r,o+"fullscreen"),n.removeClass(document.body,o+"fullscreen"),t.removeClass("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t=[],n,o,a;setTimeout(function(){e.addClass("in")},0),e.keyboardNavigation=new r({root:e,enableLeftRight:!1,enableUpDown:!1,items:t,onCancel:function(){e.close()}}),e.find("*").each(function(e){e.canFocus&&(o=o||e.settings.autofocus,n=n||e,"filepicker"==e.type?(t.push(e.getEl("inp")),e.getEl("open")&&t.push(e.getEl("open").firstChild)):t.push(e.getEl()))}),e.statusbar&&e.statusbar.find("*").each(function(e){e.canFocus&&(o=o||e.settings.autofocus,n=n||e,t.push(e.getEl()))}),e._super(),e.statusbar&&e.statusbar.postRender(),!o&&n&&n.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){a={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(t){e.moveTo(a.x+t.deltaX,a.y+t.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()})},submit:function(){var e=this.getParentCtrl(document.activeElement);return e&&e.blur(),this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this;e._super(),e.dragHelper.destroy(),e.statusbar&&this.statusbar.remove()}});return o}),r(Z,[Q],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){var r,i=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close(),i(!0)}},{type:"button",text:"Cancel",onClick:function(e){e.control.parents()[1].close(),i(!1)}}];break;case t.YES_NO:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close(),i(!0)}}];break;case t.YES_NO_CANCEL:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close()}}];break;default:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close()}}]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:r,title:n.title,items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onClose:n.onClose}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(et,[Q,Z],function(e,t){return function(n){var r=this,i=[];r.windows=i,r.open=function(t,r){var o;return t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){o.find("form")[0].submit(),o.close()}},{text:"Cancel",onclick:function(){o.close()}}]),o=new e(t),i.push(o),o.on("close",function(){for(var e=i.length;e--;)i[e]===o&&i.splice(e,1);n.focus()}),t.data&&o.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),o.params=r||{},n.nodeChanged(),o.renderTo(document.body).reflow()},r.alert=function(e,n,r){t.alert(e,function(){n.call(r||this)})},r.confirm=function(e,n,r){t.confirm(e,function(e){n.call(r||this,e)})},r.close=function(){i.length&&i[i.length-1].close()},r.getParams=function(){return i.length?i[i.length-1].params:null},r.setParams=function(e){i.length&&(i[i.length-1].params=e)}}}),r(tt,[T,B,C,m,g,p],function(e,t,n,r,i,o){return function(a){function s(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(n){}}function l(){var e=a.getDoc().documentMode;return e?e:6}function c(e){return e.isDefaultPrevented()}function u(){function t(e){function t(){if(3==l.nodeType){if(e&&c==l.length)return!0;if(!e&&0===c)return!0}}var n,r,i,s,l,c,u;n=W.getRng();var d=[n.startContainer,n.startOffset,n.endContainer,n.endOffset];if(n.collapsed||(e=!0),l=n[(e?"start":"end")+"Container"],c=n[(e?"start":"end")+"Offset"],3==l.nodeType&&(r=F.getParent(n.startContainer,F.isBlock),e&&(r=F.getNext(r,F.isBlock)),!r||!t()&&n.collapsed||(i=F.create("em",{id:"__mceDel"}),P(o.grep(r.childNodes),function(e){i.appendChild(e)}),r.appendChild(i))),n=F.createRng(),n.setStart(d[0],d[1]),n.setEnd(d[2],d[3]),W.setRng(n),a.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),i){for(s=W.getBookmark();u=F.get("__mceDel");)F.remove(u,!0);
+W.moveToBookmark(s)}}a.on("keydown",function(n){var r;r=n.keyCode==I,c(n)||!r&&n.keyCode!=O||e.modifierPressed(n)||(n.preventDefault(),t(r))}),a.addCommand("Delete",function(){t()})}function d(){function e(e){var t=F.create("body"),n=e.cloneContents();return t.appendChild(n),W.serializer.serialize(t,{format:"html"})}function t(t){var n=e(t),r=F.createRng();r.selectNode(a.getBody());var i=e(r);return n===i}a.on("keydown",function(e){var n=e.keyCode,r;if(!c(e)&&(n==I||n==O)){if(r=a.selection.isCollapsed(),r&&!F.isEmpty(a.getBody()))return;if(j&&!r)return;if(!r&&!t(a.selection.getRng()))return;e.preventDefault(),a.setContent(""),a.selection.setCursorLocation(a.getBody(),0),a.nodeChanged()}})}function f(){a.on("keydown",function(t){!c(t)&&65==t.keyCode&&e.metaKeyPressed(t)&&(t.preventDefault(),a.execCommand("SelectAll"))})}function p(){a.settings.content_editable||(F.bind(a.getDoc(),"focusin",function(){W.setRng(W.getRng())}),F.bind(a.getDoc(),"mousedown",function(e){e.target==a.getDoc().documentElement&&(a.getWin().focus(),W.setRng(W.getRng()))}))}function h(){a.on("keydown",function(e){if(!c(e)&&e.keyCode===O&&W.isCollapsed()&&0===W.getRng(!0).startOffset){var t=W.getNode(),n=t.previousSibling;n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(F.remove(n),e.preventDefault())}})}function m(){window.Range.prototype.getClientRects||a.on("mousedown",function(e){if(!c(e)&&"HTML"===e.target.nodeName){var t=a.getBody();t.blur(),setTimeout(function(){t.focus()},0)}})}function g(){a.on("click",function(e){e=e.target,/^(IMG|HR)$/.test(e.nodeName)&&W.getSel().setBaseAndExtent(e,0,e,1),"A"==e.nodeName&&F.hasClass(e,"mce-item-anchor")&&W.select(e),a.nodeChanged()})}function v(){function e(){var e=F.getAttribs(W.getStart().cloneNode(!1));return function(){var t=W.getStart();t!==a.getBody()&&(F.setAttrib(t,"style",null),P(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!W.isCollapsed()&&F.getParent(W.getStart(),F.isBlock)!=F.getParent(W.getEnd(),F.isBlock)}a.on("keypress",function(n){var r;return c(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),a.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),F.bind(a.getDoc(),"cut",function(n){var r;!c(n)&&t()&&(r=e(),setTimeout(function(){r()},0))})}function y(){var e,n;a.on("selectionchange",function(){n&&(clearTimeout(n),n=0),n=window.setTimeout(function(){var n=W.getRng();e&&t.compareRanges(n,e)||(a.nodeChanged(),e=n)},50)})}function b(){document.body.setAttribute("role","application")}function C(){a.on("keydown",function(e){if(!c(e)&&e.keyCode===O&&W.isCollapsed()&&0===W.getRng(!0).startOffset){var t=W.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function x(){l()>7||(s("RespectVisibilityInDesign",!0),a.contentStyles.push(".mceHideBrInPre pre br {display: none}"),F.addClass(a.getBody(),"mceHideBrInPre"),V.addNodeFilter("pre",function(e){for(var t=e.length,r,i,o,a;t--;)for(r=e[t].getAll("br"),i=r.length;i--;)o=r[i],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new n("#text",3),o,!0).value="\n"}),U.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function w(){F.bind(a.getBody(),"mouseup",function(){var e,t=W.getNode();"IMG"==t.nodeName&&((e=F.getStyle(t,"width"))&&(F.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),F.setStyle(t,"width","")),(e=F.getStyle(t,"height"))&&(F.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),F.setStyle(t,"height","")))})}function _(){a.on("keydown",function(t){var n,r,i,o,s,l,u,d;if(n=t.keyCode==I,!c(t)&&(n||t.keyCode==O)&&!e.modifierPressed(t)&&(r=W.getRng(),i=r.startContainer,o=r.startOffset,u=r.collapsed,3==i.nodeType&&i.nodeValue.length>0&&(0===o&&!u||u&&o===(n?0:1)))){if(l=i.previousSibling,l&&"IMG"==l.nodeName)return;d=a.schema.getNonEmptyElements(),t.preventDefault(),s=F.create("br",{id:"__tmp"}),i.parentNode.insertBefore(s,i),a.getDoc().execCommand(n?"ForwardDelete":"Delete",!1,null),i=W.getRng().startContainer,l=i.previousSibling,l&&1==l.nodeType&&!F.isBlock(l)&&F.isEmpty(l)&&!d[l.nodeName.toLowerCase()]&&F.remove(l),F.remove("__tmp")}})}function N(){a.on("keydown",function(t){var n,r,i,o,s;if(!c(t)&&t.keyCode==e.BACKSPACE&&(n=W.getRng(),r=n.startContainer,i=n.startOffset,o=F.getRoot(),s=r,n.collapsed&&0===i)){for(;s&&s.parentNode&&s.parentNode.firstChild==s&&s.parentNode!=o;)s=s.parentNode;"BLOCKQUOTE"===s.tagName&&(a.formatter.toggle("blockquote",null,s),n=F.createRng(),n.setStart(r,0),n.setEnd(r,0),W.setRng(n))}})}function E(){function e(){a._refreshContentEditable(),s("StyleWithCSS",!1),s("enableInlineTableEditing",!1),z.object_resizing||s("enableObjectResizing",!1)}z.readonly||a.on("BeforeExecCommand MouseDown",e)}function k(){function e(){P(F.select("a"),function(e){var t=e.parentNode,n=F.getRoot();if(t.lastChild===e){for(;t&&!F.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}F.add(t,"br",{"data-mce-bogus":1})}})}a.on("SetContent ExecCommand",function(t){("setcontent"==t.type||"mceInsertLink"===t.command)&&e()})}function S(){z.forced_root_block&&a.on("init",function(){s("DefaultParagraphSeparator",z.forced_root_block)})}function T(){a.on("Undo Redo SetContent",function(e){e.initial||a.execCommand("mceRepaint")})}function R(){a.on("keydown",function(e){var t;c(e)||e.keyCode!=O||(t=a.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),a.undoManager.beforeChange(),F.remove(t.item(0)),a.undoManager.add()))})}function A(){var e;l()>=10&&(e="",P("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),a.contentStyles.push(e+"{padding-right: 1px !important}"))}function B(){l()<9&&(V.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),U.addNodeFilter("noscript",function(e){for(var t=e.length,i,o,a;t--;)i=e[t],o=e[t].firstChild,o?o.value=r.decode(o.value):(a=i.attributes.map["data-mce-innertext"],a&&(i.attr("data-mce-innertext",null),o=new n("#text",3),o.value=a,o.raw=!0,i.append(o)))}))}function D(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),F.unbind(r,"mouseup",n),F.unbind(r,"mousemove",t),a=o=0}var r=F.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,F.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(F.bind(r,"mouseup",n),F.bind(r,"mousemove",t),F.win.focus(),a.select())}})}function L(){a.on("keyup focusin",function(t){65==t.keyCode&&e.metaKeyPressed(t)||W.normalize()})}function M(){a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function H(){a.inline||a.on("keydown",function(){document.activeElement==document.body&&a.getWin().focus()})}var P=o.each,O=e.BACKSPACE,I=e.DELETE,F=a.dom,W=a.selection,z=a.settings,V=a.parser,U=a.serializer,q=i.gecko,j=i.ie,$=i.webkit;C(),N(),d(),L(),$&&(_(),u(),p(),g(),S(),i.iOS?(y(),H()):f()),j&&i.ie<11&&(h(),b(),x(),w(),R(),A(),B(),D()),q&&(h(),m(),v(),E(),k(),T(),M())}}),r(nt,[p],function(e){function t(){return!1}function n(){return!0}var r="__bindings",i=e.makeMap("focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave keydown keypress keyup contextmenu dragend dragover draggesture dragdrop drop drag"," ");return{fire:function(e,i,o){var a=this,s,l,c,u,d;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=a),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=n},i.stopPropagation=function(){i.isPropagationStopped=n},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=n},i.isDefaultPrevented=t,i.isPropagationStopped=t,i.isImmediatePropagationStopped=t),a[r]&&(s=a[r][e]))for(l=0,c=s.length;c>l&&(s[l]=u=s[l],!i.isImmediatePropagationStopped());l++)if(u.call(a,i)===!1)return i.preventDefault(),i;if(o!==!1&&a.parent)for(d=a.parent();d&&!i.isPropagationStopped();)d.fire(e,i,!1),d=d.parent();return i},on:function(e,t){var n=this,o,a,s,l;if(t===!1&&(t=function(){return!1}),t)for(s=e.toLowerCase().split(" "),l=s.length;l--;)e=s[l],o=n[r],o||(o=n[r]={}),a=o[e],a||(a=o[e]=[],n.bindNative&&i[e]&&n.bindNative(e)),a.push(t);return n},off:function(e,t){var n=this,o,a=n[r],s,l,c,u;if(a)if(e)for(c=e.toLowerCase().split(" "),o=c.length;o--;){if(e=c[o],s=a[e],!e){for(l in a)a[e].length=0;return n}if(s){if(t)for(u=s.length;u--;)s[u]===t&&s.splice(u,1);else s.length=0;!s.length&&n.unbindNative&&i[e]&&(n.unbindNative(e),delete a[e])}}else{if(n.unbindNative)for(e in a)n.unbindNative(e);n[r]=[]}return n}}}),r(rt,[p,g],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122};return function(o){var a=this,s={};o.on("keyup keypress keydown",function(e){(e.altKey||e.ctrlKey||e.metaKey)&&n(s,function(n){var r=t.mac?e.ctrlKey||e.metaKey:e.ctrlKey;if(n.ctrl==r&&n.alt==e.altKey&&n.shift==e.shiftKey)return e.keyCode==n.keyCode||e.charCode&&e.charCode==n.charCode?(e.preventDefault(),"keydown"==e.type&&n.func.call(n.scope),!0):void 0})}),a.add=function(t,a,l,c){var u;return u=l,"string"==typeof l?l=function(){o.execCommand(u,!1,null)}:e.isArray(u)&&(l=function(){o.execCommand(u[0],u[1],u[2])}),n(r(t.toLowerCase()),function(e){var t={func:l,scope:c||o,desc:o.translate(a),alt:!1,ctrl:!1,shift:!1};n(r(e,"+"),function(e){switch(e){case"alt":case"ctrl":case"shift":t[e]=!0;break;default:t.charCode=e.charCodeAt(0),t.keyCode=i[e]||e.toUpperCase().charCodeAt(0)}}),s[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t}),!0}}}),r(it,[v,b,C,k,E,A,D,L,M,H,P,O,y,l,et,x,_,tt,g,p,nt,rt],function(e,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v,y,b,C,x,w){function _(e,t){return"selectionchange"==t||"drop"==t?e.getDoc():!e.inline&&/^mouse|click|contextmenu/.test(t)?e.getDoc():e.getBody()}function N(e,t,r){var i=this,o,a;o=i.documentBaseUrl=r.documentBaseURL,a=r.baseURI,i.settings=t=T({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:o,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:i.convertURL,url_converter_scope:i,ie7_compat:!0},t),n.settings=t,n.baseURL=r.baseURL,i.id=t.id=e,i.isNotDirty=!0,i.plugins={},i.documentBaseURI=new f(t.document_base_url||o,{base_uri:a}),i.baseURI=a,i.contentCSS=[],i.contentStyles=[],i.shortcuts=new w(i),i.execCommands={},i.queryStateCommands={},i.queryValueCommands={},i.loadedCSS={},i.suffix=r.suffix,i.editorManager=r,i.inline=t.inline,i.execCallback("setup",i)}var E=e.DOM,k=n.ThemeManager,S=n.PluginManager,T=C.extend,R=C.each,A=C.explode,B=C.inArray,D=C.trim,L=C.resolve,M=h.Event,H=b.gecko,P=b.ie,O=b.opera;return N.prototype={render:function(){function e(){var e=p.ScriptLoader;n.language&&"en"!=n.language&&(n.language_url=t.editorManager.baseURL+"/langs/"+n.language+".js"),n.language_url&&e.add(n.language_url),n.theme&&"function"!=typeof n.theme&&"-"!=n.theme.charAt(0)&&!k.urls[n.theme]&&k.load(n.theme,"themes/"+n.theme+"/theme"+i+".js"),C.isArray(n.plugins)&&(n.plugins=n.plugins.join(" ")),R(n.external_plugins,function(e,t){S.load(t,e),n.plugins+=" "+t}),R(n.plugins.split(/[ ,]/),function(e){if(e=D(e),e&&!S.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=S.dependencies(e);R(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+i+".js"};e=S.createUrl(t,e),S.load(e.resource,e)})}else S.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+i+".js"})}),e.loadQueue(function(){t.removed||t.init()})}var t=this,n=t.settings,r=t.id,i=t.suffix;if(!M.domLoaded)return E.bind(window,"ready",function(){t.render()}),void 0;if(t.editorManager.settings=n,t.getElement()&&b.contentEditable){n.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||E.getParent(r,"form");o&&(t.formElement=o,n.hidden_input&&!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&E.insertAfter(E.create("input",{type:"hidden",name:r}),r),t.formEventDelegate=function(e){t.fire(e.type,e)},E.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.setContent(t.startContent,{format:"raw"})}),!n.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.isNotDirty=!0,o._mceOldSubmit(o)})),t.windowManager=new m(t),"xml"==n.encoding&&t.on("GetContent",function(e){e.save&&(e.content=E.encode(e.content))}),n.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),n.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),e()}},init:function(){function e(n){var r=S.get(n),i,o;i=S.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=D(n),r&&-1===B(h,n)&&(R(S.dependencies(n),function(t){e(t)}),o=new r(t,i),t.plugins[n]=o,o.init&&(o.init(t,i),h.push(n)))}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,p,h=[];if(t.editorManager.add(t),n.aria_label=n.aria_label||E.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),l=k.get(n.theme),t.theme=new l(t,k.urls[n.theme]),t.theme.init&&t.theme.init(t,k.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""))):t.theme=n.theme),R(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),t.fire("BeforeRenderUI"),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,f=/^[0-9\.]+(|px)$/i,f.test(""+i)&&(i=Math.max(parseInt(i,10)+(l.deltaWidth||0),100)),f.test(""+o)&&(o=Math.max(parseInt(o,10)+(l.deltaHeight||0),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(E.setStyles(l.sizeContainer||l.editorContainer,{wi2dth:i,h2eight:o}),o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&R(A(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();for(document.domain&&location.hostname!=document.domain&&(t.editorManager.relaxedDomain=document.domain),t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base href="'+t.documentBaseURI.getURI()+'" />'),!b.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'),t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',p=0;p<t.contentCSS.length;p++){var m=t.contentCSS[p];t.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+m+'" />',t.loadedCSS[m]=!0}u=n.body_id||"tinymce",-1!=u.indexOf("=")&&(u=t.getParam("body_id","","hash"),u=u[t.id]||u),d=n.body_class||"",-1!=d.indexOf("=")&&(d=t.getParam("body_class","","hash"),d=d[t.id]||""),t.iframeHTML+='</head><body id="'+u+'" class="mce-content-body '+d+'" '+"onload=\"window.parent.tinymce.get('"+t.id+"').fire('load');\"><br></body></html>",t.editorManager.relaxedDomain&&(P||O&&parseFloat(window.opera.version())<11)&&(c='javascript:(function(){document.open();document.domain="'+document.domain+'";'+'var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);'+"document.close();ed.initContentBody();})()"),s=E.add(l.iframeContainer,"iframe",{id:t.id+"_ifr",src:c||'javascript:""',frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}}),t.contentAreaContainer=l.iframeContainer,l.editorContainer&&(E.get(l.editorContainer).style.display=t.orgDisplay),E.get(t.id).style.display="none",E.setAttrib(t.id,"aria-hidden",!0),t.editorManager.relaxedDomain&&c||t.initContentBody(),r=s=l=null},initContentBody:function(){var t=this,n=t.settings,o=E.get(t.id),f=t.getDoc(),p,h;n.inline||(t.getElement().style.visibility=t.orgVisibility),P&&t.editorManager.relaxedDomain||n.content_editable||(f.open(),f.write(t.iframeHTML),f.close(),t.editorManager.relaxedDomain&&(f.domain=t.editorManager.relaxedDomain)),n.content_editable&&(t.on("remove",function(){var e=this.getBody();E.removeClass(e,"mce-content-body"),E.removeClass(e,"mce-edit-focus"),E.setAttrib(e,"tabIndex",null),E.setAttrib(e,"contentEditable",null)}),E.addClass(o,"mce-content-body"),o.tabIndex=-1,t.contentDocument=f=n.content_document||document,t.contentWindow=n.content_window||window,t.bodyElement=o,n.content_document=n.content_window=null,n.root_name=o.nodeName.toLowerCase()),p=t.getBody(),p.disabled=!0,n.readonly||(p.contentEditable=t.getParam("content_editable_state",!0)),p.disabled=!1,t.schema=new g(n),t.dom=new e(f,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:n.force_hex_style_colors,class_filter:n.class_filter,update_styles:!0,root_element:n.content_editable?t.id:null,schema:t.schema,onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=new v(n,t.schema),t.parser.addAttributeFilter("src,href,style",function(e,n){for(var r=e.length,i,o=t.dom,a,s;r--;)i=e[r],a=i.attr(n),s="data-mce-"+n,i.attributes.map[s]||("style"===n?i.attr(s,o.serializeStyle(o.parseStyle(a),i.name)):i.attr(s,t.convertURL(a,n,i.name)))}),t.parser.addNodeFilter("script",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("type","mce-"+(n.attr("type")||"text/javascript"))}),t.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),t.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var n=e.length,i,o=t.schema.getNonEmptyElements();n--;)i=e[n],i.isEmpty(o)&&(i.empty().append(new r("br",1)).shortEnded=!0)}),t.serializer=new i(n,t),t.selection=new a(t.dom,t.getWin(),t.serializer,t),t.formatter=new s(t),t.undoManager=new l(t),t.forceBlocks=new u(t),t.enterKey=new c(t),t.editorCommands=new d(t),t.fire("PreInit"),n.browser_spellcheck||n.gecko_spellcheck||(f.body.spellcheck=!1,E.setAttrib(p,"spellcheck","false")),t.fire("PostRender"),t.quirks=y(t),n.directionality&&(p.dir=n.directionality),n.nowrap&&(p.style.whiteSpace="nowrap"),n.protect&&t.on("BeforeSetContent",function(e){R(n.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected "+escape(e)+"-->"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),n.padd_empty_editor&&t.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.initialized=!0,R(t._pendingNativeEvents,function(e){t.dom.bind(_(t,e),e,function(e){t.fire(e.type,e)})}),t.fire("init"),t.focus(!0),t.nodeChanged({initial:!0}),t.execCallback("init_instance_callback",t),t.contentStyles.length>0&&(h="",R(t.contentStyles,function(e){h+=e+"\r\n"}),t.dom.addStyle(h)),R(t.contentCSS,function(e){t.loadedCSS[e]||(t.dom.loadCSS(e),t.loadedCSS[e]=!0)}),n.auto_focus&&setTimeout(function(){var e=t.editorManager.get(n.auto_focus);e.selection.select(e.getBody(),1),e.selection.collapse(1),e.getBody().focus(),e.getWin().focus()},100),o=f=p=null},focus:function(e){var t,n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l;e||(o=r.getRng(),o.item&&(a=o.item(0)),n._refreshContentEditable(),i||(b.opera||n.getBody().focus(),n.getWin().focus()),(H||i)&&(l=n.getBody(),l.setActive?l.setActive():l.focus(),i&&r.normalize()),a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())),n.editorManager.activeEditor!=n&&((t=n.editorManager.activeEditor)&&t.fire("deactivate",{relatedTarget:n}),n.fire("activate",{relatedTarget:t})),n.editorManager.activeEditor=n},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?L(r):0,n=L(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?n[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n[t+"."+r]||"{#"+r+"}"}):""},getLang:function(e,n){return this.editorManager.i18n[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?R(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),i[D(e[0])]=e.length>1?D(e[1]):D(e)}):i=r,i):r},nodeChanged:function(){var e=this,t=e.selection,n,r,i;e.initialized&&!e.settings.disable_nodechange&&(i=e.getBody(),n=t.getStart()||i,n=P&&n.ownerDocument!=e.getDoc()?e.getBody():n,"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),r=[],e.dom.getParent(n,function(e){return e===i?!0:(r.push(e),void 0)}),e.fire("NodeChange",{element:n,parents:r}))},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addCommand:function(e,t,n){this.execCommands[e]={func:t,scope:n||this}},addQueryStateHandler:function(e,t,n){this.queryStateCommands[e]={func:t,scope:n||this}},addQueryValueHandler:function(e,t,n){this.queryValueCommands[e]={func:t,scope:n||this}},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){var i=this,o=0,a;return/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||r&&r.skip_focus||i.focus(),r=T({},r),r=i.fire("BeforeExecCommand",{command:e,ui:t,value:n}),r.isDefaultPrevented()?!1:(a=i.execCommands[e])&&a.func.call(a.scope,t,n)!==!0?(i.fire("ExecCommand",{command:e,ui:t,value:n}),!0):(R(i.plugins,function(r){return r.execCommand&&r.execCommand(e,t,n)?(i.fire("ExecCommand",{command:e,ui:t,value:n}),o=!0,!1):void 0}),o?o:i.theme&&i.theme.execCommand&&i.theme.execCommand(e,t,n)?(i.fire("ExecCommand",{command:e,ui:t,value:n}),!0):i.editorCommands.execCommand(e,t,n)?(i.fire("ExecCommand",{command:e,ui:t,value:n}),!0):(i.getDoc().execCommand(e,t,n),i.fire("ExecCommand",{command:e,ui:t,value:n}),void 0))},queryCommandState:function(e){var t=this,n,r;if(!t._isHidden()){if((n=t.queryStateCommands[e])&&(r=n.func.call(n.scope),r!==!0))return r;if(r=t.editorCommands.queryCommandState(e),-1!==r)return r;try{return t.getDoc().queryCommandState(e)}catch(i){}}},queryCommandValue:function(e){var n=this,r,i;if(!n._isHidden()){if((r=n.queryValueCommands[e])&&(i=r.func.call(r.scope),i!==!0))return i;if(i=n.editorCommands.queryCommandValue(e),i!==t)return i;try{return n.getDoc().queryCommandValue(e)}catch(o){}}},show:function(){var e=this;E.show(e.getContainer()),E.hide(e.id),e.load(),e.fire("show")},hide:function(){var e=this,t=e.getDoc();P&&t&&t.execCommand("SelectAll"),e.save(),E.hide(e.getContainer()),E.setStyle(e.id,"display",e.orgDisplay),e.fire("hide")},isHidden:function(){return!E.isHidden(this.id)},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(n.innerHTML=r,(i=E.getParent(t.id,"form"))&&R(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&(t.isNotDirty=!0),r},setContent:function(e,t){var n=this,r=n.getBody(),i;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?e=P&&11>P?"<"+i+"></"+i+">":"<"+i+'><br data-mce-bogus="1"></'+i+">":P||(e='<br data-mce-bogus="1">'),r.innerHTML=e,n.fire("SetContent",t)):("raw"!==t.format&&(e=new o({},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=D(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.initial||(n.selection.select(r,!0),n.selection.collapse(!0)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?r.innerHTML:"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),e.content="text"!=e.format?D(n):n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e){this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},getContainer:function(){var e=this;return e.container||(e.container=E.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return E.get(this.settings.content_element||this.id)},getWin:function(){var e=this,t;return e.contentWindow||(t=E.get(e.id+"_ifr"),t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),R(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),t&&"0"!=t||(n.hasVisual?i.addClass(e,o):i.removeClass(e,o)),void 0;case"A":return i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o="mce-item-anchor",t&&(n.hasVisual?i.addClass(e,o):i.removeClass(e,o))),void 0}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this,t=e.getContainer(),n=e.getDoc();e.removed||(e.removed=1,P&&n&&n.execCommand("SelectAll"),e.save(),E.setStyle(e.id,"display",e.orgDisplay),e.settings.content_editable||(M.unbind(e.getWin()),M.unbind(e.getDoc())),M.unbind(e.getBody()),M.unbind(t),e.fire("remove"),e.editorManager.remove(e),E.remove(t))},bindNative:function(e){var t=this;t.initialized?t.dom.bind(_(t,e),e,function(n){t.fire(e,n)}):t._pendingNativeEvents?t._pendingNativeEvents.push(e):t._pendingNativeEvents=[e]},unbindNative:function(e){var t=this;t.initialized&&t.dom.unbind(e)},destroy:function(e){var t=this,n;t.destroyed||(H&&(M.unbind(t.getDoc()),M.unbind(t.getWin()),M.unbind(t.getBody())),e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null,E.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=null,t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1)},_refreshContentEditable:function(){var e=this,t,n;e._isHidden()&&(t=e.getBody(),n=t.parentNode,n.removeChild(t),n.appendChild(t),t.focus())},_isHidden:function(){var e;return H?(e=this.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}},T(N.prototype,x),N}),r(ot,[],function(){var e={};return{add:function(t,n){for(var r in n)e[r]=n[r]},translate:function(t){if("undefined"==typeof t)return t;if("string"!=typeof t&&t.raw)return t.raw;if(t.push){var n=t.slice(1);t=(e[t[0]]||t[0]).replace(/\{([^\}]+)\}/g,function(e,t){return n[t]})}return e[t]||t},data:e}}),r(at,[v,g],function(e,t){function n(r){function i(){try{return document.activeElement}catch(e){return document.body}}function o(e){return e&&e.startContainer?{startContainer:e.startContainer,startOffset:e.startOffset,endContainer:e.endContainer,endOffset:e.endOffset}:e}function a(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function s(s){function l(t){return!!e.DOM.getParent(t,n.isEditorUIElement)}var c=s.editor,u,d;c.on("init",function(){"onbeforedeactivate"in document&&t.ie<11?c.dom.bind(c.getBody(),"beforedeactivate",function(){var e=c.getDoc().selection;try{u=e&&e.createRange?e.createRange():c.selection.getRng()}catch(t){}}):(c.inline||t.ie>10)&&(c.on("nodechange keyup",function(){var e,t=document.activeElement;for(t&&t.id==c.id+"_ifr"&&(t=c.getBody());t;){if(t==c.getBody()){e=!0;break}t=t.parentNode}e&&(u=c.selection.getRng())}),t.webkit&&(d=function(){var e=c.selection.getRng();e.collapsed||(u=e)},e.DOM.bind(document,"selectionchange",d),c.on("remove",function(){e.DOM.unbind(document,"selectionchange",d)})))}),c.on("focusin",function(){var e=r.focusedEditor;c.selection.lastFocusBookmark&&(c.selection.setRng(a(c,c.selection.lastFocusBookmark)),c.selection.lastFocusBookmark=null),e!=c&&(e&&e.fire("blur",{focusedEditor:c}),r.activeEditor=c,c.fire("focus",{blurredEditor:e}),c.focus(!1),r.focusedEditor=c)}),c.on("focusout",function(){c.selection.lastFocusBookmark=o(u),window.setTimeout(function(){var e=r.focusedEditor;e!=c&&(c.selection.lastFocusBookmark=null),l(i())||e!=c||(c.fire("blur",{focusedEditor:null}),r.focusedEditor=null,c.selection.lastFocusBookmark=null)},0)})}r.on("AddEditor",s)}return n.isEditorUIElement=function(e){return-1!==e.className.indexOf("mce-")},n}),r(st,[it,v,O,g,p,nt,ot,at],function(e,n,r,i,o,a,s,l){var c=n.DOM,u=o.explode,d=o.each,f=o.extend,p=0,h,m={majorVersion:"4",minorVersion:"0.5",releaseDate:"2013-08-27",editors:[],i18n:s,activeEditor:null,setup:function(){var e=this,t,n,i="",o;if(n=document.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/"),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;
+else for(var a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var c=a[s].src;if(/tinymce(\.jquery|)(\.min|\.dev|)\.js/.test(c)){-1!=c.indexOf(".min")&&(i=".min"),t=c.substring(0,c.lastIndexOf("/"));break}}e.baseURL=new r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new r(e.baseURL),e.suffix=i,e.focusManager=new l(e)},init:function(t){function n(e){var t=e.id;return t||(t=e.name,t=t&&!c.get(t)?e.name:c.uniqueId(),e.setAttribute("id",t)),t}function r(e,t,n){var r=e[t];if(r)return r.apply(n||this,Array.prototype.slice.call(arguments,2))}function i(e,t){return t.constructor===RegExp?t.test(e.className):c.hasClass(e,t)}var o=this,a=[],s;o.settings=t,c.bind(window,"ready",function(){var l,h;if(r(t,"onpageload"),t.types)return d(t.types,function(r){d(c.select(r.selector),function(i){var s=new e(n(i),f({},t,r),o);a.push(s),s.render(1)})}),void 0;if(t.selector)return d(c.select(t.selector),function(r){var i=new e(n(r),t,o);a.push(i),i.render(1)}),void 0;switch(t.mode){case"exact":l=t.elements||"",l.length>0&&d(u(l),function(n){c.get(n)?(s=new e(n,t,o),a.push(s),s.render(!0)):d(document.forms,function(r){d(r.elements,function(r){r.name===n&&(n="mce_editor_"+p++,c.setAttrib(r,"id",n),s=new e(n,t,o),a.push(s),s.render(1))})})});break;case"textareas":case"specific_textareas":d(c.select("textarea"),function(r){t.editor_deselector&&i(r,t.editor_deselector)||(!t.editor_selector||i(r,t.editor_selector))&&(s=new e(n(r),t,o),a.push(s),s.render(!0))})}t.oninit&&(l=h=0,d(a,function(e){h++,e.initialized?l++:e.on("init",function(){l++,l==h&&r(t,"oninit")}),l==h&&r(t,"oninit")}))})},get:function(e){return e===t?this.editors:this.editors[e]},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),t.activeEditor=e,t.fire("AddEditor",{editor:e}),h||(h=function(){t.fire("BeforeUnload")},c.bind(window,"beforeunload",h)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;if(e){if("string"==typeof e)return e=e.selector||e,d(c.select(e),function(e){t.remove(r[e.id])}),void 0;if(i=e,!r[i.id])return null;for(delete r[i.id],n=0;n<r.length;n++)if(r[n]==i){r.splice(n,1);break}if(t.activeEditor==i&&(t.activeEditor=r[0]),i&&!i.removed)return i.remove(),i.destroy(),t.fire("RemoveEditor",{editor:i}),r.length||c.unbind(window,"beforeunload",h),i}else for(n=r.length-1;n>=0;n--)t.remove(r[n])},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){d(this.editors,function(e){e.save()})},addI18n:function(e,t){s.add(e,t)},translate:function(e){return s.translate(e)}};return f(m,a),m.setup(),window.tinymce=window.tinyMCE=m,m}),r(lt,[st,p],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(t,n){e(n,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(ct,[],function(){return{send:function(e){function t(){!e.async||4==n.readyState||r++>1e4?(e.success&&1e4>r&&200==n.status?e.success.call(e.success_scope,""+n.responseText,n,e):e.error&&e.error.call(e.error_scope,r>1e4?"TIMED_OUT":"GENERAL",n,e),n=null):setTimeout(t,10)}var n,r=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async===!1?!1:!0,e.data=e.data||"",n=new XMLHttpRequest){if(n.overrideMimeType&&n.overrideMimeType(e.content_type),n.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.content_type&&n.setRequestHeader("Content-Type",e.content_type),n.setRequestHeader("X-Requested-With","XMLHttpRequest"),n.send(e.data),!e.async)return t();setTimeout(t,10)}}}}),r(ut,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(dt,[ut,ct,p],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(ft,[v],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(pt,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do r=n(parseInt(n(),32)||0),null!==r&&(s=n(parseInt(n(),32)||0),a[r]=s);while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n),o.save(l),e()}}var i,o,a,s,l,c;return window.localStorage?localStorage:(l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i)}),r(ht,[v,l,y,b,p,g],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(mt,[I,p],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.addClass(this.settings.containerClass,"body")},applyClasses:function(e){var t=this,n=t.settings,r,i,o;r=e.items().filter(":visible"),i=n.firstControlClass,o=n.lastControlClass,r.each(function(e){e.removeClass(i).removeClass(o),n.controlClass&&e.addClass(n.controlClass)}),r.eq(0).addClass(i),r.eq(-1).addClass(o)},renderHtml:function(e){var t=this,n=t.settings,r,i="";return r=e.items(),r.eq(0).addClass(n.firstControlClass),r.eq(-1).addClass(n.lastControlClass),r.each(function(e){n.controlClass&&e.addClass(n.controlClass),i+=e.renderHtml()}),i},recalc:function(){},postRender:function(){}})}),r(gt,[mt],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(vt,[V,G],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},text:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().lastChild.innerHTML=t.encode(e)),t):t._value},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes()+'" role="presentation">'+'<div class="'+t+'tooltip-arrow"></div>'+'<div class="'+t+'tooltip-inner">'+e.encode(e._text)+"</div>"+"</div>"},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(yt,[V,vt],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&t.on("mouseenter mouseleave",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t&&"mouseenter"==n.type){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.toggleClass("tooltip-n","bc-tc"==i),r.toggleClass("tooltip-nw","bc-tl"==i),r.toggleClass("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.aria("label",e.tooltip)},tooltip:function(){var e=this;return n||(n=new t({type:"tooltip"}),n.renderTo(e.getContainerElm())),n},active:function(e){var t=this,n;return e!==n&&(t.aria("pressed",e),t.toggleClass("active",e)),t._super(e)},disabled:function(e){var t=this,n;return e!==n&&(t.aria("disabled",e),t.toggleClass("disabled",e)),t._super(e)},postRender:function(){var e=this,t=e.settings;e._rendered=!0,e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&setTimeout(function(){e.focus()},0)},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(bt,[yt],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t.on("click mousedown",function(e){e.preventDefault()}),t._super(e),n=e.size,e.subtype&&t.addClass(e.subtype),n&&t.addClass("btn-"+n)},repaint:function(){var e=this.getEl().firstChild.style;e.width=e.height="100%",this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon,i="";return e.settings.image&&(r="none",i=" style=\"background-image: url('"+e.settings.image+"')\""),r=e.settings.icon?n+"ico "+n+"i-"+r:"",'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1">'+'<button role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+(e._text?(r?" ":"")+e.encode(e._text):"")+"</button>"+"</div>"}})}),r(Ct,[q],function(e){return e.extend({Defaults:{defaultType:"button",role:"toolbar"},renderHtml:function(){var e=this,t=e._layout;return e.addClass("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'">'+'<div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div>"+"</div>"}})}),r(xt,[yt],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){var t=this;return"undefined"!=typeof e?(e?t.addClass("checked"):t.removeClass("checked"),t._checked=e,t.aria("checked",e),t):t._checked},value:function(e){return this.checked(e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes()+'" unselectable="on" aria-labeledby="'+t+'-al" tabindex="-1">'+'<i class="'+n+"ico "+n+'i-checkbox"></i>'+'<span id="'+t+'-al" class="'+n+'label">'+e.encode(e._text)+"</span>"+"</div>"}})}),r(wt,[bt,X],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;n.panel.popover=!0,n.panel.autohide=!0,e.active(!0),e.panel?e.panel.show():(e.panel=new t(n.panel).on("hide",function(){e.active(!1)}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()),e.panel.moveRel(e.getEl(),n.popoverAlign||"bc-tc")},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():e.showPanel())}),e._super()}})}),r(_t,[wt,v],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.addClass("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",i=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"";return'<div id="'+t+'" class="'+e.classes()+'">'+'<button role="presentation" hidefocus type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+(e._text?(r?" ":"")+e._text:"")+"</button>"+'<button type="button" class="'+n+'open" hidefocus tabindex="-1">'+' <i class="'+n+'caret"></i>'+"</button>"+"</div>"},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(Nt,[yt,z],function(e,t){return e.extend({init:function(e){var n=this;n._super(e),n.addClass("combobox"),n.on("click",function(e){for(var t=e.target;t;)t.id&&-1!=t.id.indexOf("-open")&&n.fire("action"),t=t.parentNode}),n.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&n.parents().reverse().each(function(t){return e.preventDefault(),n.fire("change"),t.submit?(t.submit(),!1):void 0})}),e.placeholder&&(n.addClass("placeholder"),n.on("focusin",function(){n._hasOnChange||(t.on(n.getEl("inp"),"change",function(){n.fire("change")}),n._hasOnChange=!0),n.hasClass("placeholder")&&(n.getEl("inp").value="",n.removeClass("placeholder"))}),n.on("focusout",function(){0===n.value().length&&(n.getEl("inp").value=e.placeholder,n.addClass("placeholder"))}))},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t.removeClass("placeholder"),t._rendered&&(t.getEl("inp").value=e),t):t._rendered?(e=t.getEl("inp").value,e!=t.settings.placeholder?e:""):t._value},disabled:function(e){var t=this;t._super(e),t._rendered&&(t.getEl("inp").disabled=e)},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,n=e.getEl(),r=e.getEl("open"),i=e.layoutRect(),o,a;o=r?i.w-r.offsetWidth-10:i.w-10;var s=document;return s.all&&(!s.documentMode||s.documentMode<=8)&&(a=e.layoutRect().h-2+"px"),t.css(n.firstChild,{width:o,lineHeight:a}),e._super(),e},postRender:function(){var e=this;return t.on(this.getEl("inp"),"change",function(){e.fire("change")}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=n.value||n.placeholder||"",o,a,s="";return o=n.icon?r+"ico "+r+"i-"+n.icon:"",a=e._text,(o||a)&&(s='<div id="'+t+'-open" class="'+r+"btn "+r+'open" tabIndex="-1">'+'<button id="'+t+'-action" type="button" hidefocus tabindex="-1">'+(o?'<i class="'+o+'"></i>':'<i class="'+r+'caret"></i>')+(a?(o?" ":"")+a:"")+"</button>"+"</div>",e.addClass("has-open")),'<div id="'+t+'" class="'+e.classes()+'">'+'<input id="'+t+'-inp" class="'+r+"textbox "+r+'placeholder" value="'+i+'" hidefocus="true">'+s+"</div>"}})}),r(Et,[V,J],function(e,t){return e.extend({Defaults:{delimiter:"\xbb"},init:function(e){var t=this;t._super(e),t.addClass("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.data()[n],index:n})})},focus:function(){var e=this;return e.keyNav=new t({root:e,enableLeftRight:!0}),e.keyNav.focusFirst(),e},data:function(e){var t=this;return"undefined"!=typeof e?(t._data=e,t.update(),t):t._data},update:function(){this.innerHtml(this._getPathHtml())},postRender:function(){var e=this;e._super(),e.data(e.settings.data)},renderHtml:function(){var e=this;return'<div id="'+e._id+'" class="'+e.classPrefix+'path">'+e._getPathHtml()+"</div>"},_getPathHtml:function(){var e=this,t=e._data||[],n,r,i="",o=e.classPrefix;for(n=0,r=t.length;r>n;n++)i+=(n>0?'<div class="'+o+'divider" aria-hidden="true"> '+e.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(n==r-1?" "+o+"last":"")+'" data-index="'+n+'" tabindex="-1" id="'+e._id+"-"+n+'">'+t[n].name+"</div>";return i||(i='<div class="'+o+'path-item">&nbsp;</div>'),i}})}),r(kt,[Et,st],function(e,t){return e.extend({postRender:function(){function e(e){return 1===e.nodeType&&("BR"==e.nodeName||!!e.getAttribute("data-mce-bogus"))}var n=this,r=t.activeEditor;return n.on("select",function(t){var n=[],i,o=r.getBody();for(r.focus(),i=r.selection.getStart();i&&i!=o;)e(i)||n.push(i),i=i.parentNode;r.selection.select(n[n.length-1-t.index]),r.nodeChanged()}),r.on("nodeChange",function(t){for(var i=[],o=t.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=r.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});i.push({name:s.name})}n.data(i)}),n._super()}})}),r(St,[q],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.addClass("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'" hideFocus="1" tabIndex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div>"+"</div>"}})}),r(Tt,[q,St],function(e,t){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10},preRender:function(){var e=this,n=e.items();n.each(function(n){var r,i=n.settings.label;i&&(r=new t({layout:"flex",autoResize:"overflow",defaults:{flex:1},items:[{type:"label",text:i,flex:0,forId:n._id}]}),r.type="formitem","undefined"==typeof n.settings.flex&&(n.settings.flex=1),e.replace(n,r),r.add(n))})},recalcLabels:function(){var e=this,t=0,n=[],r,i;if(e.settings.labelGapCalc!==!1)for(e.items().filter("formitem").each(function(e){var r=e.items()[0],i=r.getEl().clientWidth;t=i>t?i:t,n.push(r)}),i=e.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=t+i},visible:function(e){var t=this._super(e);return e===!0&&this._rendered&&this.recalcLabels(),t},submit:function(){var e=this.getParentCtrl(document.activeElement);return e&&e.blur(),this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.recalcLabels(),e.fromJSON(e.settings.data)}})}),r(Rt,[Tt],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes()+'" hideFocus="1" tabIndex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div>"+"</fieldset>"}})}),r(At,[Nt],function(e){return e.extend({init:function(e){var t=this,n=tinymce.activeEditor,r;e.spellcheck=!1,r=n.settings.file_browser_callback,r&&(e.icon="browse",e.onaction=function(){r(t.getEl("inp").id,t.getEl("inp").value,e.filetype,window)}),t._super(e)}})}),r(Bt,[gt],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox();e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Dt,[gt],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v=[],y,b,C,x,w,_,N,E,k,S,T,R,A,B,D,L,M,H,P,O,I,F,W,z,V=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e._paddingBox,a=e.settings,f=a.direction,s=a.align,l=a.pack,c=a.spacing||0,("row-reversed"==f||"column-reverse"==f)&&(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(k="y",N="h",E="minH",S="maxH",R="innerH",T="top",A="bottom",B="deltaH",D="contentH",I="left",H="w",L="x",M="innerW",P="minW",O="maxW",F="right",W="deltaW",z="contentW"):(k="x",N="w",E="minW",S="maxW",R="innerW",T="left",A="right",B="deltaW",D="contentW",I="top",H="h",L="y",M="innerH",P="minH",O="maxH",F="bottom",W="deltaH",z="contentH"),d=i[R]-o[T]-o[T],_=u=0,t=0,n=r.length;n>t;t++)p=r[t],h=p.layoutRect(),m=p.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,h[S]&&v.push(p),h.flex=g),d-=h[E],y=o[I]+h[P]+o[F],y>_&&(_=y);if(x={},x[E]=0>d?i[E]-d+i[B]:i[R]-d+i[B],x[P]=_+i[W],x[D]=i[R]-d,x[z]=_,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=V(x.minW,i.startMinWidth),x.minH=V(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)p=v[t],h=p.layoutRect(),b=h[S],y=h[E]+Math.ceil(h.flex*C),y>b?(d-=h[S]-h[E],u-=h.flex,h.flex=0,h.maxFlexSize=b):h.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[L]=o[I],t=0,n=r.length;n>t;t++)p=r[t],h=p.layoutRect(),y=h.maxFlexSize||h[E],"center"===s?x[L]=Math.round(i[M]/2-h[H]/2):"stretch"===s?(x[H]=V(h[P]||0,i[M]-o[I]-o[F]),x[L]=o[I]):"end"===s&&(x[L]=i[M]-h[H]-o.top),h.flex>0&&(y+=Math.ceil(h.flex*C)),x[N]=y,x[k]=w,p.layoutRect(x),p.recalc&&p.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var q=e.parent();q&&(q._lastRect=null,q.recalc())}}})}),r(Lt,[mt],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})}})}),r(Mt,[V,yt,X,p,st,g],function(e,t,n,r,i,o){function a(e){function t(t){function n(e){return e.replace(/%(\w+)/g,"")}var r,i,o=e.dom,a="",l,c;return c=e.settings.preview_styles,c===!1?"":(c||(c="font-family font-size font-weight text-decoration text-transform color background-color border border-radius"),(t=e.formatter.get(t))?(t=t[0],r=t.block||t.inline||"span",i=o.create(r),s(t.styles,function(e,t){e=n(e),e&&o.setStyle(i,t,e)}),s(t.attributes,function(e,t){e=n(e),e&&o.setAttrib(i,t,e)}),s(t.classes,function(e){e=n(e),o.hasClass(i,e)||o.addClass(i,e)}),e.fire("PreviewFormats"),o.setStyles(i,{position:"absolute",left:-65535}),e.getBody().appendChild(i),l=o.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,s(c.split(" "),function(t){var n=o.getStyle(i,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=o.getStyle(e.getBody(),t,!0),"#ffffff"==o.toHex(n).toLowerCase())||"color"==t&&"#000000"==o.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(a+="padding:0 2px;"),a+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),o.remove(i),a):void 0)}function r(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function i(e){e=e.split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function o(){function n(e){var t=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=n(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a}t.push(o)}),t}var r=0,i=[],o=[{title:"Headers",items:[{title:"Header 1",format:"h1"},{title:"Header 2",format:"h2"},{title:"Header 3",format:"h3"},{title:"Header 4",format:"h4"},{title:"Header 5",format:"h5"},{title:"Header 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})});var a=n(e.settings.style_formats||o);return a={type:"menu",items:a,onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?t(this.settings.format):void 0},onPostRender:function(){var t=this,n=this.settings.format;n&&t.parent().on("show",function(){t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))})},onclick:function(){this.settings.format&&f(this.settings.format)}}}}function a(){return e.undoManager?e.undoManager.hasUndo():!1}function l(){return e.undoManager?e.undoManager.hasRedo():!1}function c(){var t=this;t.disabled(!a()),e.on("Undo Redo AddUndo TypingUndo",function(){t.disabled(!a())})}function u(){var t=this;t.disabled(!l()),e.on("Undo Redo AddUndo TypingUndo",function(){t.disabled(!l())})}function d(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function f(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var p;p=o(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})},onclick:function(){f(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],hr:["Insert horizontal rule","InsertHorizontalRule"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Toggle blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})}})}),e.addButton("undo",{tooltip:"Undo",onPostRender:c,cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:u,cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",shortcut:"Ctrl+N",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Ctrl+Z",onPostRender:c,cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Ctrl+Y",onPostRender:u,cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:d,cmd:"mceToggleVisualAid"}),s({cut:["Cut","Cut","Ctrl+X"],copy:["Copy","Copy","Ctrl+C"],paste:["Paste","Paste","Ctrl+V"],selectall:["Select all","SelectAll","Ctrl+A"],bold:["Bold","Bold","Ctrl+B"],italic:["Italic","Italic","Ctrl+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:p}),e.addButton("formatselect",function(){var n=[],o=i(e.settings.block_formats||"Paragraph=p;Address=address;Pre=pre;Header 1=h1;Header 2=h2;Header 3=h3;Header 4=h4;Header 5=h5;Header 6=h6");return s(o,function(e){n.push({text:e[0],value:e[1],textStyle:function(){return t(e[1])}})}),{type:"listbox",text:{raw:o[0][0]},values:n,fixedWidth:!0,onselect:f,onPostRender:r(n)}}),e.addButton("fontselect",function(){var t="Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",n=[],o=i(e.settings.font_formats||t);return s(o,function(e){n.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:n,fixedWidth:!0,onPostRender:r(n,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var t=[],n="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||n;return s(i.split(" "),function(e){t.push({text:e,value:e})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:r(t,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:p})}var s=r.each;i.on("AddEditor",function(e){a(e.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(Ht,[gt],function(e){return e.extend({recalc:function(e){var t=e.settings,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v,y,b,C,x,w,_,N=[],E=[],k,S,T,R,A,B;for(t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e._paddingBox,C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]),d=0;r>d;d++)N.push(0);for(f=0;n>f;f++)E.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),k=c.minW,S=c.minH,N[d]=k>N[d]?k:N[d],E[f]=S>E[f]?S:E[f];for(A=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=N[d]+(d>0?y:0),A-=(d>0?y:0)+N[d];for(B=o.innerH-g.top-g.bottom,_=0,f=0;n>f;f++)_+=E[f]+(f>0?b:0),B-=(f>0?b:0)+E[f];if(w+=g.left+g.right,_+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=_+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:B>0?Math.floor(B/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;d<M.length;d++)L+=M[d];else L=r;var H=A/L;for(d=0;r>d;d++)N[d]+=M?Math.ceil(M[d]*H):H;for(h=g.top,f=0;n>f;f++){for(p=g.left,s=E[f]+D,d=0;r>d&&(u=i[f*r+d],u);d++)m=u.settings,c=u.layoutRect(),a=N[d],T=R=0,c.x=p,c.y=h,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=p+a/2-c.w/2:"right"==v?c.x=p+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=h+s/2-c.h/2:"bottom"==v?c.y=h+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),p+=a+y,u.recalc&&u.recalc();
+h+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var P=e.parent();P&&(P._lastRect=null,P.recalc())}}})}),r(Pt,[yt],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes()+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,r=this.getEl().contentWindow.document.body;return r?(r.innerHTML=e,t&&t()):setTimeout(function(){n.html(e)},0),this}})}),r(Ot,[yt],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.addClass("widget"),t.addClass("label"),t.canFocus=!1,e.multiline&&t.addClass("autoscroll"),e.strong&&t.addClass("strong")},initLayoutRect:function(){var e=this,t=e._super();return e.settings.multiline&&(e.getEl().offsetWidth>t.maxW&&(t.minW=t.maxW,e.addClass("multiline")),e.getEl().style.width=t.minW+"px",t.startMinH=t.h=t.minH=Math.min(t.maxH,e.getEl().offsetHeight)),t},disabled:function(e){var t=this,n;return e!==n&&(t.toggleClass("label-disabled",e),t._rendered&&(t.getEl()[0].className=t.classes())),t._super(e)},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},text:function(e){var t=this;return t._rendered&&e&&this.innerHtml(t.encode(e)),t._super(e)},renderHtml:function(){var e=this,t=e.settings.forId;return'<label id="'+e._id+'" class="'+e.classes()+'"'+(t?' for="'+t:"")+'">'+e.encode(e._text)+"</label>"}})}),r(It,[q,J],function(e,t){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.addClass("toolbar")},postRender:function(){var e=this;return e.items().addClass("toolbar-item"),e.keyNav=new t({root:e,enableLeftRight:!0}),e._super()}})}),r(Ft,[It],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",defaults:{type:"menubutton"}}})}),r(Wt,[bt,U,Ft],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),t.addClass("menubtn"),e.fixedWidth&&t.addClass("fixed-width"),t.aria("haspopup",!0),t.hasPopup=!0},showMenu:function(){var e=this,n=e.settings,r;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type)}).fire("show"),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),["bl-tl","tl-bl"]),void 0)},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1))},activeMenu:function(e){this.toggleClass("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon?r+"ico "+r+"i-"+e.settings.icon:"";return e.aria("role",e.parent()instanceof n?"menuitem":"button"),'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1">'+'<button id="'+t+'-open" role="presentation" type="button" tabindex="-1">'+(i?'<i class="'+i+'"></i>':"")+"<span>"+(e._text?(i?" ":"")+e.encode(e._text):"")+"</span>"+' <i class="'+r+'caret"></i>'+"</button>"+"</div>"},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.keyboard&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},text:function(e){var t=this,n,r;if(t._rendered)for(r=t.getEl("open").getElementsByTagName("span"),n=0;n<r.length;n++)r[n].innerHTML=t.encode(e);return this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(zt,[Wt],function(e){return e.extend({init:function(e){var t=this,n,r,i,o,a;if(t._values=n=e.values,n){for(r=0;r<n.length;r++)i=n[r].selected||e.value===n[r].value,i&&(o=o||n[r].text,t._value=n[r].value);e.menu=n}e.text=e.text||o||n[0].text,t._super(e),t.addClass("listbox"),t.on("select",function(n){var r=n.control;a&&(n.lastControl=a),e.multiple?r.active(!r.active()):t.value(n.control.settings.value),a=r})},value:function(e){function t(e,n){e.items().each(function(e){r=e.value()===n,r&&(i=i||e.text()),e.active(r),e.menu&&t(e.menu,n)})}var n=this,r,i,o,a;if("undefined"!=typeof e){if(n.menu)t(n.menu,e);else for(o=n.settings.menu,a=0;a<o.length;a++)r=o[a].value==e,r&&(i=i||o[a].text),o[a].active=r;n.text(i||this.settings.text)}return n._super(e)}})}),r(Vt,[yt,U],function(e,t){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this;t.hasPopup=!0,t._super(e),e=t.settings,t.addClass("menu-item"),e.menu&&t.addClass("menu-item-expand"),e.preview&&t.addClass("menu-item-preview"),("-"===t._text||"|"===t._text)&&(t.addClass("menu-item-sep"),t.aria("role","separator"),t.canFocus=!1,t._text="-"),e.selectable&&(t.aria("role","menuitemcheckbox"),t.aria("checked",!0),t.addClass("menu-item-checkbox"),e.icon="selected"),t.on("mousedown",function(e){e.preventDefault()}),t.on("mouseenter click",function(n){n.control===t&&(e.menu||"click"!==n.type?(t.showMenu(),n.keyboard&&setTimeout(function(){t.menu.items()[0].focus()},0)):(t.parent().hideAll(),t.fire("cancel"),t.fire("select")))}),e.menu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),r.reflow(),r.fire("show"),r.on("cancel",function(){e.focus()}),r.on("hide",function(t){t.control===r&&e.removeClass("selected")})),r._parentMenu=i,r.addClass("menu-sub");var o=r.testMoveRel(e.getEl(),["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),o="menu-sub-"+o,r.removeClass(r._lastRel),r.addClass(o),r._lastRel=o,e.addClass("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.encode(e._text),o=e.settings.icon;return o&&e.parent().addClass("menu-has-icons"),o=r+"ico "+r+"i-"+(e.settings.icon||"none"),'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1">'+("-"!==i?'<i class="'+o+'"></i>&nbsp;':"")+("-"!==i?'<span id="'+t+'-text" class="'+r+'text">'+i+"</span>":"")+(n.shortcut?'<div id="'+t+'-shortcut" class="'+r+'menu-shortcut">'+n.shortcut+"</div>":"")+(n.menu?'<div class="'+r+'caret"></div>':"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var r=e.getEl("text");r&&r.setAttribute("style",n)}return e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(Ut,[X,J,Vt,p],function(e,t,n,r){var i=e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"menu"},init:function(e){var i=this;if(e.autohide=!0,e.constrainToViewport=!0,e.itemDefaults)for(var o=e.items,a=o.length;a--;)o[a]=r.extend({},e.itemDefaults,o[a]);i._super(e),i.addClass("menu"),i.keyNav=new t({root:i,enableUpDown:!0,enableLeftRight:!0,leftAction:function(){i.parent()instanceof n&&i.keyNav.cancel()},onCancel:function(){i.fire("cancel",{},!1),i.hide()}})},repaint:function(){return this.toggleClass("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("cancel"),e.fire("select")},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.selectable?(e._hasIcons=!0,!1):void 0}),e._super()}});return i}),r(qt,[xt],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(jt,[yt,j],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.addClass("resizehandle"),"both"==e.settings.direction&&e.addClass("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes()+'">'+'<i class="'+t+"ico "+t+'i-resize"></i>'+"</div>"},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},end:function(){e.fire("ResizeEnd")}})}})}),r($t,[yt],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("spacer"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes()+'"></div>'}})}),r(Kt,[Wt,v],function(e,t){var n=t.DOM;return e.extend({Defaults:{classes:"widget btn splitbtn",role:"splitbutton"},repaint:function(){var e=this,t=e.getEl(),r=e.layoutRect(),i,o,a;return e._super(),i=t.firstChild,o=t.lastChild,n.css(i,{width:r.w-o.offsetWidth,height:r.h-2}),n.css(o,{height:r.h-2}),a=i.firstChild.style,a.width=a.height="100%",a=o.firstChild.style,a.width=a.height="100%",e},activeMenu:function(e){var t=this;n.toggleClass(t.getEl().lastChild,t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"";return'<div id="'+t+'" class="'+e.classes()+'">'+'<button type="button" hidefocus tabindex="-1">'+(r?'<i class="'+r+'"></i>':"")+(e._text?(r?" ":"")+e._text:"")+"</button>"+'<button type="button" class="'+n+'open" hidefocus tabindex="-1">'+(e._menuBtnText?(r?" ":"")+e._menuBtnText:"")+' <i class="'+n+'caret"></i>'+"</button>"+"</div>"},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){e.control!=this||n.getParent(e.target,"."+this.classPrefix+"open")||(e.stopImmediatePropagation(),t.call(this,e))}),delete e.settings.onclick,e._super()}})}),r(Gt,[Lt],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"}})}),r(Yt,[K,z],function(e,t){"use stict";return e.extend({lastIdx:0,Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){this.activeTabId&&t.removeClass(this.getEl(this.activeTabId),this.classPrefix+"active"),this.activeTabId="t"+e,t.addClass(this.getEl("t"+e),this.classPrefix+"active"),e!=this.lastIdx&&(this.items()[this.lastIdx].hide(),this.lastIdx=e),this.items()[e].show().fire("showtab"),this.reflow()},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){n+='<div id="'+e._id+"-t"+i+'" class="'+r+'tab" unselectable="on">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes()+'" hideFocus="1" tabIndex="-1">'+'<div id="'+e._id+'-head" class="'+r+'tabs">'+n+"</div>"+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+t.renderHtml(e)+"</div>"+"</div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,n,r;n=r=0,e.items().each(function(t,i){n=Math.max(n,t.layoutRect().minW),r=Math.max(r,t.layoutRect().minH),e.settings.activeTab!=i&&t.hide()}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=n,e.settings.h=r,e.layoutRect({x:0,y:0,w:n,h:r})});var i=e.getEl("head").offsetHeight;return e.settings.minWidth=n,e.settings.minHeight=r+i,t=e._super(),t.deltaH+=e.getEl("head").offsetHeight,t.innerH=t.h-t.deltaH,t}})}),r(Xt,[yt,z],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t._value=e.value||"",t.addClass("textbox"),e.multiline?t.addClass("multiline"):t.on("keydown",function(e){13==e.keyCode&&t.parents().reverse().each(function(t){return e.preventDefault(),t.submit?(t.submit(),!1):void 0})})},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().value=e),t):t._rendered?t.getEl().value:t._value},repaint:function(){var e=this,t,n,r,i=0,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e._borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.encode(e._value,!1),i="";return"spellcheck"in n&&(i+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(i+=' maxlength="'+n.maxLength+'"'),n.size&&(i+=' size="'+n.size+'"'),n.subtype&&(i+=' type="'+n.subtype+'"'),n.multiline?'<textarea id="'+t+'" class="'+e.classes()+'" '+(n.rows?' rows="'+n.rows+'"':"")+' hidefocus="true"'+i+">"+r+"</textarea>":'<input id="'+t+'" class="'+e.classes()+'" value="'+r+'" hidefocus="true"'+i+">"},postRender:function(){var e=this;return t.on(e.getEl(),"change",function(t){e.fire("change",t)}),e._super()}})}),r(Jt,[z],function(e){return function(t){var n=this,r;n.show=function(i){return n.hide(),r=!0,window.setTimeout(function(){r&&t.appendChild(e.createFragment('<div class="mce-throbber"></div>'))},i||0),n},n.hide=function(){var e=t.lastChild;return e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),r=!1,n}}}),a([l,c,u,d,f,p,h,m,g,v,y,b,C,x,w,_,N,E,k,S,T,R,A,B,D,L,M,H,P,O,I,F,W,z,V,U,q,j,$,K,G,Y,X,J,Q,Z,et,tt,nt,rt,it,ot,at,st,lt,ct,ut,dt,ft,pt,ht,mt,gt,vt,yt,bt,Ct,xt,wt,_t,Nt,Et,kt,St,Tt,Rt,At,Bt,Dt,Lt,Mt,Ht,Pt,Ot,It,Ft,Wt,zt,Vt,Ut,qt,jt,$t,Kt,Gt,Yt,Xt,Jt])}(this); \ No newline at end of file
diff --git a/framework/Web/UI/WebControls/TAccordion.php b/framework/Web/UI/WebControls/TAccordion.php
index 7d5b20fa..dbf761a2 100644
--- a/framework/Web/UI/WebControls/TAccordion.php
+++ b/framework/Web/UI/WebControls/TAccordion.php
@@ -106,6 +106,7 @@ class TAccordion extends TWebControl implements IPostBackDataHandler
public function setActiveViewIndex($value)
{
$this->setViewState('ActiveViewIndex',TPropertyValue::ensureInteger($value),0);
+ $this->setActiveViewID('');
}
/**
diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php
index 194ddf50..074939c1 100644
--- a/framework/Web/UI/WebControls/TBaseValidator.php
+++ b/framework/Web/UI/WebControls/TBaseValidator.php
@@ -6,7 +6,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TBaseValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -70,7 +70,7 @@ Prado::using('System.Web.UI.WebControls.TLabel');
* override the method {@link evaluateIsValid}.
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBaseValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -93,7 +93,7 @@ abstract class TBaseValidator extends TLabel implements IValidator
* them specially.
* @var array list of control class names
*/
- private static $_clientClass = array('THtmlArea', 'TDatePicker', 'TListBox', 'TCheckBoxList');
+ private static $_clientClass = array('THtmlArea', 'THtmlArea4', 'TDatePicker', 'TListBox', 'TCheckBoxList');
/**
* Constructor.
@@ -625,7 +625,7 @@ abstract class TBaseValidator extends TLabel implements IValidator
* See the quickstart documentation for further details.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TBaseValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -715,7 +715,7 @@ class TValidatorClientSide extends TClientSideOptions
* - Fixed: Similar to Dynamic except that the error message physically occupies the page layout (even though it may not be visible)
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBaseValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -738,7 +738,7 @@ class TValidatorDisplayStyle extends TEnumerable
* - String
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TBaseValidator.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TBaseValidator.php 3319 2013-09-08 20:59:44Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/TDatePicker.php b/framework/Web/UI/WebControls/TDatePicker.php
index f2448fcc..a67997b8 100644
--- a/framework/Web/UI/WebControls/TDatePicker.php
+++ b/framework/Web/UI/WebControls/TDatePicker.php
@@ -6,7 +6,7 @@
* @link http://www.pradosoft.com/
* @copyright Copyright &copy; 2005-2013 PradoSoft
* @license http://www.pradosoft.com/license/
- * @version $Id: TDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
*/
@@ -73,7 +73,7 @@ Prado::using('System.Web.UI.WebControls.TTextBox');
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
- * @version $Id: TDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0
*/
@@ -774,10 +774,10 @@ class TDatePicker extends TTextBox
$years[$i] = $i;
$writer->addAttribute('id', $this->getClientID().TControl::CLIENT_ID_SEPARATOR.'year');
$writer->addAttribute('name', $this->getUniqueID().TControl::ID_SEPARATOR.'year');
+ $writer->addAttribute('class', 'datepicker_year_options');
if($this->getReadOnly() || !$this->getEnabled(true))
$writer->addAttribute('disabled', 'disabled');
$writer->renderBeginTag('select');
- $writer->addAttribute('class', 'datepicker_year_options');
$this->renderDropDownListOptions($writer, $years, $selected);
$writer->renderEndTag();
}
@@ -906,7 +906,7 @@ class TDatePicker extends TTextBox
* as parameter to this event
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
- * @version $Id: TDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -940,7 +940,7 @@ class TDatePickerClientScript extends TClientSideOptions
* - DropDownList: dropdown lists are used to pick up date values
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
@@ -962,7 +962,7 @@ class TDatePickerInputMode extends TEnumerable
* - ImageButton: Shows an image next to the text input, clicking on the image shows the date picker,
*
* @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id: TDatePicker.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @version $Id: TDatePicker.php 3318 2013-09-04 14:04:51Z ctrlaltca $
* @package System.Web.UI.WebControls
* @since 3.0.4
*/
diff --git a/framework/Web/UI/WebControls/THtmlArea4.php b/framework/Web/UI/WebControls/THtmlArea4.php
new file mode 100644
index 00000000..f98c2ddf
--- /dev/null
+++ b/framework/Web/UI/WebControls/THtmlArea4.php
@@ -0,0 +1,474 @@
+<?php
+/**
+ * THtmlArea4 class file.
+ *
+ * @author Fabio Bas <ctrlaltca[at]gmail[dot]com>
+ * @link http://www.pradosoft.com/
+ * @copyright Copyright &copy; 2005-2013 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Id: THtmlArea4.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @package System.Web.UI.WebControls
+ */
+
+/**
+ * Includes TTextBox class
+ */
+Prado::using('System.Web.UI.WebControls.TTextBox');
+
+/**
+ * THtmlArea4 class
+ *
+ * THtmlArea4 wraps the visual editing functionalities provided by the
+ * version 4 of TinyMCE project {@link http://tinymce.com/}. It has been
+ * developed as a plug'n'play substitute for {@link THtmlArea}, that is
+ * based on the previous iteration (version 3) of the same project.
+ * Please note that both components can't be used together in the same page.
+ *
+ * THtmlArea displays a WYSIWYG text area on the Web page for user input
+ * in the HTML format. The text displayed in the THtmlArea component is
+ * specified or determined by using the <b>Text</b> property.
+ *
+ * To enable the visual editting on the client side, set the property
+ * <b>EnableVisualEdit</b> to true (which is default value).
+ * To set the size of the editor when the visual editting is enabled,
+ * set the <b>Width</b> and <b>Height</b> properties instead of
+ * <b>Columns</b> and <b>Rows</b> because the latter has no meaning
+ * under the situation.
+ *
+ * The default editor gives only the basic tool bar. To change or add
+ * additional tool bars, use the {@link setOptions Options} property to add additional
+ * editor options with each options on a new line.
+ * See http://www.tinymce.com/wiki.php/Configuration
+ * for a list of options. The options can be change/added as shown in the
+ * following example.
+ * <code>
+ * <com:THtmlArea>
+ * <prop:Options>
+ * language : "de"
+ * plugins: [ advlist anchor autolink autoresize autosave bbcode charmap code contextmenu directionality emoticons fullpage fullscreen hr image importcss insertdatetime layer legacyoutput link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor visualblocks visualchars wordcount ]
+ * toolbar: "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media",
+ * statusbar: false
+ * </prop:Options>
+ * </com:THtmlArea>
+ * </code>
+ *
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Id: THtmlArea.php 3245 2013-01-07 20:23:32Z ctrlaltca $
+ * @package System.Web.UI.WebControls
+ * @since 3.0
+ */
+class THtmlArea4 extends TTextBox
+{
+ /**
+ * @var array list of locale => language file pairs.
+ */
+ private static $_langs = array(
+ 'ar' => 'ar',
+ 'bg_BG' => 'bg_BG',
+ 'bs' => 'bs',
+ 'ca' => 'ca',
+ 'cs' => 'cs',
+ 'cy' => 'cy',
+ 'da' => 'da',
+ 'de' => 'de',
+ 'de_AT' => 'de_AT',
+ 'el' => 'el',
+ 'es' => 'es',
+ 'et' => 'et',
+ 'eu' => 'eu',
+ 'fa' => 'fa',
+ 'fi' => 'fi',
+ 'fo' => 'fo',
+ 'fr_FR' => 'fr_FR',
+ 'gl' => 'gl',
+ 'he_IL' => 'he_IL',
+ 'hr' => 'hr',
+ 'hu_HU' => 'hu_HU',
+ 'id' => 'id',
+ 'it' => 'it',
+ 'ja' => 'ja',
+ 'ka_GE' => 'ka_GE',
+ 'ko_KR' => 'ko_KR',
+ 'lb' => 'lb',
+ 'lt' => 'lt',
+ 'lv' => 'lv',
+ 'nb_NO' => 'nb_NO',
+ 'nl' => 'nl',
+ 'pl' => 'pl',
+ 'pt_BR' => 'pt_BR',
+ 'pt_PT' => 'pt_PT',
+ 'ro' => 'ro',
+ 'ru' => 'ru',
+ 'si_LK' => 'si_LK',
+ 'sk' => 'sk',
+ 'sl_SI' => 'sl_SI',
+ 'sr' => 'sr',
+ 'sv_SE' => 'sv_SE',
+ 'ta' => 'ta',
+ 'ta_IN' => 'ta_IN',
+ 'th_TH' => 'th_TH',
+ 'tr_TR' => 'tr_TR',
+ 'ug' => 'ug',
+ 'uk' => 'uk',
+ 'uk_UA' => 'uk_UA',
+ 'vi' => 'vi',
+ 'vi_VN' => 'vi_VN',
+ 'zh_CN' => 'zh_CN',
+ 'zh_TW' => 'zh_TW',
+ );
+
+ /**
+ * @var array list of default plugins to load, override using getAvailablePlugins();
+ */
+ private static $_plugins = array(
+ 'advlist',
+ 'anchor',
+ 'autolink',
+ 'autoresize',
+ 'autosave',
+ 'bbcode',
+ 'charmap',
+ 'code',
+ 'contextmenu',
+ 'directionality',
+ 'emoticons',
+ 'fullpage',
+ 'fullscreen',
+ 'hr',
+ 'image',
+ 'importcss',
+ 'insertdatetime',
+ 'layer',
+ 'legacyoutput',
+ 'link',
+ 'lists',
+ 'media',
+ 'nonbreaking',
+ 'noneditable',
+ 'pagebreak',
+ 'paste',
+ 'preview',
+ 'print',
+ 'save',
+ 'searchreplace',
+ 'spellchecker',
+ 'tabfocus',
+ 'table',
+ 'template',
+ 'textcolor',
+ 'visualblocks',
+ 'visualchars',
+ 'wordcount',
+ );
+
+ /**
+ * @var array default themes to load
+ */
+ private static $_themes = array(
+ 'modern',
+ );
+
+ /**
+ * Constructor.
+ * Sets default width and height.
+ */
+ public function __construct()
+ {
+ $this->setWidth('600px');
+ $this->setHeight('250px');
+ }
+
+ /**
+ * Overrides the parent implementation.
+ * TextMode for THtmlArea control is always 'MultiLine'
+ * @return string the behavior mode of the THtmlArea component.
+ */
+ public function getTextMode()
+ {
+ return 'MultiLine';
+ }
+
+ /**
+ * Overrides the parent implementation.
+ * TextMode for THtmlArea is always 'MultiLine' and cannot be changed to others.
+ * @param string the text mode
+ */
+ public function setTextMode($value)
+ {
+ throw new TInvalidOperationException("htmlarea_textmode_readonly");
+ }
+
+ /**
+ * @return boolean whether change of the content should cause postback. Return false if EnableVisualEdit is true.
+ */
+ public function getAutoPostBack()
+ {
+ return $this->getEnableVisualEdit() ? false : parent::getAutoPostBack();
+ }
+
+ /**
+ * @return boolean whether to show WYSIWYG text editor. Defaults to true.
+ */
+ public function getEnableVisualEdit()
+ {
+ return $this->getViewState('EnableVisualEdit',true);
+ }
+
+ /**
+ * Sets whether to show WYSIWYG text editor.
+ * @param boolean whether to show WYSIWYG text editor
+ */
+ public function setEnableVisualEdit($value)
+ {
+ $this->setViewState('EnableVisualEdit',TPropertyValue::ensureBoolean($value),true);
+ }
+
+ /**
+ * Gets the current culture.
+ * @return string current culture, e.g. de_AT.
+ */
+ public function getCulture()
+ {
+ return $this->getViewState('Culture', '');
+ }
+
+ /**
+ * Sets the culture/language for the html area
+ * @param string a culture string, e.g. de_AT.
+ */
+ public function setCulture($value)
+ {
+ $this->setViewState('Culture', $value, '');
+ }
+
+ /**
+ * Gets the list of options for the WYSIWYG (TinyMCE) editor
+ * @see http://www.tinymce.com/wiki.php/Configuration
+ * @return string options
+ */
+ public function getOptions()
+ {
+ return $this->getViewState('Options', '');
+ }
+
+ /**
+ * Sets the list of options for the WYSIWYG (TinyMCE) editor
+ * @see http://www.tinymce.com/wiki.php/Configuration
+ * @param string options
+ */
+ public function setOptions($value)
+ {
+ $this->setViewState('Options', $value, '');
+ }
+
+ /**
+ * @param string path to custom plugins to be copied.
+ */
+ public function setCustomPluginPath($value)
+ {
+ $this->setViewState('CustomPluginPath', $value);
+ }
+
+ /**
+ * @return string path to custom plugins to be copied.
+ */
+ public function getCustomPluginPath()
+ {
+ return $this->getViewState('CustomPluginPath');
+ }
+
+ /**
+ * @return boolean enable compression of the javascript files, default is true.
+ * @deprecated since 3.2.3: tinyMCE 4 doesn't support this anymore
+ */
+ public function getEnableCompression()
+ {
+ return $this->getViewState('EnableCompression', true);
+ }
+
+ /**
+ * @param boolean enable compression of the javascript files, default is true.
+ * @deprecated since 3.2.3: tinyMCE 4 doesn't support this anymore
+ */
+ public function setEnableCompression($value)
+ {
+ $this->setViewState('EnableCompression', TPropertyValue::ensureBoolean($value));
+ }
+
+ /**
+ * Adds attribute name-value pairs to renderer.
+ * This method overrides the parent implementation by registering
+ * additional javacript code.
+ * @param THtmlWriter the writer used for the rendering purpose
+ */
+ protected function addAttributesToRender($writer)
+ {
+ if($this->getEnableVisualEdit() && $this->getEnabled(true))
+ {
+ $writer->addAttribute('id',$this->getClientID());
+ $this->registerEditorClientScript($writer);
+ }
+
+ parent::addAttributesToRender($writer);
+ }
+
+ /**
+ * Returns a list of plugins to be loaded.
+ * Override this method to customize.
+ * @return array list of plugins to be loaded
+ */
+ public function getAvailablePlugins()
+ {
+ return self::$_plugins;
+ }
+
+ /**
+ * @return array list of available themese
+ */
+ public function getAvailableThemes()
+ {
+ return self::$_themes;
+ }
+
+ /**
+ * @deprecated since 3.2.3. tinyMCE4 doesn's use this anymore
+ */
+ protected function getCompressionOptions()
+ {
+ return array();
+ }
+
+ protected function loadJavascriptLibrary()
+ {
+ $scripts = $this->getPage()->getClientScript();
+ $scripts->registerPradoScript('htmlarea4');
+ $scripts->registerScriptFile('prado:THtmlArea4', $this->getScriptUrl());
+ }
+
+ /**
+ * Registers the editor javascript file and code to initialize the editor.
+ */
+ protected function registerEditorClientScript($writer)
+ {
+ $this->loadJavascriptLibrary();
+ $scripts = $this->getPage()->getClientScript();
+ $options = array(
+ 'EditorOptions' => $this->getEditorOptions()
+ );
+
+ $options = TJavaScript::encode($options,true,true);
+ $script = "new Prado.WebUI.THtmlArea4($options)";
+ $scripts->registerEndScript('prado:THtmlArea4'.$this->ClientID,$script);
+ }
+
+ /**
+ * @return string editor script URL.
+ */
+ protected function getScriptUrl()
+ {
+ return $this->getScriptDeploymentPath().'/tinymce.min.js';
+ }
+
+ /**
+ * Gets the editor script base URL by publishing the tarred source via TTarAssetManager.
+ * @return string URL base path to the published editor script
+ */
+ protected function getScriptDeploymentPath()
+ {
+ $basedir = Prado::getPathOfNamespace('System.Web.Javascripts.source.tinymce-405');
+ $url = $this->getApplication()->getAssetManager()->publishFilePath($basedir);
+ $this->copyCustomPlugins($url);
+ return $url;
+ }
+
+ protected function copyCustomPlugins($url)
+ {
+ if($plugins = $this->getCustomPluginPath())
+ {
+ $assets = $this->getApplication()->getAssetManager();
+ $path = is_dir($plugins) ? $plugins : Prado::getPathOfNameSpace($plugins);
+ $dest = $assets->getBasePath().'/'.basename($url).'/plugins/';
+ if(!is_dir($dest) || $this->getApplication()->getMode()!==TApplicationMode::Performance)
+ $assets->copyDirectory($path, $dest);
+ }
+ }
+
+ /**
+ * Default editor options gives basic tool bar only.
+ * @return array editor initialization options.
+ */
+ protected function getEditorOptions()
+ {
+ $options['mode'] = 'exact';
+ $options['elements'] = $this->getClientID();
+ $options['language'] = $this->getLanguageSuffix($this->getCulture());
+ //$options['theme'] = 'modern'; //default
+ // mimic previous (tinyMCE3) sizing behaviour
+ $options['width'] = $this->getWidth();
+ $options['height'] = $this->getHeight();
+ $options['resize'] = 'both';
+ $options['menubar'] = false;
+
+ $options['extended_valid_elements'] = 'a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]';
+
+ $options = array_merge($options, $this->parseEditorOptions($this->getOptions()));
+ return $options;
+ }
+
+ /**
+ * Parse additional options set in the Options property.
+ * @return array additional custom options
+ */
+ protected function parseEditorOptions($string)
+ {
+ $options = array();
+ $substrings = preg_split('/,\s*\n|\n/', trim($string));
+ foreach($substrings as $bits)
+ {
+ $option = explode(":",$bits,2);
+
+ if(count($option) == 2)
+ {
+ $value=trim(trim($option[1]),"'\"");
+ if (($s=strtolower($value))==='false')
+ $value=false;
+ elseif ($s==='true')
+ $value=true;
+ $options[trim($option[0])] = $value;
+ }
+ }
+ return $options;
+ }
+
+ /**
+ * @return string localized editor interface language extension.
+ */
+ protected function getLanguageSuffix($culture)
+ {
+ $app = $this->getApplication()->getGlobalization();
+ if(empty($culture) && ($app!==null))
+ $culture = $app->getCulture();
+ $variants = array();
+ if($app!==null)
+ $variants = $app->getCultureVariants($culture);
+
+ foreach($variants as $variant)
+ {
+ if(isset(self::$_langs[$variant]))
+ return self::$_langs[$variant];
+ }
+
+ return 'en';
+ }
+
+ /**
+ * Gets the name of the javascript class responsible for performing postback for this control.
+ * This method overrides the parent implementation.
+ * @return string the javascript class name
+ */
+ protected function getClientClassName()
+ {
+ return 'Prado.WebUI.THtmlArea4';
+ }
+}
+
diff --git a/framework/pradolite.php b/framework/pradolite.php
index 6fb4c9d6..1e117149 100644
--- a/framework/pradolite.php
+++ b/framework/pradolite.php
@@ -1,7 +1,7 @@
<?php
/**
* File Name: pradolite.php
- * Last Update: 2013/07/24 12:18:57
+ * Last Update: 2012/11/26 11:38:32
* Generated By: buildscripts/phpbuilder/build.php
*
* This file is used in lieu of prado.php to boost PRADO application performance.
@@ -25,7 +25,7 @@ class PradoBase
protected static $classExists = array();
public static function getVersion()
{
- return '3.2.1';
+ return '3.2.0';
}
public static function initErrorHandlers()
{
@@ -34,10 +34,9 @@ class PradoBase
}
public static function autoload($className)
{
- if ((@include($className.self::CLASS_FILE_EXT)) !== false) {
- return true;
- }
- return false;
+ include_once($className.self::CLASS_FILE_EXT);
+ if(!class_exists($className,false) && !interface_exists($className,false))
+ self::fatalError("Class file for '$className' cannot be found.");
}
public static function poweredByPrado($logoType=0)
{
@@ -1249,6 +1248,377 @@ class TTextWriter extends TComponent implements ITextWriter
$this->write($str."\n");
}
}
+class TPriorityList extends TList
+{
+ private $_d=array();
+ private $_o=false;
+ private $_fd=null;
+ private $_c=0;
+ private $_dp=10;
+ private $_p=8;
+ public function __construct($data=null,$readOnly=false,$defaultPriority=10,$precision=8)
+ {
+ parent::__construct();
+ if($data!==null)
+ $this->copyFrom($data);
+ $this->setReadOnly($readOnly);
+ $this->setPrecision($precision);
+ $this->setDefaultPriority($defaultPriority);
+ }
+ public function count()
+ {
+ return $this->getCount();
+ }
+ public function getCount()
+ {
+ return $this->_c;
+ }
+ public function getPriorityCount($priority=null)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ if(!isset($this->_d[$priority]) || !is_array($this->_d[$priority]))
+ return false;
+ return count($this->_d[$priority]);
+ }
+ public function getDefaultPriority()
+ {
+ return $this->_dp;
+ }
+ protected function setDefaultPriority($value)
+ {
+ $this->_dp=(string)round(TPropertyValue::ensureFloat($value),$this->_p);
+ }
+ public function getPrecision()
+ {
+ return $this->_p;
+ }
+ protected function setPrecision($value)
+ {
+ $this->_p=TPropertyValue::ensureInteger($value);
+ }
+ public function getIterator()
+ {
+ return new ArrayIterator($this->flattenPriorities());
+ }
+ public function getPriorities()
+ {
+ $this->sortPriorities();
+ return array_keys($this->_d);
+ }
+ protected function sortPriorities() {
+ if(!$this->_o) {
+ ksort($this->_d,SORT_NUMERIC);
+ $this->_o=true;
+ }
+ }
+ protected function flattenPriorities() {
+ if(is_array($this->_fd))
+ return $this->_fd;
+ $this->sortPriorities();
+ $this->_fd=array();
+ foreach($this->_d as $priority => $itemsatpriority)
+ $this->_fd=array_merge($this->_fd,$itemsatpriority);
+ return $this->_fd;
+ }
+ public function itemAt($index)
+ {
+ if($index>=0&&$index<$this->getCount()) {
+ $arr=$this->flattenPriorities();
+ return $arr[$index];
+ } else
+ throw new TInvalidDataValueException('list_index_invalid',$index);
+ }
+ public function itemsAtPriority($priority=null)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ return isset($this->_d[$priority])?$this->_d[$priority]:null;
+ }
+ public function itemAtIndexInPriority($index,$priority=null)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority), $this->_p);
+ return !isset($this->_d[$priority])?false:(
+ isset($this->_d[$priority][$index])?$this->_d[$priority][$index]:false
+ );
+ }
+ public function add($item,$priority=null)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ return $this->insertAtIndexInPriority($item,false,$priority,true);
+ }
+ public function insertAt($index,$item)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ if(($priority=$this->priorityAt($index,true))!==false)
+ $this->insertAtIndexInPriority($item,$priority[1],$priority[0]);
+ else
+ throw new TInvalidDataValueException('list_index_invalid',$index);
+ }
+ public function insertAtIndexInPriority($item,$index=false,$priority=null,$preserveCache=false)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority), $this->_p);
+ if($preserveCache) {
+ $this->sortPriorities();
+ $cc=0;
+ foreach($this->_d as $prioritykey=>$items)
+ if($prioritykey>=$priority)
+ break;
+ else
+ $cc+=count($items);
+ if($index===false&&isset($this->_d[$priority])) {
+ $c=count($this->_d[$priority]);
+ $c+=$cc;
+ $this->_d[$priority][]=$item;
+ } else if(isset($this->_d[$priority])) {
+ $c=$index+$cc;
+ array_splice($this->_d[$priority],$index,0,array($item));
+ } else {
+ $c = $cc;
+ $this->_o = false;
+ $this->_d[$priority]=array($item);
+ }
+ if($this->_fd&&is_array($this->_fd)) array_splice($this->_fd,$c,0,array($item));
+ } else {
+ $c=null;
+ if($index===false&&isset($this->_d[$priority])) {
+ $cc=count($this->_d[$priority]);
+ $this->_d[$priority][]=$item;
+ } else if(isset($this->_d[$priority])) {
+ $cc=$index;
+ array_splice($this->_d[$priority],$index,0,array($item));
+ } else {
+ $cc=0;
+ $this->_o=false;
+ $this->_d[$priority]=array($item);
+ }
+ if($this->_fd&&is_array($this->_fd)&&count($this->_d)==1)
+ array_splice($this->_fd,$cc,0,array($item));
+ else
+ $this->_fd=null;
+ }
+ $this->_c++;
+ return $c;
+ }
+ public function remove($item,$priority=false)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ if(($p=$this->priorityOf($item,true))!==false)
+ {
+ if($priority!==false) {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ if($p[0]!=$priority)
+ throw new TInvalidDataValueException('list_item_inexistent');
+ }
+ $this->removeAtIndexInPriority($p[1],$p[0]);
+ return $p[2];
+ }
+ else
+ throw new TInvalidDataValueException('list_item_inexistent');
+ }
+ public function removeAt($index)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ if(($priority=$this->priorityAt($index, true))!==false)
+ return $this->removeAtIndexInPriority($priority[1],$priority[0]);
+ throw new TInvalidDataValueException('list_index_invalid',$index);
+ }
+ public function removeAtIndexInPriority($index, $priority=null)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ if(!isset($this->_d[$priority])||$index<0||$index>=count($this->_d[$priority]))
+ throw new TInvalidDataValueException('list_item_inexistent');
+ $value=array_splice($this->_d[$priority],$index,1);
+ $value=$value[0];
+ if(!count($this->_d[$priority]))
+ unset($this->_d[$priority]);
+ $this->_c--;
+ $this->_fd=null;
+ return $value;
+ }
+ public function clear()
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ $d=array_reverse($this->_d,true);
+ foreach($this->_d as $priority=>$items) {
+ for($index=count($items)-1;$index>=0;$index--)
+ $this->removeAtIndexInPriority($index,$priority);
+ unset($this->_d[$priority]);
+ }
+ }
+ public function contains($item)
+ {
+ return $this->indexOf($item)>=0;
+ }
+ public function indexOf($item)
+ {
+ if(($index=array_search($item,$this->flattenPriorities(),true))===false)
+ return -1;
+ else
+ return $index;
+ }
+ public function priorityOf($item,$withindex = false)
+ {
+ $this->sortPriorities();
+ $absindex = 0;
+ foreach($this->_d as $priority=>$items) {
+ if(($index=array_search($item,$items,true))!==false) {
+ $absindex+=$index;
+ return $withindex?array($priority,$index,$absindex,
+ 'priority'=>$priority,'index'=>$index,'absindex'=>$absindex):$priority;
+ } else
+ $absindex+=count($items);
+ }
+ return false;
+ }
+ public function priorityAt($index,$withindex = false)
+ {
+ if($index<0||$index>=$this->getCount())
+ throw new TInvalidDataValueException('list_index_invalid',$index);
+ $absindex=$index;
+ $this->sortPriorities();
+ foreach($this->_d as $priority=>$items) {
+ if($index>=($c=count($items)))
+ $index-=$c;
+ else
+ return $withindex?array($priority,$index,$absindex,
+ 'priority'=>$priority,'index'=>$index,'absindex'=>$absindex):$priority;
+ }
+ return false;
+ }
+ public function insertBefore($indexitem, $item)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ if(($priority=$this->priorityOf($indexitem,true))===false)
+ throw new TInvalidDataValueException('list_item_inexistent');
+ $this->insertAtIndexInPriority($item,$priority[1],$priority[0]);
+ return $priority[2];
+ }
+ public function insertAfter($indexitem, $item)
+ {
+ if($this->getReadOnly())
+ throw new TInvalidOperationException('list_readonly',get_class($this));
+ if(($priority=$this->priorityOf($indexitem,true))===false)
+ throw new TInvalidDataValueException('list_item_inexistent');
+ $this->insertAtIndexInPriority($item,$priority[1]+1,$priority[0]);
+ return $priority[2]+1;
+ }
+ public function toArray()
+ {
+ return $this->flattenPriorities();
+ }
+ public function toPriorityArray()
+ {
+ $this->sortPriorities();
+ return $this->_d;
+ }
+ public function toArrayBelowPriority($priority,$inclusive=false)
+ {
+ $this->sortPriorities();
+ $items=array();
+ foreach($this->_d as $itemspriority=>$itemsatpriority)
+ {
+ if((!$inclusive&&$itemspriority>=$priority)||$itemspriority>$priority)
+ break;
+ $items=array_merge($items,$itemsatpriority);
+ }
+ return $items;
+ }
+ public function toArrayAbovePriority($priority,$inclusive=true)
+ {
+ $this->sortPriorities();
+ $items=array();
+ foreach($this->_d as $itemspriority=>$itemsatpriority)
+ {
+ if((!$inclusive&&$itemspriority<=$priority)||$itemspriority<$priority)
+ continue;
+ $items=array_merge($items,$itemsatpriority);
+ }
+ return $items;
+ }
+ public function copyFrom($data)
+ {
+ if($data instanceof TPriorityList)
+ {
+ if($this->getCount()>0)
+ $this->clear();
+ foreach($data->getPriorities() as $priority)
+ {
+ foreach($data->itemsAtPriority($priority) as $index=>$item)
+ $this->insertAtIndexInPriority($item,$index,$priority);
+ }
+ } else if(is_array($data)||$data instanceof Traversable) {
+ if($this->getCount()>0)
+ $this->clear();
+ foreach($data as $key=>$item)
+ $this->add($item);
+ } else if($data!==null)
+ throw new TInvalidDataTypeException('map_data_not_iterable');
+ }
+ public function mergeWith($data)
+ {
+ if($data instanceof TPriorityList)
+ {
+ foreach($data->getPriorities() as $priority)
+ {
+ foreach($data->itemsAtPriority($priority) as $index=>$item)
+ $this->insertAtIndexInPriority($item,false,$priority);
+ }
+ }
+ else if(is_array($data)||$data instanceof Traversable)
+ {
+ foreach($data as $priority=>$item)
+ $this->add($item);
+ }
+ else if($data!==null)
+ throw new TInvalidDataTypeException('map_data_not_iterable');
+ }
+ public function offsetExists($offset)
+ {
+ return ($offset>=0&&$offset<$this->getCount());
+ }
+ public function offsetGet($offset)
+ {
+ return $this->itemAt($offset);
+ }
+ public function offsetSet($offset,$item)
+ {
+ if($offset===null)
+ return $this->add($item);
+ if($offset===$this->getCount()) {
+ $priority=$this->priorityAt($offset-1,true);
+ $priority[1]++;
+ } else {
+ $priority=$this->priorityAt($offset,true);
+ $this->removeAtIndexInPriority($priority[1],$priority[0]);
+ }
+ $this->insertAtIndexInPriority($item,$priority[1],$priority[0]);
+ }
+ public function offsetUnset($offset)
+ {
+ $this->removeAt($offset);
+ }
+}
class TMap extends TComponent implements IteratorAggregate,ArrayAccess,Countable
{
private $_d=array();
@@ -1393,6 +1763,310 @@ class TMapIterator implements Iterator
return $this->_key!==false;
}
}
+class TPriorityMap extends TMap
+{
+ private $_d=array();
+ private $_r=false;
+ private $_o=false;
+ private $_fd=null;
+ private $_c=0;
+ private $_dp=10;
+ private $_p=8;
+ public function __construct($data=null,$readOnly=false,$defaultPriority=10,$precision=8)
+ {
+ if($data!==null)
+ $this->copyFrom($data);
+ $this->setReadOnly($readOnly);
+ $this->setPrecision($precision);
+ $this->setDefaultPriority($defaultPriority);
+ }
+ public function getReadOnly()
+ {
+ return $this->_r;
+ }
+ protected function setReadOnly($value)
+ {
+ $this->_r=TPropertyValue::ensureBoolean($value);
+ }
+ public function getDefaultPriority()
+ {
+ return $this->_dp;
+ }
+ protected function setDefaultPriority($value)
+ {
+ $this->_dp = (string)round(TPropertyValue::ensureFloat($value), $this->_p);
+ }
+ public function getPrecision()
+ {
+ return $this->_p;
+ }
+ protected function setPrecision($value)
+ {
+ $this->_p=TPropertyValue::ensureInteger($value);
+ }
+ public function getIterator()
+ {
+ return new ArrayIterator($this->flattenPriorities());
+ }
+ protected function sortPriorities() {
+ if(!$this->_o) {
+ ksort($this->_d, SORT_NUMERIC);
+ $this->_o=true;
+ }
+ }
+ protected function flattenPriorities() {
+ if(is_array($this->_fd))
+ return $this->_fd;
+ $this->sortPriorities();
+ $this->_fd = array();
+ foreach($this->_d as $priority => $itemsatpriority)
+ $this->_fd = array_merge($this->_fd, $itemsatpriority);
+ return $this->_fd;
+ }
+ public function count()
+ {
+ return $this->getCount();
+ }
+ public function getCount()
+ {
+ return $this->_c;
+ }
+ public function getPriorityCount($priority=null)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ if(!isset($this->_d[$priority])||!is_array($this->_d[$priority]))
+ return false;
+ return count($this->_d[$priority]);
+ }
+ public function getPriorities()
+ {
+ $this->sortPriorities();
+ return array_keys($this->_d);
+ }
+ public function getKeys()
+ {
+ return array_keys($this->flattenPriorities());
+ }
+ public function itemAt($key,$priority=false)
+ {
+ if($priority===false){
+ $map=$this->flattenPriorities();
+ return isset($map[$key])?$map[$key]:null;
+ } else {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ return (isset($this->_d[$priority])&&isset($this->_d[$priority][$key]))?$this->_d[$priority][$key]:null;
+ }
+ }
+ public function setPriorityAt($key,$priority=null)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ $oldpriority=$this->priorityAt($key);
+ if($oldpriority!==false&&$oldpriority!=$priority) {
+ $value=$this->remove($key,$oldpriority);
+ $this->add($key,$value,$priority);
+ }
+ return $oldpriority;
+ }
+ public function itemsAtPriority($priority=null)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ return isset($this->_d[$priority])?$this->_d[$priority]:null;
+ }
+ public function priorityOf($item)
+ {
+ $this->sortPriorities();
+ foreach($this->_d as $priority=>$items)
+ if(($index=array_search($item,$items,true))!==false)
+ return $priority;
+ return false;
+ }
+ public function priorityAt($key)
+ {
+ $this->sortPriorities();
+ foreach($this->_d as $priority=>$items)
+ if(array_key_exists($key,$items))
+ return $priority;
+ return false;
+ }
+ public function add($key,$value,$priority=null)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ if(!$this->_r)
+ {
+ foreach($this->_d as $innerpriority=>$items)
+ if(array_key_exists($key,$items))
+ {
+ unset($this->_d[$innerpriority][$key]);
+ $this->_c--;
+ if(count($this->_d[$innerpriority])===0)
+ unset($this->_d[$innerpriority]);
+ }
+ if(!isset($this->_d[$priority])) {
+ $this->_d[$priority]=array($key=>$value);
+ $this->_o=false;
+ }
+ else
+ $this->_d[$priority][$key]=$value;
+ $this->_c++;
+ $this->_fd=null;
+ }
+ else
+ throw new TInvalidOperationException('map_readonly',get_class($this));
+ return $priority;
+ }
+ public function remove($key,$priority=false)
+ {
+ if(!$this->_r)
+ {
+ if($priority===null)
+ $priority=$this->getDefaultPriority();
+ if($priority===false)
+ {
+ $this->sortPriorities();
+ foreach($this->_d as $priority=>$items)
+ if(array_key_exists($key,$items))
+ {
+ $value=$this->_d[$priority][$key];
+ unset($this->_d[$priority][$key]);
+ $this->_c--;
+ if(count($this->_d[$priority])===0)
+ {
+ unset($this->_d[$priority]);
+ $this->_o=false;
+ }
+ $this->_fd=null;
+ return $value;
+ }
+ return null;
+ }
+ else
+ {
+ $priority=(string)round(TPropertyValue::ensureFloat($priority),$this->_p);
+ if(isset($this->_d[$priority])&&(isset($this->_d[$priority][$key])||array_key_exists($key,$this->_d[$priority])))
+ {
+ $value=$this->_d[$priority][$key];
+ unset($this->_d[$priority][$key]);
+ $this->_c--;
+ if(count($this->_d[$priority])===0) {
+ unset($this->_d[$priority]);
+ $this->_o=false;
+ }
+ $this->_fd=null;
+ return $value;
+ }
+ else
+ return null;
+ }
+ }
+ else
+ throw new TInvalidOperationException('map_readonly',get_class($this));
+ }
+ public function clear()
+ {
+ foreach($this->_d as $priority=>$items)
+ foreach(array_keys($items) as $key)
+ $this->remove($key);
+ }
+ public function contains($key)
+ {
+ $map=$this->flattenPriorities();
+ return isset($map[$key])||array_key_exists($key,$map);
+ }
+ public function toArray()
+ {
+ return $this->flattenPriorities();
+ }
+ public function toArrayBelowPriority($priority,$inclusive=false)
+ {
+ $this->sortPriorities();
+ $items=array();
+ foreach($this->_d as $itemspriority=>$itemsatpriority)
+ {
+ if((!$inclusive&&$itemspriority>=$priority)||$itemspriority>$priority)
+ break;
+ $items=array_merge($items,$itemsatpriority);
+ }
+ return $items;
+ }
+ public function toArrayAbovePriority($priority,$inclusive=true)
+ {
+ $this->sortPriorities();
+ $items=array();
+ foreach($this->_d as $itemspriority=>$itemsatpriority)
+ {
+ if((!$inclusive&&$itemspriority<=$priority)||$itemspriority<$priority)
+ continue;
+ $items=array_merge($items,$itemsatpriority);
+ }
+ return $items;
+ }
+ public function copyFrom($data)
+ {
+ if($data instanceof TPriorityMap)
+ {
+ if($this->getCount()>0)
+ $this->clear();
+ foreach($data->getPriorities() as $priority) {
+ foreach($data->itemsAtPriority($priority) as $key => $value) {
+ $this->add($key,$value,$priority);
+ }
+ }
+ }
+ else if(is_array($data)||$data instanceof Traversable)
+ {
+ if($this->getCount()>0)
+ $this->clear();
+ foreach($data as $key=>$value)
+ $this->add($key,$value);
+ }
+ else if($data!==null)
+ throw new TInvalidDataTypeException('map_data_not_iterable');
+ }
+ public function mergeWith($data)
+ {
+ if($data instanceof TPriorityMap)
+ {
+ foreach($data->getPriorities() as $priority)
+ {
+ foreach($data->itemsAtPriority($priority) as $key => $value)
+ $this->add($key,$value,$priority);
+ }
+ }
+ else if(is_array($data)||$data instanceof Traversable)
+ {
+ foreach($data as $key=>$value)
+ $this->add($key,$value);
+ }
+ else if($data!==null)
+ throw new TInvalidDataTypeException('map_data_not_iterable');
+ }
+ public function offsetExists($offset)
+ {
+ return $this->contains($offset);
+ }
+ public function offsetGet($offset)
+ {
+ return $this->itemAt($offset);
+ }
+ public function offsetSet($offset,$item)
+ {
+ $this->add($offset,$item);
+ }
+ public function offsetUnset($offset)
+ {
+ $this->remove($offset);
+ }
+}
class TStack extends TComponent implements IteratorAggregate,Countable
{
private $_d=array();
@@ -2225,13 +2899,13 @@ class TJavaScript
($g=Prado::getApplication()->getGlobalization(false))!==null &&
strtoupper($enc=$g->getCharset())!='UTF-8')
$value=iconv($enc, 'UTF-8', $value);
- $s = @json_encode($value,$options);
+ $s = json_encode($value,$options);
self::checkJsonError();
return $s;
}
public static function jsonDecode($value, $assoc = false, $depth = 512)
{
- $s= @json_decode($value, $assoc, $depth);
+ $s= json_decode($value, $assoc, $depth);
self::checkJsonError();
return $s;
}
@@ -2306,23 +2980,16 @@ class TUrlManager extends TModule
}
}
}
- switch($request->getUrlFormat())
- {
- case THttpRequestUrlFormat::Path:
- return $request->getApplicationUrl().'/'.strtr($url,array($amp=>'/','?'=>'/','='=>$request->getUrlParamSeparator()));
- case THttpRequestUrlFormat::HiddenPath:
- return rtrim(dirname($request->getApplicationUrl()), '/').'/'.strtr($url,array($amp=>'/','?'=>'/','='=>$request->getUrlParamSeparator()));
- default:
- return $request->getApplicationUrl().'?'.$url;
- }
+ if($request->getUrlFormat()===THttpRequestUrlFormat::Path)
+ return $request->getApplicationUrl().'/'.strtr($url,array($amp=>'/','?'=>'/','='=>$request->getUrlParamSeparator()));
+ else
+ return $request->getApplicationUrl().'?'.$url;
}
public function parseUrl()
{
$request=$this->getRequest();
$pathInfo=trim($request->getPathInfo(),'/');
- if(($request->getUrlFormat()===THttpRequestUrlFormat::Path ||
- $request->getUrlFormat()===THttpRequestUrlFormat::HiddenPath) &&
- $pathInfo!=='')
+ if($request->getUrlFormat()===THttpRequestUrlFormat::Path && $pathInfo!=='')
{
$separator=$request->getUrlParamSeparator();
$paths=explode('/',$pathInfo);
@@ -2368,7 +3035,6 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
private $_requestResolved=false;
private $_enableCookieValidation=false;
private $_cgiFix=0;
- private $_enableCache=false;
private $_url=null;
private $_id;
private $_items=array();
@@ -2382,6 +3048,19 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
}
public function init($config)
{
+ if(empty($this->_urlManagerID))
+ {
+ $this->_urlManager=new TUrlManager;
+ $this->_urlManager->init(null);
+ }
+ else
+ {
+ $this->_urlManager=$this->getApplication()->getModule($this->_urlManagerID);
+ if($this->_urlManager===null)
+ throw new TConfigurationException('httprequest_urlmanager_inexist',$this->_urlManagerID);
+ if(!($this->_urlManager instanceof TUrlManager))
+ throw new TConfigurationException('httprequest_urlmanager_invalid',$this->_urlManagerID);
+ }
if(php_sapi_name()==='cli')
{
$_SERVER['REMOTE_ADDR']='127.0.0.1';
@@ -2438,51 +3117,6 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
}
return $this->_url;
}
- public function setEnableCache($value)
- {
- $this->_enableCache = TPropertyValue::ensureBoolean($value);
- }
- public function getEnableCache()
- {
- return $this->_enableCache;
- }
- protected function getCacheKey()
- {
- return $this->getID();
- }
- protected function cacheUrlManager($manager)
- {
- if($this->getEnableCache())
- {
- $cache = $this->getApplication()->getCache();
- if($cache !== null)
- {
- $dependencies = null;
- if($this->getApplication()->getMode() !== TApplicationMode::Performance)
- if ($manager instanceof TUrlMapping && $fn = $manager->getConfigFile())
- {
- $fn = Prado::getPathOfNamespace($fn,$this->getApplication()->getConfigurationFileExt());
- $dependencies = new TFileCacheDependency($fn);
- }
- return $cache->set($this->getCacheKey(), $manager, 0, $dependencies);
- }
- }
- return false;
- }
- protected function loadCachedUrlManager()
- {
- if($this->getEnableCache())
- {
- $cache = $this->getApplication()->getCache();
- if($cache !== null)
- {
- $manager = $cache->get($this->getCacheKey());
- if($manager instanceof TUrlManager)
- return $manager;
- }
- }
- return null;
- }
public function getUrlManager()
{
return $this->_urlManagerID;
@@ -2493,26 +3127,6 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
}
public function getUrlManagerModule()
{
- if($this->_urlManager===null)
- {
- if(($this->_urlManager = $this->loadCachedUrlManager())===null)
- {
- if(empty($this->_urlManagerID))
- {
- $this->_urlManager=new TUrlManager;
- $this->_urlManager->init(null);
- }
- else
- {
- $this->_urlManager=$this->getApplication()->getModule($this->_urlManagerID);
- if($this->_urlManager===null)
- throw new TConfigurationException('httprequest_urlmanager_inexist',$this->_urlManagerID);
- if(!($this->_urlManager instanceof TUrlManager))
- throw new TConfigurationException('httprequest_urlmanager_invalid',$this->_urlManagerID);
- }
- $this->cacheUrlManager($this->_urlManager);
- }
- }
return $this->_urlManager;
}
public function getUrlFormat()
@@ -2703,7 +3317,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
{
if ($this->_cookieOnly===null)
$this->_cookieOnly=(int)ini_get('session.use_cookies') && (int)ini_get('session.use_only_cookies');
- $url=$this->getUrlManagerModule()->constructUrl($serviceID,$serviceParam,$getItems,$encodeAmpersand,$encodeGetItems);
+ $url=$this->_urlManager->constructUrl($serviceID,$serviceParam,$getItems,$encodeAmpersand,$encodeGetItems);
if(defined('SID') && SID != '' && !$this->_cookieOnly)
return $url . (strpos($url,'?')===false? '?' : ($encodeAmpersand?'&amp;':'&')) . SID;
else
@@ -2711,7 +3325,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar
}
protected function parseUrl()
{
- return $this->getUrlManagerModule()->parseUrl();
+ return $this->_urlManager->parseUrl();
}
public function resolveRequest($serviceIDs)
{
@@ -3008,7 +3622,6 @@ class THttpRequestUrlFormat extends TEnumerable
{
const Get='Get';
const Path='Path';
- const HiddenPath='HiddenPath';
}
class THttpResponseAdapter extends TApplicationComponent
{
@@ -6436,14 +7049,7 @@ class TClientScriptManager extends TApplicationComponent
}
public function getStyleSheetUrls()
{
- $stylesheets = array_values(
- array_merge(
- array_map(
- create_function('$e', 'return is_array($e) ? $e[0] : $e;'),
- $this->_styleSheetFiles),
- $this->_styleSheets
- )
- );
+ $stylesheets = array_values(array_merge($this->_styleSheetFiles, $this->_styleSheets));
foreach(Prado::getApplication()->getAssetManager()->getPublished() as $path=>$url)
if (substr($url,strlen($url)-4)=='.css')
$stylesheets[] = $url;
@@ -6644,6 +7250,10 @@ class TClientScriptManager extends TApplicationComponent
abstract class TClientSideOptions extends TComponent
{
private $_options;
+ public function __construct()
+ {
+ $this->_options = Prado::createComponent('System.Collections.TMap');
+ }
protected function setFunction($name, $code)
{
if(!TJavaScript::isJsLiteral($code))
@@ -6652,19 +7262,14 @@ abstract class TClientSideOptions extends TComponent
}
protected function getOption($name)
{
- if ($this->_options)
- return $this->_options->itemAt($name);
- else
- return null;
+ return $this->_options->itemAt($name);
}
protected function setOption($name, $value)
{
- $this->getOptions()->add($name, $value);
+ $this->_options->add($name, $value);
}
public function getOptions()
{
- if (!$this->_options)
- $this->_options = Prado::createComponent('System.Collections.TMap');
return $this->_options;
}
protected function ensureFunction($javascript)
@@ -8027,7 +8632,7 @@ class TTemplate extends TApplicationComponent implements ITemplate
else if($str[2]==='~')
$tpl[$c++]=array($container,array(TCompositeLiteral::TYPE_EXPRESSION,"\$this->publishFilePath('$this->_contextPath/$literal')"));
else if($str[2]==='/')
- $tpl[$c++]=array($container,array(TCompositeLiteral::TYPE_EXPRESSION,"rtrim(dirname(\$this->getApplication()->getRequest()->getApplicationUrl()), '/').'/$literal'"));
+ $tpl[$c++]=array($container,array(TCompositeLiteral::TYPE_EXPRESSION,"dirname(\$this->getApplication()->getRequest()->getApplicationUrl()).'/$literal'"));
else if($str[2]==='[')
{
$literal=strtr(trim(substr($literal,0,strlen($literal)-1)),array("'"=>"\'","\\"=>"\\\\"));
@@ -8244,7 +8849,7 @@ class TTemplate extends TApplicationComponent implements ITemplate
return array(self::CONFIG_PARAMETER,trim(substr($value,3,strlen($value)-5)));
elseif($value[2]==='/') {
$literal = trim(substr($value,3,strlen($value)-5));
- return array(self::CONFIG_EXPRESSION,"rtrim(dirname(\$this->getApplication()->getRequest()->getApplicationUrl()), '/').'/$literal'");
+ return array(self::CONFIG_EXPRESSION,"dirname(\$this->getApplication()->getRequest()->getApplicationUrl()).'/$literal'");
}
}
else
@@ -9528,7 +10133,6 @@ class TApplication extends TComponent
private $_services;
private $_service;
private $_modules=array();
- private $_lazyModules=array();
private $_parameters;
private $_configFile;
private $_configFileExt;
@@ -9761,7 +10365,7 @@ class TApplication extends TComponent
{
$this->_service=$value;
}
- public function setModule($id,IModule $module=null)
+ public function setModule($id,IModule $module)
{
if(isset($this->_modules[$id]))
throw new TConfigurationException('application_moduleid_duplicated',$id);
@@ -9770,14 +10374,7 @@ class TApplication extends TComponent
}
public function getModule($id)
{
- if(!array_key_exists($id, $this->_modules))
- return null;
- if($this->_modules[$id]===null)
- {
- $module = $this->internalLoadModule($id, true);
- $module[0]->init($module[1]);
- }
- return $this->_modules[$id];
+ return isset($this->_modules[$id])?$this->_modules[$id]:null;
}
public function getModules()
{
@@ -9917,24 +10514,6 @@ class TApplication extends TComponent
{
return 'TApplicationConfiguration';
}
- protected function internalLoadModule($id, $force=false)
- {
- list($moduleClass, $initProperties, $configElement)=$this->_lazyModules[$id];
- if(isset($initProperties['lazy']) && $initProperties['lazy'] && !$force)
- {
- $this->setModule($id, null);
- return null;
- }
- $module=Prado::createComponent($moduleClass);
- foreach($initProperties as $name=>$value)
- {
- if($name==='lazy') continue;
- $module->setSubProperty($name,$value);
- }
- $this->setModule($id,$module);
- unset($this->_lazyModules[$id]);
- return array($module,$configElement);
- }
public function applyConfiguration($config,$withinService=false)
{
if($config->getIsEmpty())
@@ -9965,11 +10544,17 @@ class TApplication extends TComponent
$modules=array();
foreach($config->getModules() as $id=>$moduleConfig)
{
+ list($moduleClass, $initProperties, $configElement)=$moduleConfig;
+ $module=Prado::createComponent($moduleClass);
if(!is_string($id))
- $id='_module'.count($this->_lazyModules);
- $this->_lazyModules[$id]=$moduleConfig;
- if($module = $this->internalLoadModule($id))
- $modules[]=$module;
+ {
+ $id='_module'.count($this->_modules);
+ $initProperties['id']=$id;
+ }
+ $this->setModule($id,$module);
+ foreach($initProperties as $name=>$value)
+ $module->setSubProperty($name,$value);
+ $modules[]=array($module,$configElement);
}
foreach($modules as $module)
$module[0]->init($module[1]);
diff --git a/index.html b/index.html
index c9553f7e..09e88e3b 100644
--- a/index.html
+++ b/index.html
@@ -8,7 +8,7 @@
<body>
<h1>PRADO Framework for PHP 5 </h1>
-<p>Version 3.2.1<br>
+<p>Version 3.2.2<br>
Copyright&copy; 2004-2013 by <a href="http://www.pradosoft.com/">Prado Software</a><br>
All Rights Reserved.
</p>
@@ -77,7 +77,6 @@ A Textmate extension can be found under <b>editors/Textmate</b>.
<h2>Documentation</h2>
<ul>
-<li><a href="docs/prado3_manual.chm">Integrated manual (CHM)</a>, including quickstart, API, class docs and wiki</li>
<li><a href="docs/quickstart.pdf">Quickstart tutorial (PDF)</a></li>
<li><a href="docs/manual/index.html">API documentation (HTML)</a></li>
<li><a href="docs/sqlmap/sqlmap.pdf">SQLMap PHP DataMapper Tutorial (PDF)</a></li>
diff --git a/phing b/phing
deleted file mode 100644
index a2f05a15..00000000
--- a/phing
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# Old version: call phing directly (still working)
-#PHING_HOME=`pwd`/buildscripts/phing
-#export PHING_HOME
-
-#PHP_CLASSPATH=$PHING_HOME/classes
-#export PHP_CLASSPATH
-
-#php -d html_errors=off -qC buildscripts/phing/bin/phing.php $@
-
-# New version: let phing's wrapper do the dirty job
-./buildscripts/phing/bin/phing $@ \ No newline at end of file
diff --git a/phing.bat b/phing.bat
deleted file mode 100644
index d677565e..00000000
--- a/phing.bat
+++ /dev/null
@@ -1 +0,0 @@
-buildscripts/phing/bin/phing %* \ No newline at end of file
diff --git a/requirements/messages.txt b/requirements/messages.txt
index 519fc239..5145fd77 100644
--- a/requirements/messages.txt
+++ b/requirements/messages.txt
@@ -1,19 +1,23 @@
-all passed = Congratulations! Your server configuration satisfies all requirements by PRADO.
+all passed = Congratulations! Your server configuration satisfies all requirements by PRADO.
passed with warnings = Your server configuration satisfies minimum requirements by PRADO. Please pay attention to the warnings listed below.
-failed = Sorry, your server configuration does not satisfy the requirements by PRADO.
-PHP version check = PHP version check
-PHP 5.2.0 or higher required = PHP version 5.2.0 or higher is required by PRADO.
+failed = Sorry, your server configuration does not satisfy the requirements by PRADO.
+PHP version check = PHP version check
+PHP 5.3.3 or higher required = PHP version 5.3.3 or higher is required by PRADO.
SQLite extension check = SQLite extension check
SQLite extension optional deprecated = SQLite extension is deprecated, but can still be used optionally to support old code.
Memcache extension check = Memcache extension check
Memcache extension optional = Memcache extension is optional. If it is absent, you will not be able to use TMemCache.
-APC extension check = APC extension check
+APC extension check = APC extension check
APC extension optional = APC extension is optional. If it is absent, you will not be able to use TAPCCache.
+eAccelerator extension check = eAccelerator extension check
+eAccelerator extension optional = eAccelerator extension is optional. If it is absent, you will not be able to use TEACache.
+XCache extension check = XCache extension check
+XCache extension optional = XCache extension is optional. If it is absent, you will not be able to use TXCache.
Zlib extension check = Zlib extension check
Zlib extension optional = Zlib extension is optional. If it is absent, page state will not be compressed and your page size may increase.
Reflection extension check = Reflection extension check
-Reflection extension required = Reflection extension is required by PRADO. It is used in by PRADO to check the validity of page templates.
-DOM extension check = DOM extension check
+Reflection extension required = Reflection extension is required by PRADO. It is used in by PRADO to check the validity of page templates.
+DOM extension check = DOM extension check
DOM extension required = DOM extension is required by PRADO. It is used in TXmlDocument to parse all sorts of XML-based configurations.
ICONV extension check = ICONV extension check
ICONV extension optional = ICONV extension is optional. If it is absent, some internationalization components may not work properly.
@@ -23,23 +27,23 @@ Mbstring extension check = Mbstring extension check
Mbstring extension optional = Mbstring extension is optional. If it is absent, prado will fallback using the not unicode-aware functions.
Hash extension check = Hash extension check
Hash extension optional = Hash extension is optional. If it is absent, only md5 and sha1 will be supported.
-XSL extension check = XSL extension check
+XSL extension check = XSL extension check
XSL extension optional = XSL extension is optional. If it is absent, you will not be able to use TXmlTransform.
-$_SERVER["HTTP_ACCEPT"] check = $_SERVER["HTTP_ACCEPT"] check
+$_SERVER["HTTP_ACCEPT"] check = $_SERVER["HTTP_ACCEPT"] check
HTTP_ACCEPT required = $_SERVER["HTTP_ACCEPT"] is required by multilanguage support.
$_SERVER["SCRIPT_FILENAME"] check = $_SERVER["SCRIPT_FILENAME"] check
SCRIPT_FILENAME required = $_SERVER["SCRIPT_FILENAME"] must point to the file path of this checker script.
$_SERVER["REQUEST_URI"] check = $_SERVER["REQUEST_URI"] check
REQUEST_URI required = Either $_SERVER["REQUEST_URI"] or $_SERVER["QUERY_STRING"] must be available for resolving user requests.
$_SERVER["PATH_INFO"] check = $_SERVER["PATH_INFO"] check
-PATH_INFO required = $_SERVER["PATH_INFO"] or $_SERVER["PHP_SELF"] and $_SERVER["SCRIPT_NAME"] are required for determining URL pathinfo.
-SPL extension check = SPL extension check
+PATH_INFO required = $_SERVER["PATH_INFO"] or $_SERVER["PHP_SELF"] and $_SERVER["SCRIPT_NAME"] are required for determining URL pathinfo.
+SPL extension check = SPL extension check
SPL extension required = SPL extension is required by PRADO.
CType extension check = CType extension check
CType extension required = CType extension is required by PRADO.
PCRE extension check = PCRE extension check
PCRE extension required = PCRE extension is required by PRADO.
-PDO extension check = PDO extension check
+PDO extension check = PDO extension check
PDO extension optional = PDO extension is optional. If it is absent, you will not be able to use System.Data.* components.
SOAP extension check = SOAP extension check
SOAP extension optional = SOAP extension is optional. If it is absent, you will not be able to use TSoapService. \ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php
index 53851f7a..153422be 100644
--- a/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php
+++ b/tests/FunctionalTests/tickets/tests/Ticket785TestCase.php
@@ -3,14 +3,15 @@ class Ticket785TestCase extends SeleniumTestCase
{
function test()
{
+ $year=date('Y')-1;
$base = 'ctl0_Content_';
$this->open('tickets/index.php?page=Ticket785');
$this->assertTitle("Verifying Ticket 785");
$this->assertText('selDate', '');
- $this->select($base."datePicker_year", "2007");
+ $this->select($base."datePicker_year", $year);
$this->pause(800);
- $expectedDate=date("d-m").'-2007';
+ $expectedDate=date("d-m").'-'.$year;
$this->assertText('selDate', $expectedDate);
$this->click($base."datePickerbutton");
diff --git a/tests/test_tools/functional_tests.php b/tests/test_tools/functional_tests.php
index 73bd6226..151f77db 100644
--- a/tests/test_tools/functional_tests.php
+++ b/tests/test_tools/functional_tests.php
@@ -4,8 +4,11 @@ $TEST_TOOLS = dirname(__FILE__);
if(isset($_GET['sr']))
{
-
- if(($selenium_resource=realpath($TEST_TOOLS.'/selenium/'.$_GET['sr']))!==false)
+ $selenium_base=$TEST_TOOLS.'/selenium/';
+ $selenium_resource=realpath($selenium_base.$_GET['sr']);
+
+ if($selenium_resource!==false &&
+ strpos($selenium_resource, $selenium_base) === 0)
echo file_get_contents($selenium_resource);
exit;
}
diff --git a/tests/unit/Web/THttpRequestTest.php b/tests/unit/Web/THttpRequestTest.php
index e8b86ac8..a5f17f01 100644
--- a/tests/unit/Web/THttpRequestTest.php
+++ b/tests/unit/Web/THttpRequestTest.php
@@ -84,6 +84,7 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
$request->setUrlManager('invalidManagerId');
try {
$request->init(null);
+ $request->getUrlManagerModule();
self::fail ('httprequest_urlmanager_inexist exception not thrown');
} catch (TConfigurationException $e) {
@@ -98,6 +99,7 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
$request->setUrlManager('badmanager');
try {
$request->init(null);
+ $request->getUrlManagerModule();
self::fail ('httprequest_urlmanager_invalid exception not thrown');
} catch (TConfigurationException $e) {
diff --git a/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php b/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php
index ae8ac1f5..e84b3cf3 100644
--- a/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php
+++ b/tests/unit/Web/UI/WebControls/TRequiredFieldValidatorTest.php
@@ -10,7 +10,13 @@ class TRequiredFieldValidatorTest extends PHPUnit_Framework_TestCase {
public function testGetEmptyInitialValue() {
$validator = new TRequiredFieldValidator();
- $this->assertEquals('', $validator->getInitialValue());
+ try {
+ $value = $validator->getInitialValue();
+ } catch (TConfigurationException $e) {
+ //since prado 3.2.2 you need to set at least ControlToValidate
+ $value = '';
+ }
+ $this->assertEquals('', $value);
}
}
diff --git a/travis-phing.sh b/travis-phing.sh
deleted file mode 100755
index 04d86a9f..00000000
--- a/travis-phing.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-#-----------------------------------------------------------
-#
-# Purpose: Run phing in a travis environment
-#
-# Target system: travis-ci
-#-----------------------------------------------------------
-
-installPearTask ()
-{
- echo -e "\nAuto-discover pear channels and upgrade ..."
- pear config-set auto_discover 1
- pear -qq channel-update pear.php.net
- pear -qq upgrade
- echo "... OK"
-
- echo -e "\nInstalling / upgrading phing ... "
- which phing >/dev/null &&
- pear upgrade pear.phing.info/phing ||
- pear install --alldeps pear.phing.info/phing
-
- # update paths
- phpenv rehash
-
- # re-test for phing:
- phing -v 2>&1 >/dev/null &&
- echo "... OK" ||
- return 1
-}
-
-
-#-----------------------------------------------------------
-
- installPearTask &&
- echo -e "\nSUCCESS - PHP ENVIRONMENT READY." ||
- ( echo "=== FAILED."; exit 1 )
-
- phing $*
-
-#------------------------------------------------------- eof