<?php
//
// +------------------------------------------------------------------------+
// | phpDocumentor |
// +------------------------------------------------------------------------+
// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver |
// | Email jeichorn@phpdoc.org, cellog@phpdoc.org |
// | Web http://www.phpdoc.org |
// | Mirror http://phpdocu.sourceforge.net/ |
// | PEAR http://pear.php.net/package-info.php?pacid=137 |
// +------------------------------------------------------------------------+
// | This source file is subject to version 3.00 of the PHP License, |
// | that is available at http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +------------------------------------------------------------------------+
//
/**
* Common variables/functions used by other files in phpDocumentor
* @package phpDocumentor
* @filesource
*/
/** phpDocumentor version */
if ('@VER@' != '@'.'VER@')
{
define("PHPDOCUMENTOR_VER","@VER@");
} else {
define("PHPDOCUMENTOR_VER","1.3.0RC4");
}
/** phpDocumentor version */
define("PHPDOCUMENTOR_WEBSITE","http://www.phpdoc.org");
define('SMART_PATH_DELIMITER', DIRECTORY_SEPARATOR ); // set the correct path delimiter
define('tokenizer_ext', extension_loaded('tokenizer') && version_compare(phpversion(),"4.3.0",">="));
// we just replace all the \ with / so that we can just operate on /
define('PATH_DELIMITER', '/' ); // set the correct path delimiter
define('PHPDOCUMENTOR_WINDOWS',substr(PHP_OS, 0, 3) == 'WIN');
define('_IN_PHP5', phpversion() == '5.0.0RC1-dev' || phpversion() == '5.0.0RC2-dev' ||
version_compare(phpversion(), '5.0.0', 'ge'));
if (/*@donotremove@*/0)
{
if (_IN_PHP5) {
require_once 'PhpDocumentor/phpDocumentor/clone5.inc.php';
} else {
require_once 'PhpDocumentor/phpDocumentor/clone.inc.php';
}
} else {
if (_IN_PHP5) {
require_once dirname(__FILE__) . '/clone5.inc.php';
} else {
require_once dirname(__FILE__) . '/clone.inc.php';
}
}
if (isset($_SERVER['argv'])) {
$argv = $_SERVER['argv'];
$argc = $_SERVER['argc'];
}
/** used in phpdoc.php and new_phpdoc.php */
function phpDocumentor_ConfigFileList($directory)
{
$ret = array();
if (@is_dir($directory))
{
$ret = array();
$d = @dir($directory); // thanks to Jason E Sweat (jsweat@users.sourceforge.net) for fix
while($d && $entry=$d->read())
{
$getentry = false;
if (strcmp($entry,".") != 0 && strcmp($entry,"..") != 0)
{
if (substr($entry,0,1) != ".") $getentry = true;
}
if ($getentry == true)
{
if (strpos($entry,'.ini'))
if (is_file($directory . PATH_DELIMITER . $entry))
{
$ret[] = str_replace('.ini','',$entry);
}
}
}
if ($d) $d->close();
} else
{
}
return $ret;
}
/**
* Parse an .ini file
*
* Works like {@link parse_ini_file}, except it will take a section like:
*
* <pre>
* [MYVAR]
* value1
* value2
* value3
* </pre>
*
* and return an associative array(MYVAR => array(value1, value2, value3))
* @return array
* @param string full path to the ini file
* @param boolean add an associative index for each section [in brackets]
*/
function phpDocumentor_parse_ini_file($filename, $process_sections = false)
{
$ini_array = array();
$sec_name = "";
$lines = @file($filename);
if( !$lines) return $lines;
foreach($lines as $line)
{
// code by Greg Beaver, ignore comments
if ($line[0] == ';') continue;
$line = trim($line);
if($line == "")
{
continue;
}
if($line[0] == "[" && $line[strlen($line) - 1] == "]")
{
$sec_name = substr($line, 1, strlen($line) - 2);
} else
{
if (strpos($line,"="))
{
$pos = strpos($line, "=");
$property = trim(substr($line, 0, $pos));
// code by Greg Beaver
if (substr($property, 0, 1) == '"' && substr($property, -1) == '"') {
$property = stripcslashes(substr($property,1,count($property) - 2));
}
$value = trim(substr($line, $pos + 1));
if ($value == 'false') $value = false;
if ($value == 'true') $value = true;
if (substr($value, 0, 1) == '"' && substr($value,-1) == '"')
{
$value = stripcslashes(substr($value,1,count($value) - 2));
}
// done additions
if($process_sections)
{
if ($sec_name != '')
$ini_array[$sec_name][$property] = $value;
else
$ini_array[$property] = $value;
} else
{
$ini_array[$property] = $value;
}
} else
{
// code by Greg Beaver
if (trim($line[0]) == ';') continue;
if($process_sections)
{
$ini_array[$sec_name][] = trim($line);
}
// done additions
}
}
}
return $ini_array;
}
if (!function_exists('array_key_exists'))
{
/** @ignore */
function array_key_exists($key, $search)
{
foreach($search as $keys => $nul)
{
if ($key == $keys) return true;
}
return false;
}
}
if (!function_exists('is_a'))
{
/** @ignore */
function is_a($classname, $classquery)
{
$father = get_parent_class($classname);
if (strtolower($father) == strtolower($classquery))
{
return true;
} elseif (!empty($father))
{
return is_a($father, $classquery);
} else
{
return false;
}
}
}
/** Debugging output */
function debug($s)
{
echo "$s\n";
}
/**
* Returns a formatted var_dump for debugging purposes.
* @param string $s string to display
* @param mixed $v variable to display with var_dump()
* @param mixed $v... unlimited number of additional variables to display with var_dump()
*/
function fancy_debug($s,$v)
{
if (isset($GLOBALS['dont_debug']) && $GLOBALS['dont_debug']) return;
debug($s."\n\n</pre><blockquote><pre>");
var_dump($v);
if (func_num_args()>2)
{
for($i=2;$i<func_num_args();$i++)
{
$a = func_get_arg($i);
// debug(" ");
var_dump($a);
}
}
debug("</pre></blockquote><pre>\n\n");
}
/**
* Returns a lower-cased version of get_class for PHP 5
*
* get_class() returns case as declared in the file in PHP 5
*/
function phpDocumentor_get_class($object)
{
return strtolower(get_class($object));
}
?>