4,18 → 4,11 |
* |
* PHP versions 4 and 5 |
* |
* LICENSE: This source file is subject to version 3.0 of the PHP license |
* that is available through the world-wide-web at the following URI: |
* 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 web, please |
* send a note to license@php.net so we can mail you a copy immediately. |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 1997-2006 The PHP Group |
* @license http://www.php.net/license/3_0.txt PHP License 3.0 |
* @version CVS: $Id: Role.php,v 1.16 2006/10/31 02:54:41 cellog Exp $ |
* @copyright 1997-2009 The Authors |
* @license http://opensource.org/licenses/bsd-license.php New BSD License |
* @link http://pear.php.net/package/PEAR |
* @since File available since Release 1.4.0a1 |
*/ |
29,9 → 22,9 |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 1997-2006 The PHP Group |
* @license http://www.php.net/license/3_0.txt PHP License 3.0 |
* @version Release: 1.5.1 |
* @copyright 1997-2009 The Authors |
* @license http://opensource.org/licenses/bsd-license.php New BSD License |
* @version Release: 1.10.1 |
* @link http://pear.php.net/package/PEAR |
* @since Class available since Release 1.4.0a1 |
*/ |
42,19 → 35,19 |
* |
* Never call this directly, it is called by the PEAR_Config constructor |
* @param PEAR_Config |
* @access private |
* @static |
*/ |
function initializeConfig(&$config) |
public static function initializeConfig(&$config) |
{ |
if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { |
PEAR_Installer_Role::registerRoles(); |
} |
|
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $class => $info) { |
if (!$info['config_vars']) { |
continue; |
} |
$config->_addConfigVars($info['config_vars']); |
|
$config->_addConfigVars($class, $info['config_vars']); |
} |
} |
|
63,21 → 56,23 |
* @param string role name |
* @param PEAR_Config |
* @return PEAR_Installer_Role_Common |
* @static |
*/ |
function &factory($pkg, $role, &$config) |
public static function &factory($pkg, $role, &$config) |
{ |
if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { |
PEAR_Installer_Role::registerRoles(); |
} |
|
if (!in_array($role, PEAR_Installer_Role::getValidRoles($pkg->getPackageType()))) { |
$a = false; |
return $a; |
} |
|
$a = 'PEAR_Installer_Role_' . ucfirst($role); |
if (!class_exists($a)) { |
require_once str_replace('_', '/', $a) . '.php'; |
} |
|
$b = new $a($config); |
return $b; |
} |
89,20 → 84,22 |
* @param string |
* @param bool clear cache |
* @return array |
* @static |
*/ |
function getValidRoles($release, $clear = false) |
public static function getValidRoles($release, $clear = false) |
{ |
if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { |
PEAR_Installer_Role::registerRoles(); |
} |
|
static $ret = array(); |
if ($clear) { |
$ret = array(); |
} |
|
if (isset($ret[$release])) { |
return $ret[$release]; |
} |
|
$ret[$release] = array(); |
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { |
if (in_array($release, $okreleases['releasetypes'])) { |
109,6 → 106,7 |
$ret[$release][] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
} |
|
return $ret[$release]; |
} |
|
120,25 → 118,29 |
* roles are actually fully bundled releases of a package |
* @param bool clear cache |
* @return array |
* @static |
*/ |
function getInstallableRoles($clear = false) |
public static function getInstallableRoles($clear = false) |
{ |
if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { |
PEAR_Installer_Role::registerRoles(); |
} |
|
static $ret; |
if ($clear) { |
unset($ret); |
} |
if (!isset($ret)) { |
$ret = array(); |
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { |
if ($okreleases['installable']) { |
$ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
|
if (isset($ret)) { |
return $ret; |
} |
|
$ret = array(); |
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { |
if ($okreleases['installable']) { |
$ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
} |
|
return $ret; |
} |
|
150,25 → 152,29 |
* so a tests file tests/file.phpt is installed into PackageName/tests/filepath.php |
* @param bool clear cache |
* @return array |
* @static |
*/ |
function getBaseinstallRoles($clear = false) |
public static function getBaseinstallRoles($clear = false) |
{ |
if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { |
PEAR_Installer_Role::registerRoles(); |
} |
|
static $ret; |
if ($clear) { |
unset($ret); |
} |
if (!isset($ret)) { |
$ret = array(); |
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { |
if ($okreleases['honorsbaseinstall']) { |
$ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
|
if (isset($ret)) { |
return $ret; |
} |
|
$ret = array(); |
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { |
if ($okreleases['honorsbaseinstall']) { |
$ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
} |
|
return $ret; |
} |
|
177,25 → 183,29 |
* like the "php" role. |
* @param bool clear cache |
* @return array |
* @static |
*/ |
function getPhpRoles($clear = false) |
public static function getPhpRoles($clear = false) |
{ |
if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { |
PEAR_Installer_Role::registerRoles(); |
} |
|
static $ret; |
if ($clear) { |
unset($ret); |
} |
if (!isset($ret)) { |
$ret = array(); |
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { |
if ($okreleases['phpfile']) { |
$ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
|
if (isset($ret)) { |
return $ret; |
} |
|
$ret = array(); |
foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { |
if ($okreleases['phpfile']) { |
$ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
} |
|
return $ret; |
} |
|
208,10 → 218,8 |
* included. |
* |
* @return bool TRUE on success, a PEAR error on failure |
* @access public |
* @static |
*/ |
function registerRoles($dir = null) |
public static function registerRoles($dir = null) |
{ |
$GLOBALS['_PEAR_INSTALLER_ROLES'] = array(); |
$parser = new PEAR_XMLParser; |
218,17 → 226,21 |
if ($dir === null) { |
$dir = dirname(__FILE__) . '/Role'; |
} |
|
if (!file_exists($dir) || !is_dir($dir)) { |
return PEAR::raiseError("registerRoles: opendir($dir) failed"); |
return PEAR::raiseError("registerRoles: opendir($dir) failed: does not exist/is not directory"); |
} |
|
$dp = @opendir($dir); |
if (empty($dp)) { |
return PEAR::raiseError("registerRoles: opendir($dir) failed"); |
return PEAR::raiseError("registerRoles: opendir($dir) failed: $php_errmsg"); |
} |
|
while ($entry = readdir($dp)) { |
if ($entry{0} == '.' || substr($entry, -4) != '.xml') { |
continue; |
} |
|
$class = "PEAR_Installer_Role_".substr($entry, 0, -4); |
// List of roles |
if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'][$class])) { |
238,9 → 250,11 |
if (!is_array($data['releasetypes'])) { |
$data['releasetypes'] = array($data['releasetypes']); |
} |
|
$GLOBALS['_PEAR_INSTALLER_ROLES'][$class] = $data; |
} |
} |
|
closedir($dp); |
ksort($GLOBALS['_PEAR_INSTALLER_ROLES']); |
PEAR_Installer_Role::getBaseinstallRoles(true); |
249,5 → 263,4 |
PEAR_Installer_Role::getValidRoles('****', true); |
return true; |
} |
} |
?> |
} |