/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Www.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>www_dir</locationconfig> |
<honorsbaseinstall>1</honorsbaseinstall> |
<unusualbaseinstall /> |
<phpfile /> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Cfg.php |
---|
New file |
0,0 → 1,105 |
<?php |
/** |
* PEAR_Installer_Role_Cfg |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 2007-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.7.0 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 2007-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.7.0 |
*/ |
class PEAR_Installer_Role_Cfg extends PEAR_Installer_Role_Common |
{ |
/** |
* @var PEAR_Installer |
*/ |
var $installer; |
/** |
* the md5 of the original file |
* |
* @var unknown_type |
*/ |
var $md5 = null; |
/** |
* Do any unusual setup here |
* @param PEAR_Installer |
* @param PEAR_PackageFile_v2 |
* @param array file attributes |
* @param string file name |
*/ |
function setup(&$installer, $pkg, $atts, $file) |
{ |
$this->installer = &$installer; |
$reg = &$this->installer->config->getRegistry(); |
$package = $reg->getPackage($pkg->getPackage(), $pkg->getChannel()); |
if ($package) { |
$filelist = $package->getFilelist(); |
if (isset($filelist[$file]) && isset($filelist[$file]['md5sum'])) { |
$this->md5 = $filelist[$file]['md5sum']; |
} |
} |
} |
function processInstallation($pkg, $atts, $file, $tmp_path, $layer = null) |
{ |
$test = parent::processInstallation($pkg, $atts, $file, $tmp_path, $layer); |
if (@file_exists($test[2]) && @file_exists($test[3])) { |
$md5 = md5_file($test[2]); |
// configuration has already been installed, check for mods |
if ($md5 !== $this->md5 && $md5 !== md5_file($test[3])) { |
// configuration has been modified, so save our version as |
// configfile-version |
$old = $test[2]; |
$test[2] .= '.new-' . $pkg->getVersion(); |
// backup original and re-install it |
PEAR::pushErrorHandling(PEAR_ERROR_RETURN); |
$tmpcfg = $this->config->get('temp_dir'); |
$newloc = System::mkdir(array('-p', $tmpcfg)); |
if (!$newloc) { |
// try temp_dir |
$newloc = System::mktemp(array('-d')); |
if (!$newloc || PEAR::isError($newloc)) { |
PEAR::popErrorHandling(); |
return PEAR::raiseError('Could not save existing configuration file '. |
$old . ', unable to install. Please set temp_dir ' . |
'configuration variable to a writeable location and try again'); |
} |
} else { |
$newloc = $tmpcfg; |
} |
$temp_file = $newloc . DIRECTORY_SEPARATOR . uniqid('savefile'); |
if (!@copy($old, $temp_file)) { |
PEAR::popErrorHandling(); |
return PEAR::raiseError('Could not save existing configuration file '. |
$old . ', unable to install. Please set temp_dir ' . |
'configuration variable to a writeable location and try again'); |
} |
PEAR::popErrorHandling(); |
$this->installer->log(0, "WARNING: configuration file $old is being installed as $test[2], you should manually merge in changes to the existing configuration file"); |
$this->installer->addFileOperation('rename', array($temp_file, $old, false)); |
$this->installer->addFileOperation('delete', array($temp_file)); |
} |
} |
return $test; |
} |
} |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Src.xml |
---|
New file |
0,0 → 1,12 |
<role version="1.0"> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<installable>1</installable> |
<locationconfig>temp_dir</locationconfig> |
<honorsbaseinstall /> |
<unusualbaseinstall /> |
<phpfile /> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Ext.php |
---|
New file |
0,0 → 1,27 |
<?php |
/** |
* PEAR_Installer_Role_Ext |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role_Ext extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Php.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>php_dir</locationconfig> |
<honorsbaseinstall>1</honorsbaseinstall> |
<unusualbaseinstall /> |
<phpfile>1</phpfile> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Script.php |
---|
New file |
0,0 → 1,27 |
<?php |
/** |
* PEAR_Installer_Role_Script |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role_Script extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Doc.php |
---|
New file |
0,0 → 1,27 |
<?php |
/** |
* PEAR_Installer_Role_Doc |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role_Doc extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Cfg.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>cfg_dir</locationconfig> |
<honorsbaseinstall /> |
<unusualbaseinstall>1</unusualbaseinstall> |
<phpfile /> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Data.php |
---|
New file |
0,0 → 1,27 |
<?php |
/** |
* PEAR_Installer_Role_Data |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role_Data extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Ext.xml |
---|
New file |
0,0 → 1,12 |
<role version="1.0"> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>ext_dir</locationconfig> |
<honorsbaseinstall>1</honorsbaseinstall> |
<unusualbaseinstall /> |
<phpfile /> |
<executable /> |
<phpextension>1</phpextension> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Man.php |
---|
New file |
0,0 → 1,28 |
<?php |
/** |
* PEAR_Installer_Role_Man |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Hannes Magnusson <bjori@php.net> |
* @copyright 2011 The Authors |
* @license http://opensource.org/licenses/bsd-license.php New BSD License |
* @version SVN: $Id: $ |
* @link http://pear.php.net/package/PEAR |
* @since File available since Release 1.10.0 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Hannes Magnusson <bjori@php.net> |
* @copyright 2011 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.10.0 |
*/ |
class PEAR_Installer_Role_Man extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Script.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>bin_dir</locationconfig> |
<honorsbaseinstall>1</honorsbaseinstall> |
<unusualbaseinstall /> |
<phpfile /> |
<executable>1</executable> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Doc.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>doc_dir</locationconfig> |
<honorsbaseinstall /> |
<unusualbaseinstall /> |
<phpfile /> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Test.php |
---|
New file |
0,0 → 1,27 |
<?php |
/** |
* PEAR_Installer_Role_Test |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role_Test extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Data.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>data_dir</locationconfig> |
<honorsbaseinstall /> |
<unusualbaseinstall /> |
<phpfile /> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Man.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>man_dir</locationconfig> |
<honorsbaseinstall>1</honorsbaseinstall> |
<unusualbaseinstall /> |
<phpfile /> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Www.php |
---|
New file |
0,0 → 1,27 |
<?php |
/** |
* PEAR_Installer_Role_Www |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 2007-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.7.0 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 2007-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.7.0 |
*/ |
class PEAR_Installer_Role_Www extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Src.php |
---|
New file |
0,0 → 1,33 |
<?php |
/** |
* PEAR_Installer_Role_Src |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role_Src extends PEAR_Installer_Role_Common |
{ |
function setup(&$installer, $pkg, $atts, $file) |
{ |
$installer->source_files++; |
} |
} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Php.php |
---|
New file |
0,0 → 1,27 |
<?php |
/** |
* PEAR_Installer_Role_Php |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role_Php extends PEAR_Installer_Role_Common {} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Test.xml |
---|
New file |
0,0 → 1,15 |
<role version="1.0"> |
<releasetypes>php</releasetypes> |
<releasetypes>extsrc</releasetypes> |
<releasetypes>extbin</releasetypes> |
<releasetypes>zendextsrc</releasetypes> |
<releasetypes>zendextbin</releasetypes> |
<installable>1</installable> |
<locationconfig>test_dir</locationconfig> |
<honorsbaseinstall /> |
<unusualbaseinstall /> |
<phpfile /> |
<executable /> |
<phpextension /> |
<config_vars /> |
</role> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role/Common.php |
---|
New file |
0,0 → 1,173 |
<?php |
/** |
* Base class for all installation roles. |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 1997-2006 The PHP Group |
* @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 |
*/ |
/** |
* Base class for all installation roles. |
* |
* This class allows extensibility of file roles. Packages with complex |
* customization can now provide custom file roles along with the possibility of |
* adding configuration values to match. |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @copyright 1997-2006 The PHP Group |
* @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 |
*/ |
class PEAR_Installer_Role_Common |
{ |
/** |
* @var PEAR_Config |
* @access protected |
*/ |
var $config; |
/** |
* @param PEAR_Config |
*/ |
function __construct(&$config) |
{ |
$this->config = $config; |
} |
/** |
* Retrieve configuration information about a file role from its XML info |
* |
* @param string $role Role Classname, as in "PEAR_Installer_Role_Data" |
* @return array |
*/ |
function getInfo($role) |
{ |
if (empty($GLOBALS['_PEAR_INSTALLER_ROLES'][$role])) { |
return PEAR::raiseError('Unknown Role class: "' . $role . '"'); |
} |
return $GLOBALS['_PEAR_INSTALLER_ROLES'][$role]; |
} |
/** |
* This is called for each file to set up the directories and files |
* @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 |
* @param array attributes from the <file> tag |
* @param string file name |
* @return array an array consisting of: |
* |
* 1 the original, pre-baseinstalldir installation directory |
* 2 the final installation directory |
* 3 the full path to the final location of the file |
* 4 the location of the pre-installation file |
*/ |
function processInstallation($pkg, $atts, $file, $tmp_path, $layer = null) |
{ |
$roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . |
ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); |
if (PEAR::isError($roleInfo)) { |
return $roleInfo; |
} |
if (!$roleInfo['locationconfig']) { |
return false; |
} |
if ($roleInfo['honorsbaseinstall']) { |
$dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], $layer, |
$pkg->getChannel()); |
if (!empty($atts['baseinstalldir'])) { |
$dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; |
} |
} elseif ($roleInfo['unusualbaseinstall']) { |
$dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], |
$layer, $pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage(); |
if (!empty($atts['baseinstalldir'])) { |
$dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; |
} |
} else { |
$dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], |
$layer, $pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage(); |
} |
if (dirname($file) != '.' && empty($atts['install-as'])) { |
$dest_dir .= DIRECTORY_SEPARATOR . dirname($file); |
} |
if (empty($atts['install-as'])) { |
$dest_file = $dest_dir . DIRECTORY_SEPARATOR . basename($file); |
} else { |
$dest_file = $dest_dir . DIRECTORY_SEPARATOR . $atts['install-as']; |
} |
$orig_file = $tmp_path . DIRECTORY_SEPARATOR . $file; |
// Clean up the DIRECTORY_SEPARATOR mess |
$ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; |
list($dest_dir, $dest_file, $orig_file) = preg_replace(array('!\\\\+!', '!/!', "!$ds2+!"), |
array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, |
DIRECTORY_SEPARATOR), |
array($dest_dir, $dest_file, $orig_file)); |
return array($save_destdir, $dest_dir, $dest_file, $orig_file); |
} |
/** |
* Get the name of the configuration variable that specifies the location of this file |
* @return string|false |
*/ |
function getLocationConfig() |
{ |
$roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . |
ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); |
if (PEAR::isError($roleInfo)) { |
return $roleInfo; |
} |
return $roleInfo['locationconfig']; |
} |
/** |
* Do any unusual setup here |
* @param PEAR_Installer |
* @param PEAR_PackageFile_v2 |
* @param array file attributes |
* @param string file name |
*/ |
function setup(&$installer, $pkg, $atts, $file) |
{ |
} |
function isExecutable() |
{ |
$roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . |
ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); |
if (PEAR::isError($roleInfo)) { |
return $roleInfo; |
} |
return $roleInfo['executable']; |
} |
function isInstallable() |
{ |
$roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . |
ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); |
if (PEAR::isError($roleInfo)) { |
return $roleInfo; |
} |
return $roleInfo['installable']; |
} |
function isExtension() |
{ |
$roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . |
ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); |
if (PEAR::isError($roleInfo)) { |
return $roleInfo; |
} |
return $roleInfo['phpextension']; |
} |
} |
?> |
/branches/v1.3-critias/bibliotheque/pear/PEAR/Installer/Role.php |
---|
New file |
0,0 → 1,266 |
<?php |
/** |
* PEAR_Installer_Role |
* |
* PHP versions 4 and 5 |
* |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
/** |
* base class for installer roles |
*/ |
require_once 'PEAR/Installer/Role/Common.php'; |
require_once 'PEAR/XMLParser.php'; |
/** |
* @category pear |
* @package PEAR |
* @author Greg Beaver <cellog@php.net> |
* @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 |
*/ |
class PEAR_Installer_Role |
{ |
/** |
* Set up any additional configuration variables that file roles require |
* |
* Never call this directly, it is called by the PEAR_Config constructor |
* @param PEAR_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($class, $info['config_vars']); |
} |
} |
/** |
* @param PEAR_PackageFile_v2 |
* @param string role name |
* @param PEAR_Config |
* @return PEAR_Installer_Role_Common |
*/ |
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; |
} |
/** |
* Get a list of file roles that are valid for the particular release type. |
* |
* For instance, src files serve no purpose in regular php releases. |
* @param string |
* @param bool clear cache |
* @return array |
*/ |
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'])) { |
$ret[$release][] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); |
} |
} |
return $ret[$release]; |
} |
/** |
* Get a list of roles that require their files to be installed |
* |
* Most roles must be installed, but src and package roles, for instance |
* are pseudo-roles. src files are compiled into a new extension. Package |
* roles are actually fully bundled releases of a package |
* @param bool clear cache |
* @return array |
*/ |
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)) { |
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; |
} |
/** |
* Return an array of roles that are affected by the baseinstalldir attribute |
* |
* Most roles ignore this attribute, and instead install directly into: |
* PackageName/filepath |
* so a tests file tests/file.phpt is installed into PackageName/tests/filepath.php |
* @param bool clear cache |
* @return array |
*/ |
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)) { |
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; |
} |
/** |
* Return an array of file roles that should be analyzed for PHP content at package time, |
* like the "php" role. |
* @param bool clear cache |
* @return array |
*/ |
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)) { |
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; |
} |
/** |
* Scan through the Command directory looking for classes |
* and see what commands they implement. |
* @param string which directory to look for classes, defaults to |
* the Installer/Roles subdirectory of |
* the directory from where this file (__FILE__) is |
* included. |
* |
* @return bool TRUE on success, a PEAR error on failure |
*/ |
public static function registerRoles($dir = null) |
{ |
$GLOBALS['_PEAR_INSTALLER_ROLES'] = array(); |
$parser = new PEAR_XMLParser; |
if ($dir === null) { |
$dir = dirname(__FILE__) . '/Role'; |
} |
if (!file_exists($dir) || !is_dir($dir)) { |
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: $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])) { |
$file = "$dir/$entry"; |
$parser->parse(file_get_contents($file)); |
$data = $parser->getData(); |
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); |
PEAR_Installer_Role::getInstallableRoles(true); |
PEAR_Installer_Role::getPhpRoles(true); |
PEAR_Installer_Role::getValidRoles('****', true); |
return true; |
} |
} |