Update to PEAR 1.7.2, Image_Canvas 0.3.1, Image_Color 1.0.3, Image_Graph 0.7.2, XML_Parser 1.3.1.
Removed PHP_Compat, and references to it. Removed ionCube/Zend/mmCache compatibility checks in test.php script. Changed minimum PHP requirement to 5.0 in test.php script.
This commit is contained in:
@@ -1,27 +1,35 @@
|
||||
<?php
|
||||
//
|
||||
// +----------------------------------------------------------------------+
|
||||
// | PHP Version 5 |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Copyright (c) 1997-2004 The PHP Group |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | This source file is subject to version 3.0 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available through the world-wide-web at the following url: |
|
||||
// | 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. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Author: Greg Beaver <cellog@php.net> |
|
||||
// | |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Validator.php,v 1.82 2005/10/27 05:07:24 cellog Exp $
|
||||
/**
|
||||
* PEAR_PackageFile_v2, package.xml version 2.0, read/write version
|
||||
*
|
||||
* 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-2008 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: Validator.php,v 1.106 2008/03/28 22:23:41 dufuz Exp $
|
||||
* @link http://pear.php.net/package/PEAR
|
||||
* @since File available since Release 1.4.0a8
|
||||
*/
|
||||
/**
|
||||
* Private validation class used by PEAR_PackageFile_v2 - do not use directly, its
|
||||
* sole purpose is to split up the PEAR/PackageFile/v2.php file to make it smaller
|
||||
* @author Greg Beaver <cellog@php.net>
|
||||
* @category pear
|
||||
* @package PEAR
|
||||
* @author Greg Beaver <cellog@php.net>
|
||||
* @copyright 1997-2008 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version Release: 1.7.2
|
||||
* @link http://pear.php.net/package/PEAR
|
||||
* @since Class available since Release 1.4.0a8
|
||||
* @access private
|
||||
*/
|
||||
class PEAR_PackageFile_v2_Validator
|
||||
@@ -42,6 +50,10 @@ class PEAR_PackageFile_v2_Validator
|
||||
* @var int
|
||||
*/
|
||||
var $_isValid = 0;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
var $_filesValid = 0;
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
@@ -66,7 +78,9 @@ class PEAR_PackageFile_v2_Validator
|
||||
return false;
|
||||
}
|
||||
if (!isset($this->_packageInfo['attribs']['version']) ||
|
||||
$this->_packageInfo['attribs']['version'] != '2.0') {
|
||||
($this->_packageInfo['attribs']['version'] != '2.0' &&
|
||||
$this->_packageInfo['attribs']['version'] != '2.1')
|
||||
) {
|
||||
$this->_noPackageVersion();
|
||||
}
|
||||
$structure =
|
||||
@@ -95,10 +109,21 @@ class PEAR_PackageFile_v2_Validator
|
||||
// needs a certain package installed in order to implement a role or task
|
||||
'*providesextension',
|
||||
'*srcpackage|*srcuri',
|
||||
'+phprelease|+extsrcrelease|+extbinrelease|bundle', //special validation needed
|
||||
'+phprelease|+extsrcrelease|+extbinrelease|' .
|
||||
'+zendextsrcrelease|+zendextbinrelease|bundle', //special validation needed
|
||||
'*changelog',
|
||||
);
|
||||
$test = $this->_packageInfo;
|
||||
if (isset($test['dependencies']) &&
|
||||
isset($test['dependencies']['required']) &&
|
||||
isset($test['dependencies']['required']['pearinstaller']) &&
|
||||
isset($test['dependencies']['required']['pearinstaller']['min']) &&
|
||||
version_compare('1.7.2',
|
||||
$test['dependencies']['required']['pearinstaller']['min'], '<')
|
||||
) {
|
||||
$this->_pearVersionTooLow($test['dependencies']['required']['pearinstaller']['min']);
|
||||
return false;
|
||||
}
|
||||
// ignore post-installation array fields
|
||||
if (array_key_exists('filelist', $test)) {
|
||||
unset($test['filelist']);
|
||||
@@ -115,18 +140,13 @@ class PEAR_PackageFile_v2_Validator
|
||||
if (array_key_exists('_lastversion', $test)) {
|
||||
unset($test['_lastversion']);
|
||||
}
|
||||
if (!$this->_stupidSchemaValidate($structure,
|
||||
$test, '<package>')) {
|
||||
if (!$this->_stupidSchemaValidate($structure, $test, '<package>')) {
|
||||
return false;
|
||||
}
|
||||
if (empty($this->_packageInfo['name'])) {
|
||||
$this->_tagCannotBeEmpty('name');
|
||||
}
|
||||
if (isset($this->_packageInfo['uri'])) {
|
||||
$test = 'uri';
|
||||
} else {
|
||||
$test = 'channel';
|
||||
}
|
||||
$test = isset($this->_packageInfo['uri']) ? 'uri' :'channel';
|
||||
if (empty($this->_packageInfo[$test])) {
|
||||
$this->_tagCannotBeEmpty($test);
|
||||
}
|
||||
@@ -159,6 +179,9 @@ class PEAR_PackageFile_v2_Validator
|
||||
$this->_validateCompatible();
|
||||
}
|
||||
if (!isset($this->_packageInfo['bundle'])) {
|
||||
if (empty($this->_packageInfo['contents'])) {
|
||||
$this->_tagCannotBeEmpty('contents');
|
||||
}
|
||||
if (!isset($this->_packageInfo['contents']['dir'])) {
|
||||
$this->_filelistMustContainDir('contents');
|
||||
return false;
|
||||
@@ -218,11 +241,16 @@ class PEAR_PackageFile_v2_Validator
|
||||
if ($fail) {
|
||||
return false;
|
||||
}
|
||||
$list = $this->_packageInfo['contents'];
|
||||
if (isset($list['dir']) && is_array($list['dir']) && isset($list['dir'][0])) {
|
||||
$this->_multipleToplevelDirNotAllowed();
|
||||
return $this->_isValid = 0;
|
||||
}
|
||||
$this->_validateFilelist();
|
||||
$this->_validateRelease();
|
||||
if (!$this->_stack->hasErrors()) {
|
||||
$chan = $this->_pf->_registry->getChannel($this->_pf->getChannel(), true);
|
||||
if (!$chan) {
|
||||
if (PEAR::isError($chan)) {
|
||||
$this->_unknownChannel($this->_pf->getChannel());
|
||||
} else {
|
||||
$valpack = $chan->getValidationPackage();
|
||||
@@ -417,6 +445,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
{
|
||||
$ret = array();
|
||||
if (count($pieces = explode('|', $key)) > 1) {
|
||||
$ret['choices'] = array();
|
||||
foreach ($pieces as $piece) {
|
||||
$ret['choices'][] = $this->_processStructure($piece);
|
||||
}
|
||||
@@ -442,21 +471,21 @@ class PEAR_PackageFile_v2_Validator
|
||||
$a = $this->_stupidSchemaValidate($structure, $this->_packageInfo['version'], '<version>');
|
||||
$a &= $this->_stupidSchemaValidate($structure, $this->_packageInfo['stability'], '<stability>');
|
||||
if ($a) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$this->_packageInfo['version']['release'])) {
|
||||
$this->_invalidVersion('release', $this->_packageInfo['version']['release']);
|
||||
}
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$this->_packageInfo['version']['api'])) {
|
||||
$this->_invalidVersion('api', $this->_packageInfo['version']['api']);
|
||||
}
|
||||
if (!in_array($this->_packageInfo['stability']['release'],
|
||||
array('snapshot', 'devel', 'alpha', 'beta', 'stable'))) {
|
||||
$this->_invalidState('release', $this->_packageinfo['stability']['release']);
|
||||
$this->_invalidState('release', $this->_packageInfo['stability']['release']);
|
||||
}
|
||||
if (!in_array($this->_packageInfo['stability']['api'],
|
||||
array('devel', 'alpha', 'beta', 'stable'))) {
|
||||
$this->_invalidState('api', $this->_packageinfo['stability']['api']);
|
||||
$this->_invalidState('api', $this->_packageInfo['stability']['api']);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -495,17 +524,29 @@ class PEAR_PackageFile_v2_Validator
|
||||
$type = $installcondition ? '<installcondition><php>' : '<dependencies><required><php>';
|
||||
$this->_stupidSchemaValidate($structure, $dep, $type);
|
||||
if (isset($dep['min'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/',
|
||||
$dep['min'])) {
|
||||
$this->_invalidVersion($type . '<min>', $dep['min']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['max'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/',
|
||||
$dep['max'])) {
|
||||
$this->_invalidVersion($type . '<max>', $dep['max']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['exclude'])) {
|
||||
if (!is_array($dep['exclude'])) {
|
||||
$dep['exclude'] = array($dep['exclude']);
|
||||
}
|
||||
foreach ($dep['exclude'] as $exclude) {
|
||||
if (!preg_match(
|
||||
'/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/',
|
||||
$exclude)) {
|
||||
$this->_invalidVersion($type . '<exclude>', $exclude);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _validatePearinstallerDep($dep)
|
||||
@@ -518,21 +559,21 @@ class PEAR_PackageFile_v2_Validator
|
||||
);
|
||||
$this->_stupidSchemaValidate($structure, $dep, '<dependencies><required><pearinstaller>');
|
||||
if (isset($dep['min'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['min'])) {
|
||||
$this->_invalidVersion('<dependencies><required><pearinstaller><min>',
|
||||
$dep['min']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['max'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['max'])) {
|
||||
$this->_invalidVersion('<dependencies><required><pearinstaller><max>',
|
||||
$dep['max']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['recommended'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['recommended'])) {
|
||||
$this->_invalidVersion('<dependencies><required><pearinstaller><recommended>',
|
||||
$dep['recommended']);
|
||||
@@ -543,7 +584,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
$dep['exclude'] = array($dep['exclude']);
|
||||
}
|
||||
foreach ($dep['exclude'] as $exclude) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$exclude)) {
|
||||
$this->_invalidVersion('<dependencies><required><pearinstaller><exclude>',
|
||||
$exclude);
|
||||
@@ -605,19 +646,19 @@ class PEAR_PackageFile_v2_Validator
|
||||
$this->_DepchannelCannotBeUri('<dependencies>' . $group . $type);
|
||||
}
|
||||
if (isset($dep['min'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['min'])) {
|
||||
$this->_invalidVersion('<dependencies>' . $group . $type . '<min>', $dep['min']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['max'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['max'])) {
|
||||
$this->_invalidVersion('<dependencies>' . $group . $type . '<max>', $dep['max']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['recommended'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['recommended'])) {
|
||||
$this->_invalidVersion('<dependencies>' . $group . $type . '<recommended>',
|
||||
$dep['recommended']);
|
||||
@@ -628,7 +669,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
$dep['exclude'] = array($dep['exclude']);
|
||||
}
|
||||
foreach ($dep['exclude'] as $exclude) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$exclude)) {
|
||||
$this->_invalidVersion('<dependencies>' . $group . $type . '<exclude>',
|
||||
$exclude);
|
||||
@@ -641,10 +682,10 @@ class PEAR_PackageFile_v2_Validator
|
||||
{
|
||||
$this->_validatePackageDep($dep, $group, '<subpackage>');
|
||||
if (isset($dep['providesextension'])) {
|
||||
$this->_subpackageCannotProvideExtension(@$dep['name']);
|
||||
$this->_subpackageCannotProvideExtension(isset($dep['name']) ? $dep['name'] : '');
|
||||
}
|
||||
if (isset($dep['conflicts'])) {
|
||||
$this->_subpackagesCannotConflict(@$dep['name']);
|
||||
$this->_subpackagesCannotConflict(isset($dep['name']) ? $dep['name'] : '');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -677,19 +718,19 @@ class PEAR_PackageFile_v2_Validator
|
||||
}
|
||||
$this->_stupidSchemaValidate($structure, $dep, $type);
|
||||
if (isset($dep['min'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['min'])) {
|
||||
$this->_invalidVersion(substr($type, 1) . '<min', $dep['min']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['max'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['max'])) {
|
||||
$this->_invalidVersion(substr($type, 1) . '<max', $dep['max']);
|
||||
}
|
||||
}
|
||||
if (isset($dep['recommended'])) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$dep['recommended'])) {
|
||||
$this->_invalidVersion(substr($type, 1) . '<recommended', $dep['recommended']);
|
||||
}
|
||||
@@ -699,7 +740,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
$dep['exclude'] = array($dep['exclude']);
|
||||
}
|
||||
foreach ($dep['exclude'] as $exclude) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$exclude)) {
|
||||
$this->_invalidVersion(substr($type, 1) . '<exclude', $exclude);
|
||||
}
|
||||
@@ -896,13 +937,13 @@ class PEAR_PackageFile_v2_Validator
|
||||
}
|
||||
$this->_stupidSchemaValidate($required, $package, $type);
|
||||
if (is_array($package) && array_key_exists('min', $package)) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$package['min'])) {
|
||||
$this->_invalidVersion(substr($type, 1) . '<min', $package['min']);
|
||||
}
|
||||
}
|
||||
if (is_array($package) && array_key_exists('max', $package)) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$package['max'])) {
|
||||
$this->_invalidVersion(substr($type, 1) . '<max', $package['max']);
|
||||
}
|
||||
@@ -912,7 +953,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
$package['exclude'] = array($package['exclude']);
|
||||
}
|
||||
foreach ($package['exclude'] as $exclude) {
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?$/',
|
||||
if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/',
|
||||
$exclude)) {
|
||||
$this->_invalidVersion(substr($type, 1) . '<exclude', $exclude);
|
||||
}
|
||||
@@ -971,9 +1012,15 @@ class PEAR_PackageFile_v2_Validator
|
||||
$dirname = $iscontents ? '<contents>' : $unknown;
|
||||
} else {
|
||||
$dirname = '<dir name="' . $list['attribs']['name'] . '">';
|
||||
if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~',
|
||||
str_replace('\\', '/', $list['attribs']['name']))) {
|
||||
// file contains .. parent directory or . cur directory
|
||||
$this->_invalidDirName($list['attribs']['name']);
|
||||
}
|
||||
}
|
||||
$res = $this->_stupidSchemaValidate($struc, $list, $dirname);
|
||||
if ($allowignore && $res) {
|
||||
$ignored_or_installed = array();
|
||||
$this->_pf->getFilelist();
|
||||
$fcontents = $this->_pf->getContents();
|
||||
$filelist = array();
|
||||
@@ -990,6 +1037,20 @@ class PEAR_PackageFile_v2_Validator
|
||||
foreach ($list['install'] as $file) {
|
||||
if (!isset($filelist[$file['attribs']['name']])) {
|
||||
$this->_notInContents($file['attribs']['name'], 'install');
|
||||
continue;
|
||||
}
|
||||
if (array_key_exists($file['attribs']['name'], $ignored_or_installed)) {
|
||||
$this->_multipleInstallAs($file['attribs']['name']);
|
||||
}
|
||||
if (!isset($ignored_or_installed[$file['attribs']['name']])) {
|
||||
$ignored_or_installed[$file['attribs']['name']] = array();
|
||||
}
|
||||
$ignored_or_installed[$file['attribs']['name']][] = 1;
|
||||
if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~',
|
||||
str_replace('\\', '/', $file['attribs']['as']))) {
|
||||
// file contains .. parent directory or . cur directory references
|
||||
$this->_invalidFileInstallAs($file['attribs']['name'],
|
||||
$file['attribs']['as']);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1000,22 +1061,36 @@ class PEAR_PackageFile_v2_Validator
|
||||
foreach ($list['ignore'] as $file) {
|
||||
if (!isset($filelist[$file['attribs']['name']])) {
|
||||
$this->_notInContents($file['attribs']['name'], 'ignore');
|
||||
continue;
|
||||
}
|
||||
if (array_key_exists($file['attribs']['name'], $ignored_or_installed)) {
|
||||
$this->_ignoreAndInstallAs($file['attribs']['name']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$allowignore && isset($list['file'])) {
|
||||
if (is_string($list['file'])) {
|
||||
$this->_oldStyleFileNotAllowed();
|
||||
return false;
|
||||
}
|
||||
if (!isset($list['file'][0])) {
|
||||
// single file
|
||||
$list['file'] = array($list['file']);
|
||||
}
|
||||
foreach ($list['file'] as $i => $file)
|
||||
{
|
||||
if (isset($file['attribs']) && isset($file['attribs']['name']) &&
|
||||
$file['attribs']['name']{0} == '.' &&
|
||||
$file['attribs']['name']{1} == '/') {
|
||||
// name is something like "./doc/whatever.txt"
|
||||
$this->_invalidFileName($file['attribs']['name']);
|
||||
if (isset($file['attribs']) && isset($file['attribs']['name'])) {
|
||||
if ($file['attribs']['name']{0} == '.' &&
|
||||
$file['attribs']['name']{1} == '/') {
|
||||
// name is something like "./doc/whatever.txt"
|
||||
$this->_invalidFileName($file['attribs']['name'], $dirname);
|
||||
}
|
||||
if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~',
|
||||
str_replace('\\', '/', $file['attribs']['name']))) {
|
||||
// file contains .. parent directory or . cur directory
|
||||
$this->_invalidFileName($file['attribs']['name'], $dirname);
|
||||
}
|
||||
}
|
||||
if (isset($file['attribs']) && isset($file['attribs']['role'])) {
|
||||
if (!$this->_validateRole($file['attribs']['role'])) {
|
||||
@@ -1064,7 +1139,8 @@ class PEAR_PackageFile_v2_Validator
|
||||
$ret = call_user_func(array($tagClass, 'validateXml'),
|
||||
$this->_pf, $v, $this->_pf->_config, $save);
|
||||
if (is_array($ret)) {
|
||||
$this->_invalidTask($task, $ret, @$save['name']);
|
||||
$this->_invalidTask($task, $ret, isset($save['name']) ?
|
||||
$save['name'] : '');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1164,64 +1240,68 @@ class PEAR_PackageFile_v2_Validator
|
||||
), $rel, '<phprelease>');
|
||||
}
|
||||
}
|
||||
if (isset($this->_packageInfo['extsrcrelease'])) {
|
||||
$release = 'extsrcrelease';
|
||||
if (!isset($this->_packageInfo['providesextension'])) {
|
||||
$this->_mustProvideExtension($release);
|
||||
}
|
||||
if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) {
|
||||
$this->_cannotHaveSrcpackage($release);
|
||||
}
|
||||
$releases = $this->_packageInfo['extsrcrelease'];
|
||||
if (!is_array($releases)) {
|
||||
return true;
|
||||
}
|
||||
if (!isset($releases[0])) {
|
||||
$releases = array($releases);
|
||||
}
|
||||
foreach ($releases as $rel) {
|
||||
$this->_stupidSchemaValidate(array(
|
||||
'*installconditions',
|
||||
'*configureoption->name->prompt->?default',
|
||||
'*binarypackage',
|
||||
'*filelist',
|
||||
), $rel, '<extsrcrelease>');
|
||||
if (isset($rel['binarypackage'])) {
|
||||
if (!is_array($rel['binarypackage']) || !isset($rel['binarypackage'][0])) {
|
||||
$rel['binarypackage'] = array($rel['binarypackage']);
|
||||
}
|
||||
foreach ($rel['binarypackage'] as $bin) {
|
||||
if (!is_string($bin)) {
|
||||
$this->_binaryPackageMustBePackagename();
|
||||
foreach (array('', 'zend') as $prefix) {
|
||||
$releasetype = $prefix . 'extsrcrelease';
|
||||
if (isset($this->_packageInfo[$releasetype])) {
|
||||
$release = $releasetype;
|
||||
if (!isset($this->_packageInfo['providesextension'])) {
|
||||
$this->_mustProvideExtension($release);
|
||||
}
|
||||
if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) {
|
||||
$this->_cannotHaveSrcpackage($release);
|
||||
}
|
||||
$releases = $this->_packageInfo[$releasetype];
|
||||
if (!is_array($releases)) {
|
||||
return true;
|
||||
}
|
||||
if (!isset($releases[0])) {
|
||||
$releases = array($releases);
|
||||
}
|
||||
foreach ($releases as $rel) {
|
||||
$this->_stupidSchemaValidate(array(
|
||||
'*installconditions',
|
||||
'*configureoption->name->prompt->?default',
|
||||
'*binarypackage',
|
||||
'*filelist',
|
||||
), $rel, '<' . $releasetype . '>');
|
||||
if (isset($rel['binarypackage'])) {
|
||||
if (!is_array($rel['binarypackage']) || !isset($rel['binarypackage'][0])) {
|
||||
$rel['binarypackage'] = array($rel['binarypackage']);
|
||||
}
|
||||
foreach ($rel['binarypackage'] as $bin) {
|
||||
if (!is_string($bin)) {
|
||||
$this->_binaryPackageMustBePackagename();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($this->_packageInfo['extbinrelease'])) {
|
||||
$release = 'extbinrelease';
|
||||
if (!isset($this->_packageInfo['providesextension'])) {
|
||||
$this->_mustProvideExtension($release);
|
||||
}
|
||||
if (isset($this->_packageInfo['channel']) &&
|
||||
!isset($this->_packageInfo['srcpackage'])) {
|
||||
$this->_mustSrcPackage($release);
|
||||
}
|
||||
if (isset($this->_packageInfo['uri']) && !isset($this->_packageInfo['srcuri'])) {
|
||||
$this->_mustSrcuri($release);
|
||||
}
|
||||
$releases = $this->_packageInfo['extbinrelease'];
|
||||
if (!is_array($releases)) {
|
||||
return true;
|
||||
}
|
||||
if (!isset($releases[0])) {
|
||||
$releases = array($releases);
|
||||
}
|
||||
foreach ($releases as $rel) {
|
||||
$this->_stupidSchemaValidate(array(
|
||||
'*installconditions',
|
||||
'*filelist',
|
||||
), $rel, '<extbinrelease>');
|
||||
$releasetype = 'extbinrelease';
|
||||
if (isset($this->_packageInfo[$releasetype])) {
|
||||
$release = $releasetype;
|
||||
if (!isset($this->_packageInfo['providesextension'])) {
|
||||
$this->_mustProvideExtension($release);
|
||||
}
|
||||
if (isset($this->_packageInfo['channel']) &&
|
||||
!isset($this->_packageInfo['srcpackage'])) {
|
||||
$this->_mustSrcPackage($release);
|
||||
}
|
||||
if (isset($this->_packageInfo['uri']) && !isset($this->_packageInfo['srcuri'])) {
|
||||
$this->_mustSrcuri($release);
|
||||
}
|
||||
$releases = $this->_packageInfo[$releasetype];
|
||||
if (!is_array($releases)) {
|
||||
return true;
|
||||
}
|
||||
if (!isset($releases[0])) {
|
||||
$releases = array($releases);
|
||||
}
|
||||
foreach ($releases as $rel) {
|
||||
$this->_stupidSchemaValidate(array(
|
||||
'*installconditions',
|
||||
'*filelist',
|
||||
), $rel, '<' . $releasetype . '>');
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($this->_packageInfo['bundle'])) {
|
||||
@@ -1250,7 +1330,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
}
|
||||
if (is_array($rel) && array_key_exists('filelist', $rel)) {
|
||||
if ($rel['filelist']) {
|
||||
|
||||
|
||||
$this->_validateFilelist($rel['filelist'], true);
|
||||
}
|
||||
}
|
||||
@@ -1266,6 +1346,14 @@ class PEAR_PackageFile_v2_Validator
|
||||
return in_array($role, PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType()));
|
||||
}
|
||||
|
||||
function _pearVersionTooLow($version)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error',
|
||||
array('version' => $version),
|
||||
'This package.xml requires PEAR version %version% to parse properly, we are ' .
|
||||
'version 1.7.2');
|
||||
}
|
||||
|
||||
function _invalidTagOrder($oktags, $actual, $root)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error',
|
||||
@@ -1277,7 +1365,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('type' => $type),
|
||||
'<%type%> is not allowed inside global <contents>, only inside ' .
|
||||
'<phprelease>/<extbinrelease>, use <dir> and <file> only');
|
||||
'<phprelease>/<extbinrelease>/<zendextbinrelease>, use <dir> and <file> only');
|
||||
}
|
||||
|
||||
function _fileNotAllowed($type)
|
||||
@@ -1287,6 +1375,13 @@ class PEAR_PackageFile_v2_Validator
|
||||
'<contents>, use <ignore> and <install> only');
|
||||
}
|
||||
|
||||
function _oldStyleFileNotAllowed()
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array(),
|
||||
'Old-style <file>name</file> is not allowed. Use' .
|
||||
'<file name="name" role="role"/>');
|
||||
}
|
||||
|
||||
function _tagMissingAttribute($tag, $attr, $context)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag,
|
||||
@@ -1319,7 +1414,21 @@ class PEAR_PackageFile_v2_Validator
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array(
|
||||
'file' => $file),
|
||||
'File "%file%" cannot begin with "."');
|
||||
'File "%file%" in directory "%dir%" cannot begin with "./" or contain ".."');
|
||||
}
|
||||
|
||||
function _invalidFileInstallAs($file, $as)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array(
|
||||
'file' => $file, 'as' => $as),
|
||||
'File "%file%" <install as="%as%"/> cannot contain "./" or contain ".."');
|
||||
}
|
||||
|
||||
function _invalidDirName($dir)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array(
|
||||
'dir' => $file),
|
||||
'Directory "%dir%" cannot begin with "./" or contain ".."');
|
||||
}
|
||||
|
||||
function _filelistCannotContainFile($filelist)
|
||||
@@ -1481,7 +1590,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
function _cannotProvideExtension($release)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('release' => $release),
|
||||
'<%release%> packages cannot use <providesextension>, only extbinrelease and extsrcrelease can provide a PHP extension');
|
||||
'<%release%> packages cannot use <providesextension>, only extbinrelease, extsrcrelease, zendextsrcrelease, and zendextbinrelease can provide a PHP extension');
|
||||
}
|
||||
|
||||
function _mustProvideExtension($release)
|
||||
@@ -1499,13 +1608,13 @@ class PEAR_PackageFile_v2_Validator
|
||||
function _mustSrcPackage($release)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('release' => $release),
|
||||
'<extbinrelease> packages must specify a source code package with <srcpackage>');
|
||||
'<extbinrelease>/<zendextbinrelease> packages must specify a source code package with <srcpackage>');
|
||||
}
|
||||
|
||||
function _mustSrcuri($release)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('release' => $release),
|
||||
'<extbinrelease> packages must specify a source code package with <srcuri>');
|
||||
'<extbinrelease>/<zendextbinrelease> packages must specify a source code package with <srcuri>');
|
||||
}
|
||||
|
||||
function _uriDepsCannotHaveVersioning($type)
|
||||
@@ -1539,7 +1648,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array(),
|
||||
'<binarypackage> tags must contain the name of a package that is ' .
|
||||
'a compiled version of this extsrc package');
|
||||
'a compiled version of this extsrc/zendextsrc package');
|
||||
}
|
||||
|
||||
function _fileNotFound($file)
|
||||
@@ -1563,13 +1672,13 @@ class PEAR_PackageFile_v2_Validator
|
||||
function _usesroletaskMustHaveChannelOrUri($role, $tag)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('role' => $role, 'tag' => $tag),
|
||||
'<%tag%> must contain either <uri>, or <channel> and <package>');
|
||||
'<%tag%> for role "%role%" must contain either <uri>, or <channel> and <package>');
|
||||
}
|
||||
|
||||
function _usesroletaskMustHavePackage($role, $tag)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('role' => $role, 'tag' => $tag),
|
||||
'<%tag%> must contain <package>');
|
||||
'<%tag%> for role "%role%" must contain <package>');
|
||||
}
|
||||
|
||||
function _usesroletaskMustHaveRoleTask($tag, $type)
|
||||
@@ -1586,10 +1695,29 @@ class PEAR_PackageFile_v2_Validator
|
||||
|
||||
function _invalidDepGroupName($name)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('group' => $name),
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('name' => $name),
|
||||
'Invalid dependency group name "%name%"');
|
||||
}
|
||||
|
||||
function _multipleToplevelDirNotAllowed()
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array(),
|
||||
'Multiple top-level <dir> tags are not allowed. Enclose them ' .
|
||||
'in a <dir name="/">');
|
||||
}
|
||||
|
||||
function _multipleInstallAs($file)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('file' => $file),
|
||||
'Only one <install> tag is allowed for file "%file%"');
|
||||
}
|
||||
|
||||
function _ignoreAndInstallAs($file)
|
||||
{
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('file' => $file),
|
||||
'Cannot have both <ignore> and <install> tags for file "%file%"');
|
||||
}
|
||||
|
||||
function _analyzeBundledPackages()
|
||||
{
|
||||
if (!$this->_isValid) {
|
||||
@@ -1602,8 +1730,9 @@ class PEAR_PackageFile_v2_Validator
|
||||
return false;
|
||||
}
|
||||
$dir_prefix = dirname($this->_pf->_packageFile);
|
||||
$common = new PEAR_Common;
|
||||
$log = isset($this->_pf->_logger) ? array(&$this->_pf->_logger, 'log') :
|
||||
array('PEAR_Common', 'log');
|
||||
array($common, 'log');
|
||||
$info = $this->_pf->getContents();
|
||||
$info = $info['bundledpackage'];
|
||||
if (!is_array($info)) {
|
||||
@@ -1650,6 +1779,10 @@ class PEAR_PackageFile_v2_Validator
|
||||
$log = isset($this->_pf->_logger) ? array(&$this->_pf->_logger, 'log') :
|
||||
array(&$common, 'log');
|
||||
$info = $this->_pf->getContents();
|
||||
if (!$info || !isset($info['dir']['file'])) {
|
||||
$this->_tagCannotBeEmpty('contents><dir');
|
||||
return false;
|
||||
}
|
||||
$info = $info['dir']['file'];
|
||||
if (isset($info['attribs'])) {
|
||||
$info = array($info);
|
||||
@@ -1709,6 +1842,8 @@ class PEAR_PackageFile_v2_Validator
|
||||
function analyzeSourceCode($file, $string = false)
|
||||
{
|
||||
if (!function_exists("token_get_all")) {
|
||||
$this->_stack->push(__FUNCTION__, 'error', array('file' => $file),
|
||||
'Parser error: token_get_all() function must exist to analyze source code, PHP may have been compiled with --disable-tokenizer');
|
||||
return false;
|
||||
}
|
||||
if (!defined('T_DOC_COMMENT')) {
|
||||
@@ -1726,15 +1861,20 @@ class PEAR_PackageFile_v2_Validator
|
||||
if (!$fp = @fopen($file, "r")) {
|
||||
return false;
|
||||
}
|
||||
if (function_exists('file_get_contents')) {
|
||||
fclose($fp);
|
||||
$contents = file_get_contents($file);
|
||||
} else {
|
||||
$contents = @fread($fp, filesize($file));
|
||||
fclose($fp);
|
||||
}
|
||||
fclose($fp);
|
||||
$contents = file_get_contents($file);
|
||||
}
|
||||
|
||||
// Silence this function so we can catch PHP Warnings and show our own custom message
|
||||
$tokens = @token_get_all($contents);
|
||||
if (isset($php_errormsg)) {
|
||||
$pn = $this->_pf->getPackage();
|
||||
$this->_stack->push(__FUNCTION__, 'warning',
|
||||
array('file' => $file, 'package' => $pn),
|
||||
'in %file%: Could not process file for unkown reasons,' .
|
||||
' possibly a PHP parse error in %file% from %package%');
|
||||
|
||||
}
|
||||
$tokens = token_get_all($contents);
|
||||
/*
|
||||
for ($i = 0; $i < sizeof($tokens); $i++) {
|
||||
@list($token, $data) = $tokens[$i];
|
||||
@@ -1831,7 +1971,7 @@ class PEAR_PackageFile_v2_Validator
|
||||
if (version_compare(zend_version(), '2.0', '<')) {
|
||||
if (in_array(strtolower($data),
|
||||
array('public', 'private', 'protected', 'abstract',
|
||||
'interface', 'implements', 'throw')
|
||||
'interface', 'implements', 'throw')
|
||||
)) {
|
||||
$this->_stack->push(__FUNCTION__, 'warning', array(
|
||||
'file' => $file),
|
||||
|
@@ -13,9 +13,9 @@
|
||||
* @category pear
|
||||
* @package PEAR
|
||||
* @author Greg Beaver <cellog@php.net>
|
||||
* @copyright 1997-2005 The PHP Group
|
||||
* @copyright 1997-2008 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version CVS: $Id: rw.php,v 1.12 2005/09/27 03:34:02 cellog Exp $
|
||||
* @version CVS: $Id: rw.php,v 1.22 2008/01/18 22:47:49 cellog Exp $
|
||||
* @link http://pear.php.net/package/PEAR
|
||||
* @since File available since Release 1.4.0a8
|
||||
*/
|
||||
@@ -27,9 +27,9 @@ require_once 'PEAR/PackageFile/v2.php';
|
||||
* @category pear
|
||||
* @package PEAR
|
||||
* @author Greg Beaver <cellog@php.net>
|
||||
* @copyright 1997-2005 The PHP Group
|
||||
* @copyright 1997-2008 The PHP Group
|
||||
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
||||
* @version Release: 1.4.5
|
||||
* @version Release: 1.7.2
|
||||
* @link http://pear.php.net/package/PEAR
|
||||
* @since Class available since Release 1.4.0a8
|
||||
*/
|
||||
@@ -41,12 +41,14 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
*/
|
||||
function setProvidesExtension($extension)
|
||||
{
|
||||
if (in_array($this->getPackageType(), array('extsrc', 'extbin'))) {
|
||||
if (in_array($this->getPackageType(),
|
||||
array('extsrc', 'extbin', 'zendextsrc', 'zendextbin'))) {
|
||||
if (!isset($this->_packageInfo['providesextension'])) {
|
||||
// ensure that the channel tag is set up in the right location
|
||||
$this->_packageInfo = $this->_insertBefore($this->_packageInfo,
|
||||
array('usesrole', 'usestask', 'srcpackage', 'srcuri', 'phprelease',
|
||||
'extsrcrelease', 'extbinrelease', 'bundle', 'changelog'),
|
||||
'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
$extension, 'providesextension');
|
||||
}
|
||||
$this->_packageInfo['providesextension'] = $extension;
|
||||
@@ -77,6 +79,29 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo['name'] = $package;
|
||||
}
|
||||
|
||||
/**
|
||||
* set this as a package.xml version 2.1
|
||||
* @access private
|
||||
*/
|
||||
function _setPackageVersion2_1()
|
||||
{
|
||||
$info = array(
|
||||
'version' => '2.1',
|
||||
'xmlns' => 'http://pear.php.net/dtd/package-2.1',
|
||||
'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0',
|
||||
'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
|
||||
'xsi:schemaLocation' => 'http://pear.php.net/dtd/tasks-1.0
|
||||
http://pear.php.net/dtd/tasks-1.0.xsd
|
||||
http://pear.php.net/dtd/package-2.1
|
||||
http://pear.php.net/dtd/package-2.1.xsd',
|
||||
);
|
||||
if (!isset($this->_packageInfo['attribs'])) {
|
||||
$this->_packageInfo = array_merge(array('attribs' => $info), $this->_packageInfo);
|
||||
} else {
|
||||
$this->_packageInfo['attribs'] = $info;
|
||||
}
|
||||
}
|
||||
|
||||
function setUri($uri)
|
||||
{
|
||||
unset($this->_packageInfo['channel']);
|
||||
@@ -88,7 +113,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
'developer', 'contributor', 'helper', 'date', 'time', 'version',
|
||||
'stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), $uri, 'uri');
|
||||
}
|
||||
$this->_packageInfo['uri'] = $uri;
|
||||
@@ -105,7 +130,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
'developer', 'contributor', 'helper', 'date', 'time', 'version',
|
||||
'stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), $channel, 'channel');
|
||||
}
|
||||
$this->_packageInfo['channel'] = $channel;
|
||||
@@ -121,7 +146,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
'developer', 'contributor', 'helper', 'date', 'time', 'version',
|
||||
'stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), $extends, 'extends');
|
||||
}
|
||||
$this->_packageInfo['extends'] = $extends;
|
||||
@@ -137,7 +162,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
'developer', 'contributor', 'helper', 'date', 'time', 'version',
|
||||
'stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), $summary, 'summary');
|
||||
}
|
||||
$this->_packageInfo['summary'] = $summary;
|
||||
@@ -153,7 +178,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
'developer', 'contributor', 'helper', 'date', 'time', 'version',
|
||||
'stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), $desc, 'description');
|
||||
}
|
||||
$this->_packageInfo['description'] = $desc;
|
||||
@@ -185,7 +210,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
'stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease',
|
||||
'extbinrelease', 'bundle', 'changelog');
|
||||
'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog');
|
||||
foreach (array('lead', 'developer', 'contributor', 'helper') as $testrole) {
|
||||
array_shift($testarr);
|
||||
if ($role == $testrole) {
|
||||
@@ -240,7 +265,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo[$role] = array_values($this->_packageInfo[$role]);
|
||||
}
|
||||
}
|
||||
$this->addMaintainer($newrole, $handle, $name, $email);
|
||||
$this->addMaintainer($newrole, $handle, $name, $email, $active);
|
||||
$this->_isValid = 0;
|
||||
}
|
||||
|
||||
@@ -292,7 +317,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $version, array(
|
||||
'version' => array('stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'),
|
||||
'release' => array('api')));
|
||||
$this->_isValid = 0;
|
||||
@@ -307,7 +332,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $version, array(
|
||||
'version' => array('stability', 'license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'),
|
||||
'api' => array()));
|
||||
$this->_isValid = 0;
|
||||
@@ -325,7 +350,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $state, array(
|
||||
'stability' => array('license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'),
|
||||
'release' => array('api')));
|
||||
$this->_isValid = 0;
|
||||
@@ -343,7 +368,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $state, array(
|
||||
'stability' => array('license', 'notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'),
|
||||
'api' => array()));
|
||||
$this->_isValid = 0;
|
||||
@@ -356,7 +381,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_insertBefore($this->_packageInfo,
|
||||
array('notes', 'contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), 0, 'license');
|
||||
}
|
||||
if ($uri || $filesource) {
|
||||
@@ -382,7 +407,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_insertBefore($this->_packageInfo,
|
||||
array('contents', 'compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease',
|
||||
'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), $notes, 'notes');
|
||||
}
|
||||
$this->_packageInfo['notes'] = $notes;
|
||||
@@ -429,7 +454,8 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array('compatible',
|
||||
'dependencies', 'providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), array(), 'contents');
|
||||
'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'bundle', 'changelog'), array(), 'contents');
|
||||
}
|
||||
if ($this->getPackageType() != 'bundle') {
|
||||
$this->_packageInfo['contents'] =
|
||||
@@ -437,6 +463,8 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
if ($baseinstall) {
|
||||
$this->_packageInfo['contents']['dir']['attribs']['baseinstalldir'] = $baseinstall;
|
||||
}
|
||||
} else {
|
||||
$this->_packageInfo['contents'] = array('bundledpackage' => array());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -453,7 +481,8 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $path, array(
|
||||
'contents' => array('compatible', 'dependencies', 'providesextension',
|
||||
'usesrole', 'usestask', 'srcpackage', 'srcuri', 'phprelease',
|
||||
'extsrcrelease', 'extbinrelease', 'bundle', 'changelog'),
|
||||
'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'bundledpackage' => array()));
|
||||
}
|
||||
|
||||
@@ -546,7 +575,8 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_insertBefore($this->_packageInfo,
|
||||
array('compatible', 'dependencies', 'providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease',
|
||||
'extbinrelease', 'bundle', 'changelog'), array(), 'contents');
|
||||
'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'bundle', 'changelog'), array(), 'contents');
|
||||
}
|
||||
if (isset($this->_packageInfo['contents']['dir']['file'])) {
|
||||
if (!isset($this->_packageInfo['contents']['dir']['file'][0])) {
|
||||
@@ -584,7 +614,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array(
|
||||
'compatible' => array('dependencies', 'providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog')
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog')
|
||||
));
|
||||
}
|
||||
|
||||
@@ -614,7 +644,8 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_isValid = 0;
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array(
|
||||
'usesrole' => array('usestask', 'srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease', 'extbinrelease', 'bundle', 'changelog')
|
||||
'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog')
|
||||
));
|
||||
}
|
||||
|
||||
@@ -645,7 +676,8 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$this->_isValid = 0;
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array(
|
||||
'usestask' => array('srcpackage', 'srcuri',
|
||||
'phprelease', 'extsrcrelease', 'extbinrelease', 'bundle', 'changelog')
|
||||
'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog')
|
||||
));
|
||||
}
|
||||
|
||||
@@ -667,7 +699,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog')));
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog')));
|
||||
}
|
||||
$this->_packageInfo['dependencies'] = array();
|
||||
}
|
||||
@@ -703,7 +735,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
'required' => array('optional', 'group'),
|
||||
'php' => array('pearinstaller', 'package', 'subpackage', 'extension', 'os', 'arch')
|
||||
));
|
||||
@@ -745,7 +777,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
'required' => array('optional', 'group'),
|
||||
'pearinstaller' => array('package', 'subpackage', 'extension', 'os', 'arch')
|
||||
));
|
||||
@@ -756,24 +788,21 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
* @param string package name
|
||||
* @param string package channel
|
||||
* @param string extension this package provides, if any
|
||||
* @param string|false minimum version required
|
||||
* @param string|false maximum version allowed
|
||||
* @param array|false versions to exclude from installation
|
||||
*/
|
||||
function addConflictingPackageDepWithChannel($name, $channel, $providesextension = false)
|
||||
function addConflictingPackageDepWithChannel($name, $channel,
|
||||
$providesextension = false, $min = false, $max = false, $exclude = false)
|
||||
{
|
||||
$this->_isValid = 0;
|
||||
$dep =
|
||||
array(
|
||||
'name' => $name,
|
||||
'channel' => $channel,
|
||||
'conflicts' => '',
|
||||
);
|
||||
if ($providesextension) {
|
||||
$dep['providesextension'] = $providesextension;
|
||||
}
|
||||
$dep = $this->_constructDep($name, $channel, false, $min, $max, false,
|
||||
$exclude, $providesextension, false, true);
|
||||
$this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
'required' => array('optional', 'group'),
|
||||
'package' => array('subpackage', 'extension', 'os', 'arch')
|
||||
));
|
||||
@@ -801,7 +830,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
'required' => array('optional', 'group'),
|
||||
'package' => array('subpackage', 'extension', 'os', 'arch')
|
||||
));
|
||||
@@ -815,7 +844,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
'group' => array(),
|
||||
));
|
||||
}
|
||||
@@ -831,11 +860,13 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
* @param string extension this package provides, if any
|
||||
* @param bool if true, tells the installer to ignore the default optional dependency group
|
||||
* when installing this package
|
||||
* @param bool if true, tells the installer to negate this dependency (conflicts)
|
||||
* @return array
|
||||
* @access private
|
||||
*/
|
||||
function _constructDep($name, $channel, $uri, $min, $max, $recommended, $exclude,
|
||||
$providesextension = false, $nodefault = false)
|
||||
$providesextension = false, $nodefault = false,
|
||||
$conflicts = false)
|
||||
{
|
||||
$dep =
|
||||
array(
|
||||
@@ -861,6 +892,9 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
}
|
||||
$dep['exclude'] = $exclude;
|
||||
}
|
||||
if ($conflicts) {
|
||||
$dep['conflicts'] = '';
|
||||
}
|
||||
if ($nodefault) {
|
||||
$dep['nodefault'] = '';
|
||||
}
|
||||
@@ -1000,6 +1034,9 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
$recommended = false, $exclude = false,
|
||||
$providesextension = false, $nodefault = false)
|
||||
{
|
||||
if (!in_array($type, array('optional', 'required'), true)) {
|
||||
$type = 'required';
|
||||
}
|
||||
$this->_isValid = 0;
|
||||
$arr = array('optional', 'group');
|
||||
if ($type != 'required') {
|
||||
@@ -1011,7 +1048,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
$type => $arr,
|
||||
'package' => array('subpackage', 'extension', 'os', 'arch')
|
||||
));
|
||||
@@ -1039,7 +1076,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
$type => $arr,
|
||||
'package' => array('subpackage', 'extension', 'os', 'arch')
|
||||
));
|
||||
@@ -1071,7 +1108,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
$type => $arr,
|
||||
'subpackage' => array('extension', 'os', 'arch')
|
||||
));
|
||||
@@ -1096,7 +1133,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
$type => $arr,
|
||||
'subpackage' => array('extension', 'os', 'arch')
|
||||
));
|
||||
@@ -1123,7 +1160,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
$type => $arr,
|
||||
'extension' => array('os', 'arch')
|
||||
));
|
||||
@@ -1144,7 +1181,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
'required' => array('optional', 'group'),
|
||||
'os' => array('arch')
|
||||
));
|
||||
@@ -1165,7 +1202,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
array(
|
||||
'dependencies' => array('providesextension', 'usesrole', 'usestask',
|
||||
'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),
|
||||
'required' => array('optional', 'group'),
|
||||
'arch' => array()
|
||||
));
|
||||
@@ -1177,20 +1214,27 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
* - a php package is a PEAR-style package
|
||||
* - an extbin package is a PECL-style extension binary
|
||||
* - an extsrc package is a PECL-style source for a binary
|
||||
* - an zendextbin package is a PECL-style zend extension binary
|
||||
* - an zendextsrc package is a PECL-style source for a zend extension binary
|
||||
* - a bundle package is a collection of other pre-packaged packages
|
||||
* @param php|extbin|extsrc|bundle
|
||||
* @param php|extbin|extsrc|zendextsrc|zendextbin|bundle
|
||||
* @return bool success
|
||||
*/
|
||||
function setPackageType($type)
|
||||
{
|
||||
$this->_isValid = 0;
|
||||
if (!in_array($type, array('php', 'extbin', 'extsrc', 'bundle'))) {
|
||||
if (!in_array($type, array('php', 'extbin', 'extsrc', 'zendextsrc',
|
||||
'zendextbin', 'bundle'))) {
|
||||
return false;
|
||||
}
|
||||
if (in_array($type, array('zendextsrc', 'zendextbin'))) {
|
||||
$this->_setPackageVersion2_1();
|
||||
}
|
||||
if ($type != 'bundle') {
|
||||
$type .= 'release';
|
||||
}
|
||||
foreach (array('phprelease', 'extbinrelease', 'extsrcrelease', 'bundle') as $test) {
|
||||
foreach (array('phprelease', 'extbinrelease', 'extsrcrelease',
|
||||
'zendextsrcrelease', 'zendextbinrelease', 'bundle') as $test) {
|
||||
unset($this->_packageInfo[$test]);
|
||||
}
|
||||
if (!isset($this->_packageInfo[$type])) {
|
||||
@@ -1227,7 +1271,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
{
|
||||
if ($p = $this->getPackageType()) {
|
||||
if ($strict) {
|
||||
if ($p == 'extsrc') {
|
||||
if ($p == 'extsrc' || $p == 'zendextsrc') {
|
||||
$a = null;
|
||||
return $a;
|
||||
}
|
||||
@@ -1292,7 +1336,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
*/
|
||||
function addBinarypackage($package)
|
||||
{
|
||||
if ($this->getPackageType() != 'extsrc') {
|
||||
if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') {
|
||||
return false;
|
||||
}
|
||||
$r = &$this->_getCurrentRelease(false);
|
||||
@@ -1314,7 +1358,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
*/
|
||||
function addConfigureOption($name, $prompt, $default = null)
|
||||
{
|
||||
if ($this->getPackageType() != 'extsrc') {
|
||||
if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') {
|
||||
return false;
|
||||
}
|
||||
$r = &$this->_getCurrentRelease(false);
|
||||
@@ -1323,7 +1367,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
}
|
||||
$opt = array('attribs' => array('name' => $name, 'prompt' => $prompt));
|
||||
if ($default !== null) {
|
||||
$opt['default'] = $default;
|
||||
$opt['attribs']['default'] = $default;
|
||||
}
|
||||
$this->_isValid = 0;
|
||||
$r = $this->_mergeTag($r, $opt,
|
||||
@@ -1355,7 +1399,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
}
|
||||
$dep['exclude'] = $exclude;
|
||||
}
|
||||
if ($this->getPackageType() == 'extsrc') {
|
||||
if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') {
|
||||
$r = $this->_mergeTag($r, $dep,
|
||||
array(
|
||||
'installconditions' => array('configureoption', 'binarypackage',
|
||||
@@ -1388,7 +1432,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
}
|
||||
$this->_isValid = 0;
|
||||
$dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude);
|
||||
if ($this->getPackageType() == 'extsrc') {
|
||||
if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') {
|
||||
$r = $this->_mergeTag($r, $dep,
|
||||
array(
|
||||
'installconditions' => array('configureoption', 'binarypackage',
|
||||
@@ -1423,7 +1467,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
if ($conflicts) {
|
||||
$dep['conflicts'] = '';
|
||||
}
|
||||
if ($this->getPackageType() == 'extsrc') {
|
||||
if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') {
|
||||
$r = $this->_mergeTag($r, $dep,
|
||||
array(
|
||||
'installconditions' => array('configureoption', 'binarypackage',
|
||||
@@ -1458,7 +1502,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
if ($conflicts) {
|
||||
$dep['conflicts'] = '';
|
||||
}
|
||||
if ($this->getPackageType() == 'extsrc') {
|
||||
if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') {
|
||||
$r = $this->_mergeTag($r, $dep,
|
||||
array(
|
||||
'installconditions' => array('configureoption', 'binarypackage',
|
||||
@@ -1476,20 +1520,22 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
|
||||
/**
|
||||
* For extension binary releases, this is used to specify either the
|
||||
* static URI to a source package, or the package name and channel of the extsrc
|
||||
* static URI to a source package, or the package name and channel of the extsrc/zendextsrc
|
||||
* package it is based on.
|
||||
* @param string Package name, or full URI to source package (extsrc type)
|
||||
* @param string Package name, or full URI to source package (extsrc/zendextsrc type)
|
||||
*/
|
||||
function setSourcePackage($packageOrUri)
|
||||
{
|
||||
$this->_isValid = 0;
|
||||
if (isset($this->_packageInfo['channel'])) {
|
||||
$this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('phprelease',
|
||||
'extsrcrelease', 'extbinrelease', 'bundle', 'changelog'),
|
||||
'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'bundle', 'changelog'),
|
||||
$packageOrUri, 'srcpackage');
|
||||
} else {
|
||||
$this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('phprelease',
|
||||
'extsrcrelease', 'extbinrelease', 'bundle', 'changelog'), $packageOrUri, 'srcuri');
|
||||
'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease',
|
||||
'bundle', 'changelog'), $packageOrUri, 'srcuri');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1508,7 +1554,7 @@ class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2
|
||||
'stability' =>
|
||||
$this->getStability(),
|
||||
'date' => $this->getDate(),
|
||||
'license' => $this->getLicense(),
|
||||
'license' => $this->getLicense(true),
|
||||
'notes' => $notes ? $notes : $this->getNotes()
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user