From 3069eaf35e833ffe4a1c1c7829dd7e168ae27420 Mon Sep 17 00:00:00 2001 From: Ciro Mattia Gonano Date: Wed, 11 Sep 2013 15:56:48 +0200 Subject: Merge up to r3319 --- .../PhpDocumentor/phpDocumentor/Setup.inc.php | 978 --------------------- 1 file changed, 978 deletions(-) delete mode 100755 buildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php (limited to 'buildscripts/PhpDocumentor/phpDocumentor/Setup.inc.php') 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 @@ - - * @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 = "$phpver"; - $phpdocver = "$phpdocver"; - } - 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;$irender->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;$nsetup->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[''] = htmlentities(''); - } - $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); - } -} -?> -- cgit v1.2.3