18require_once
'PEAR/PackageFile/v2.php';
38 array(
'extsrc',
'extbin',
'zendextsrc',
'zendextbin'))) {
39 if (!isset($this->_packageInfo[
'providesextension'])) {
41 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
42 array(
'usesrole',
'usestask',
'srcpackage',
'srcuri',
'phprelease',
43 'extsrcrelease',
'extbinrelease',
'zendextsrcrelease',
'zendextbinrelease',
44 'bundle',
'changelog'),
45 $extension,
'providesextension');
47 $this->_packageInfo[
'providesextension'] = $extension;
56 if (!isset($this->_packageInfo[
'attribs'])) {
57 $this->_packageInfo = array_merge(array(
'attribs' => array(
59 'xmlns' =>
'http://pear.php.net/dtd/package-2.0',
60 'xmlns:tasks' =>
'http://pear.php.net/dtd/tasks-1.0',
61 'xmlns:xsi' =>
'http://www.w3.org/2001/XMLSchema-instance',
62 'xsi:schemaLocation' =>
'http://pear.php.net/dtd/tasks-1.0
63 http://pear.php.net/dtd/tasks-1.0.xsd
64 http://pear.php.net/dtd/package-2.0
65 http://pear.php.net/dtd/package-2.0.xsd',
66 )), $this->_packageInfo);
68 if (!isset($this->_packageInfo[
'name'])) {
69 return $this->_packageInfo = array_merge(array(
'name' => $package),
72 $this->_packageInfo[
'name'] = $package;
83 'xmlns' =>
'http://pear.php.net/dtd/package-2.1',
84 'xmlns:tasks' =>
'http://pear.php.net/dtd/tasks-1.0',
85 'xmlns:xsi' =>
'http://www.w3.org/2001/XMLSchema-instance',
86 'xsi:schemaLocation' =>
'http://pear.php.net/dtd/tasks-1.0
87 http://pear.php.net/dtd/tasks-1.0.xsd
88 http://pear.php.net/dtd/package-2.1
89 http://pear.php.net/dtd/package-2.1.xsd',
91 if (!isset($this->_packageInfo[
'attribs'])) {
92 $this->_packageInfo = array_merge(array(
'attribs' => $info), $this->_packageInfo);
94 $this->_packageInfo[
'attribs'] = $info;
100 unset($this->_packageInfo[
'channel']);
102 if (!isset($this->_packageInfo[
'uri'])) {
104 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
105 array(
'extends',
'summary',
'description',
'lead',
106 'developer',
'contributor',
'helper',
'date',
'time',
'version',
107 'stability',
'license',
'notes',
'contents',
'compatible',
108 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
109 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
110 'extbinrelease',
'bundle',
'changelog'), $uri,
'uri');
112 $this->_packageInfo[
'uri'] = $uri;
117 unset($this->_packageInfo[
'uri']);
119 if (!isset($this->_packageInfo[
'channel'])) {
121 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
122 array(
'extends',
'summary',
'description',
'lead',
123 'developer',
'contributor',
'helper',
'date',
'time',
'version',
124 'stability',
'license',
'notes',
'contents',
'compatible',
125 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
126 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
127 'extbinrelease',
'bundle',
'changelog'), $channel,
'channel');
129 $this->_packageInfo[
'channel'] = $channel;
135 if (!isset($this->_packageInfo[
'extends'])) {
137 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
138 array(
'summary',
'description',
'lead',
139 'developer',
'contributor',
'helper',
'date',
'time',
'version',
140 'stability',
'license',
'notes',
'contents',
'compatible',
141 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
142 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
143 'extbinrelease',
'bundle',
'changelog'), $extends,
'extends');
145 $this->_packageInfo[
'extends'] = $extends;
151 if (!isset($this->_packageInfo[
'summary'])) {
153 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
154 array(
'description',
'lead',
155 'developer',
'contributor',
'helper',
'date',
'time',
'version',
156 'stability',
'license',
'notes',
'contents',
'compatible',
157 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
158 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
159 'extbinrelease',
'bundle',
'changelog'), $summary,
'summary');
161 $this->_packageInfo[
'summary'] = $summary;
167 if (!isset($this->_packageInfo[
'description'])) {
169 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
171 'developer',
'contributor',
'helper',
'date',
'time',
'version',
172 'stability',
'license',
'notes',
'contents',
'compatible',
173 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
174 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
175 'extbinrelease',
'bundle',
'changelog'), $desc,
'description');
177 $this->_packageInfo[
'description'] = $desc;
186 if (!in_array($role, array(
'lead',
'developer',
'contributor',
'helper'))) {
189 if (isset($this->_packageInfo[$role])) {
190 if (!isset($this->_packageInfo[$role][0])) {
191 $this->_packageInfo[$role] = array($this->_packageInfo[$role]);
193 $this->_packageInfo[$role][] =
201 $testarr = array(
'lead',
202 'developer',
'contributor',
'helper',
'date',
'time',
'version',
203 'stability',
'license',
'notes',
'contents',
'compatible',
204 'dependencies',
'providesextension',
'usesrole',
'usestask',
205 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
206 'extbinrelease',
'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog');
207 foreach (array(
'lead',
'developer',
'contributor',
'helper') as $testrole) {
208 array_shift($testarr);
209 if ($role == $testrole) {
213 if (!isset($this->_packageInfo[$role])) {
215 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo, $testarr,
218 $this->_packageInfo[$role] =
232 foreach (array(
'lead',
'developer',
'contributor',
'helper') as $role) {
233 if (!isset($this->_packageInfo[$role])) {
236 $info = $this->_packageInfo[$role];
237 if (!isset($info[0])) {
238 if ($info[
'user'] == $handle) {
243 foreach ($info as $i => $maintainer) {
244 if (is_array($maintainer) && $maintainer[
'user'] == $handle) {
250 if ($found ===
false) {
251 return $this->
addMaintainer($newrole, $handle, $name, $email, $active);
253 if ($found !==
false) {
254 if ($found ===
true) {
255 unset($this->_packageInfo[$role]);
257 unset($this->_packageInfo[$role][$found]);
258 $this->_packageInfo[$role] = array_values($this->_packageInfo[$role]);
261 $this->
addMaintainer($newrole, $handle, $name, $email, $active);
268 foreach (array(
'lead',
'developer',
'contributor',
'helper') as $role) {
269 if (!isset($this->_packageInfo[$role])) {
272 if (!isset($this->_packageInfo[$role][0])) {
273 $this->_packageInfo[$role] = array($this->_packageInfo[$role]);
275 foreach ($this->_packageInfo[$role] as $i => $maintainer) {
276 if ($maintainer[
'user'] == $handle) {
281 if ($found !==
false) {
282 unset($this->_packageInfo[$role][$found]);
283 if (!count($this->_packageInfo[$role]) && $role ==
'lead') {
286 if (!count($this->_packageInfo[$role])) {
287 unset($this->_packageInfo[$role]);
290 $this->_packageInfo[$role] =
291 array_values($this->_packageInfo[$role]);
292 if (count($this->_packageInfo[$role]) == 1) {
293 $this->_packageInfo[$role] = $this->_packageInfo[$role][0];
297 if (count($this->_packageInfo[$role]) == 1) {
298 $this->_packageInfo[$role] = $this->_packageInfo[$role][0];
306 if (isset($this->_packageInfo[
'version']) &&
307 isset($this->_packageInfo[
'version'][
'release'])) {
308 unset($this->_packageInfo[
'version'][
'release']);
310 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $version, array(
311 'version' => array(
'stability',
'license',
'notes',
'contents',
'compatible',
312 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
313 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
314 'extbinrelease',
'bundle',
'changelog'),
315 'release' => array(
'api')));
321 if (isset($this->_packageInfo[
'version']) &&
322 isset($this->_packageInfo[
'version'][
'api'])) {
323 unset($this->_packageInfo[
'version'][
'api']);
325 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $version, array(
326 'version' => array(
'stability',
'license',
'notes',
'contents',
'compatible',
327 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
328 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
329 'extbinrelease',
'bundle',
'changelog'),
339 if (isset($this->_packageInfo[
'stability']) &&
340 isset($this->_packageInfo[
'stability'][
'release'])) {
341 unset($this->_packageInfo[
'stability'][
'release']);
343 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $state, array(
344 'stability' => array(
'license',
'notes',
'contents',
'compatible',
345 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
346 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
347 'extbinrelease',
'bundle',
'changelog'),
348 'release' => array(
'api')));
357 if (isset($this->_packageInfo[
'stability']) &&
358 isset($this->_packageInfo[
'stability'][
'api'])) {
359 unset($this->_packageInfo[
'stability'][
'api']);
361 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $state, array(
362 'stability' => array(
'license',
'notes',
'contents',
'compatible',
363 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
364 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
365 'extbinrelease',
'bundle',
'changelog'),
370 function setLicense($license, $uri =
false, $filesource =
false)
372 if (!isset($this->_packageInfo[
'license'])) {
374 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
375 array(
'notes',
'contents',
'compatible',
376 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
377 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
378 'extbinrelease',
'bundle',
'changelog'), 0,
'license');
380 if ($uri || $filesource) {
383 $attribs[
'uri'] = $uri;
387 $attribs[
'filesource'] = $filesource;
390 $license = $uri ? array(
'attribs' => $attribs,
'_content' => $license) : $license;
391 $this->_packageInfo[
'license'] = $license;
398 if (!isset($this->_packageInfo[
'notes'])) {
400 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
401 array(
'contents',
'compatible',
402 'dependencies',
'providesextension',
'usesrole',
'usestask',
'srcpackage',
'srcuri',
403 'phprelease',
'extsrcrelease',
'zendextsrcrelease',
'zendextbinrelease',
404 'extbinrelease',
'bundle',
'changelog'), $notes,
'notes');
406 $this->_packageInfo[
'notes'] = $notes;
418 return $this->_packageInfo[
'filelist'][$file][
'installed_as'] = $path;
420 unset($this->_packageInfo[
'filelist'][$file][
'installed_as']);
429 if (isset($this->_packageInfo[
'filelist'][$file])) {
430 $this->_packageInfo[
'filelist'][$file] =
431 array_merge($this->_packageInfo[
'filelist'][$file], $atts[
'attribs']);
433 $this->_packageInfo[
'filelist'][$file] = $atts[
'attribs'];
443 $this->_filesValid =
false;
445 if (!isset($this->_packageInfo[
'contents'])) {
446 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
448 'dependencies',
'providesextension',
'usesrole',
'usestask',
449 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
450 'extbinrelease',
'zendextsrcrelease',
'zendextbinrelease',
451 'bundle',
'changelog'), array(),
'contents');
454 $this->_packageInfo[
'contents'] =
455 array(
'dir' => array(
'attribs' => array(
'name' =>
'/')));
457 $this->_packageInfo[
'contents'][
'dir'][
'attribs'][
'baseinstalldir'] = $baseinstall;
460 $this->_packageInfo[
'contents'] = array(
'bundledpackage' => array());
472 $this->_filesValid =
false;
474 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $path, array(
475 'contents' => array(
'compatible',
'dependencies',
'providesextension',
476 'usesrole',
'usestask',
'srcpackage',
'srcuri',
'phprelease',
477 'extsrcrelease',
'extbinrelease',
'zendextsrcrelease',
'zendextbinrelease',
478 'bundle',
'changelog'),
479 'bundledpackage' => array()));
488 if (!method_exists($task,
'getXml')) {
491 if (!method_exists($task,
'getName')) {
494 if (!method_exists($task,
'validate')) {
497 if (!$task->validate()) {
500 if (!isset($this->_packageInfo[
'contents'][
'dir'][
'file'])) {
504 $files = $this->_packageInfo[
'contents'][
'dir'][
'file'];
505 if (!isset($files[0])) {
506 $files = array($files);
511 foreach ($files as $i => $file) {
512 if (isset($file[
'attribs'])) {
513 if ($file[
'attribs'][
'name'] == $filename) {
515 $t = isset($this->_packageInfo[
'contents'][
'dir'][
'file'][$i]
516 [
'attribs'][$this->_tasksNs .
517 ':' . $task->getName()]) ?
518 $this->_packageInfo[
'contents'][
'dir'][
'file'][$i]
519 [
'attribs'][$this->_tasksNs .
520 ':' . $task->getName()] :
false;
521 if ($t && !isset($t[0])) {
522 $this->_packageInfo[
'contents'][
'dir'][
'file'][$i]
523 [$this->_tasksNs .
':' . $task->getName()] = array($t);
525 $this->_packageInfo[
'contents'][
'dir'][
'file'][$i][$this->_tasksNs .
526 ':' . $task->getName()][] = $task->getXml();
528 $t = isset($this->_packageInfo[
'contents'][
'dir'][
'file']
529 [
'attribs'][$this->_tasksNs .
530 ':' . $task->getName()]) ? $this->_packageInfo[
'contents'][
'dir'][
'file']
531 [
'attribs'][$this->_tasksNs .
532 ':' . $task->getName()] :
false;
533 if ($t && !isset($t[0])) {
534 $this->_packageInfo[
'contents'][
'dir'][
'file']
535 [$this->_tasksNs .
':' . $task->getName()] = array($t);
537 $this->_packageInfo[
'contents'][
'dir'][
'file'][$this->_tasksNs .
538 ':' . $task->getName()][] = $task->getXml();
557 $this->_filesValid =
false;
559 $dir = preg_replace(array(
'!\\\\+!',
'!/+!'), array(
'/',
'/'), $dir);
560 if ($dir ==
'/' || $dir ==
'') {
565 $attrs[
'name'] = $dir . $file;
566 if (!isset($this->_packageInfo[
'contents'])) {
568 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo,
569 array(
'compatible',
'dependencies',
'providesextension',
'usesrole',
'usestask',
570 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
571 'extbinrelease',
'zendextsrcrelease',
'zendextbinrelease',
572 'bundle',
'changelog'), array(),
'contents');
574 if (isset($this->_packageInfo[
'contents'][
'dir'][
'file'])) {
575 if (!isset($this->_packageInfo[
'contents'][
'dir'][
'file'][0])) {
576 $this->_packageInfo[
'contents'][
'dir'][
'file'] =
577 array($this->_packageInfo[
'contents'][
'dir'][
'file']);
579 $this->_packageInfo[
'contents'][
'dir'][
'file'][][
'attribs'] = $attrs;
581 $this->_packageInfo[
'contents'][
'dir'][
'file'][
'attribs'] = $attrs;
599 'channel' => $channel,
604 $set[
'exclude'] = $exclude;
607 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $set, array(
608 'compatible' => array(
'dependencies',
'providesextension',
'usesrole',
'usestask',
609 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
610 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog')
619 if (isset($this->_packageInfo[
'usesrole'])) {
620 unset($this->_packageInfo[
'usesrole']);
630 $set = array(
'role' => $role);
632 $set[
'package'] = $packageOrUri;
633 $set[
'channel'] = $channel;
635 $set[
'uri'] = $packageOrUri;
638 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $set, array(
639 'usesrole' => array(
'usestask',
'srcpackage',
'srcuri',
640 'phprelease',
'extsrcrelease',
'extbinrelease',
641 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog')
650 if (isset($this->_packageInfo[
'usestask'])) {
651 unset($this->_packageInfo[
'usestask']);
662 $set = array(
'task' => $task);
664 $set[
'package'] = $packageOrUri;
665 $set[
'channel'] = $channel;
667 $set[
'uri'] = $packageOrUri;
670 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $set, array(
671 'usestask' => array(
'srcpackage',
'srcuri',
672 'phprelease',
'extsrcrelease',
'extbinrelease',
673 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog')
682 unset($this->_packageInfo[
'compatible']);
690 if (!isset($this->_packageInfo[
'dependencies'])) {
691 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, array(),
693 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
694 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
695 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog')));
697 $this->_packageInfo[
'dependencies'] = array();
705 function setPhpDep($min, $max =
false, $exclude =
false)
716 if (count($exclude) == 1) {
717 $exclude = $exclude[0];
719 $dep[
'exclude'] = $exclude;
721 if (isset($this->_packageInfo[
'dependencies'][
'required'][
'php'])) {
722 $this->_stack->push(__FUNCTION__,
'warning', array(
'dep' =>
723 $this->_packageInfo[
'dependencies'][
'required'][
'php']),
724 'warning: PHP dependency already exists, overwriting');
725 unset($this->_packageInfo[
'dependencies'][
'required'][
'php']);
727 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
729 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
730 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
731 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
732 'required' => array(
'optional',
'group'),
733 'php' => array(
'pearinstaller',
'package',
'subpackage',
'extension',
'os',
'arch')
755 $dep[
'recommended'] = $recommended;
758 if (count($exclude) == 1) {
759 $exclude = $exclude[0];
761 $dep[
'exclude'] = $exclude;
763 if (isset($this->_packageInfo[
'dependencies'][
'required'][
'pearinstaller'])) {
764 $this->_stack->push(__FUNCTION__,
'warning', array(
'dep' =>
765 $this->_packageInfo[
'dependencies'][
'required'][
'pearinstaller']),
766 'warning: PEAR Installer dependency already exists, overwriting');
767 unset($this->_packageInfo[
'dependencies'][
'required'][
'pearinstaller']);
769 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
771 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
772 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
773 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
774 'required' => array(
'optional',
'group'),
775 'pearinstaller' => array(
'package',
'subpackage',
'extension',
'os',
'arch')
789 $providesextension =
false, $min =
false, $max =
false, $exclude =
false)
792 $dep = $this->
_constructDep($name, $channel,
false, $min, $max,
false,
793 $exclude, $providesextension,
false,
true);
794 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
796 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
797 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
798 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
799 'required' => array(
'optional',
'group'),
800 'package' => array(
'subpackage',
'extension',
'os',
'arch')
819 if ($providesextension) {
820 $dep[
'providesextension'] = $providesextension;
822 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
824 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
825 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
826 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
827 'required' => array(
'optional',
'group'),
828 'package' => array(
'subpackage',
'extension',
'os',
'arch')
835 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo,
836 array(
'attribs' => array(
'name' => $name,
'hint' => $hint)),
838 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
839 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
840 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
860 function _constructDep($name, $channel, $uri, $min, $max, $recommended, $exclude,
861 $providesextension =
false, $nodefault =
false,
869 $dep[
'channel'] = $channel;
880 $dep[
'recommended'] = $recommended;
883 if (is_array($exclude) && count($exclude) == 1) {
884 $exclude = $exclude[0];
886 $dep[
'exclude'] = $exclude;
889 $dep[
'conflicts'] =
'';
892 $dep[
'nodefault'] =
'';
894 if ($providesextension) {
895 $dep[
'providesextension'] = $providesextension;
917 $max =
false, $recommended =
false, $exclude =
false,
918 $providesextension =
false, $nodefault =
false)
920 if ($type ==
'subpackage' && $providesextension) {
923 $dep = $this->
_constructDep($name, $channel,
false, $min, $max, $recommended, $exclude,
924 $providesextension, $nodefault);
942 if ($type ==
'subpackage' && $providesextension) {
945 $dep = $this->
_constructDep($name,
false, $uri,
false,
false,
false,
false,
946 $providesextension, $nodefault);
959 $recommended =
false, $exclude =
false)
962 $dep = $this->
_constructDep($name,
false,
false, $min, $max, $recommended, $exclude);
975 $arr = array(
'subpackage',
'extension');
976 if ($type !=
'package') {
979 if ($type ==
'extension') {
982 if (!isset($this->_packageInfo[
'dependencies'][
'group'])) {
985 if (!isset($this->_packageInfo[
'dependencies'][
'group'][0])) {
986 if ($this->_packageInfo[
'dependencies'][
'group'][
'attribs'][
'name'] == $groupname) {
987 $this->_packageInfo[
'dependencies'][
'group'] = $this->
_mergeTag(
988 $this->_packageInfo[
'dependencies'][
'group'], $dep,
998 foreach ($this->_packageInfo[
'dependencies'][
'group'] as $i => $group) {
999 if ($group[
'attribs'][
'name'] == $groupname) {
1000 $this->_packageInfo[
'dependencies'][
'group'][$i] = $this->
_mergeTag(
1001 $this->_packageInfo[
'dependencies'][
'group'][$i], $dep,
1005 $this->_isValid = 0;
1027 $recommended =
false, $exclude =
false,
1028 $providesextension =
false, $nodefault =
false)
1030 if (!in_array($type, array(
'optional',
'required'),
true)) {
1033 $this->_isValid = 0;
1034 $arr = array(
'optional',
'group');
1035 if ($type !=
'required') {
1038 $dep = $this->
_constructDep($name, $channel,
false, $min, $max, $recommended, $exclude,
1039 $providesextension, $nodefault);
1040 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
1042 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
1043 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
1044 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
1046 'package' => array(
'subpackage',
'extension',
'os',
'arch')
1061 $this->_isValid = 0;
1062 $arr = array(
'optional',
'group');
1063 if ($type !=
'required') {
1066 $dep = $this->
_constructDep($name,
false, $uri,
false,
false,
false,
false,
1067 $providesextension, $nodefault);
1068 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
1070 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
1071 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
1072 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
1074 'package' => array(
'subpackage',
'extension',
'os',
'arch')
1090 $recommended =
false, $exclude =
false,
1093 $this->_isValid = 0;
1094 $arr = array(
'optional',
'group');
1095 if ($type !=
'required') {
1098 $dep = $this->
_constructDep($name, $channel,
false, $min, $max, $recommended, $exclude,
1100 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
1102 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
1103 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
1104 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
1106 'subpackage' => array(
'extension',
'os',
'arch')
1119 $this->_isValid = 0;
1120 $arr = array(
'optional',
'group');
1121 if ($type !=
'required') {
1124 $dep = $this->
_constructDep($name,
false, $uri,
false,
false,
false,
false, $nodefault);
1125 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
1127 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
1128 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
1129 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
1131 'subpackage' => array(
'extension',
'os',
'arch')
1146 $this->_isValid = 0;
1147 $arr = array(
'optional',
'group');
1148 if ($type !=
'required') {
1151 $dep = $this->
_constructDep($name,
false,
false, $min, $max, $recommended, $exclude);
1152 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
1154 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
1155 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
1156 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
1158 'extension' => array(
'os',
'arch')
1168 $this->_isValid = 0;
1169 $dep = array(
'name' => $name);
1171 $dep[
'conflicts'] =
'';
1173 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
1175 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
1176 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
1177 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
1178 'required' => array(
'optional',
'group'),
1179 'os' => array(
'arch')
1189 $this->_isValid = 0;
1190 $dep = array(
'pattern' => $pattern);
1192 $dep[
'conflicts'] =
'';
1194 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, $dep,
1196 'dependencies' => array(
'providesextension',
'usesrole',
'usestask',
1197 'srcpackage',
'srcuri',
'phprelease',
'extsrcrelease',
'extbinrelease',
1198 'zendextsrcrelease',
'zendextbinrelease',
'bundle',
'changelog'),
1199 'required' => array(
'optional',
'group'),
1218 $this->_isValid = 0;
1219 if (!in_array($type, array(
'php',
'extbin',
'extsrc',
'zendextsrc',
1220 'zendextbin',
'bundle'))) {
1224 if (in_array($type, array(
'zendextsrc',
'zendextbin'))) {
1228 if ($type !=
'bundle') {
1232 foreach (array(
'phprelease',
'extbinrelease',
'extsrcrelease',
1233 'zendextsrcrelease',
'zendextbinrelease',
'bundle') as $test) {
1234 unset($this->_packageInfo[$test]);
1237 if (!isset($this->_packageInfo[$type])) {
1239 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo, array(
'changelog'),
1243 $this->_packageInfo[$type] = array();
1253 if ($type !=
'bundle') {
1256 $this->_packageInfo = $this->
_mergeTag($this->_packageInfo, array(),
1257 array($type => array(
'changelog')));
1272 if ($p ==
'extsrc' || $p ==
'zendextsrc') {
1277 if ($p !=
'bundle') {
1280 if (isset($this->_packageInfo[$p][0])) {
1281 return $this->_packageInfo[$p][count($this->_packageInfo[$p]) - 1];
1283 return $this->_packageInfo[$p];
1302 $this->_isValid = 0;
1303 $r = $this->
_mergeTag($r, array(
'attribs' => array(
'name' => $path,
'as' => $as)),
1305 'filelist' => array(),
1306 'install' => array(
'ignore')
1321 $this->_isValid = 0;
1322 $r = $this->
_mergeTag($r, array(
'attribs' => array(
'name' => $path)),
1324 'filelist' => array(),
1344 $this->_isValid = 0;
1347 'binarypackage' => array(
'filelist'),
1368 $opt = array(
'attribs' => array(
'name' => $name,
'prompt' => $prompt));
1369 if ($default !==
null) {
1370 $opt[
'attribs'][
'default'] = $default;
1373 $this->_isValid = 0;
1376 'configureoption' => array(
'binarypackage',
'filelist'),
1392 $this->_isValid = 0;
1393 if (isset($r[
'installconditions'][
'php'])) {
1394 unset($r[
'installconditions'][
'php']);
1396 $dep = array(
'min' => $min,
'max' => $max);
1398 if (is_array($exclude) && count($exclude) == 1) {
1399 $exclude = $exclude[0];
1401 $dep[
'exclude'] = $exclude;
1406 'installconditions' => array(
'configureoption',
'binarypackage',
1408 'php' => array(
'extension',
'os',
'arch')
1413 'installconditions' => array(
'filelist'),
1414 'php' => array(
'extension',
'os',
'arch')
1434 $this->_isValid = 0;
1435 $dep = $this->
_constructDep($name,
false,
false, $min, $max, $recommended, $exclude);
1439 'installconditions' => array(
'configureoption',
'binarypackage',
1441 'extension' => array(
'os',
'arch')
1446 'installconditions' => array(
'filelist'),
1447 'extension' => array(
'os',
'arch')
1463 $this->_isValid = 0;
1464 if (isset($r[
'installconditions'][
'os'])) {
1465 unset($r[
'installconditions'][
'os']);
1467 $dep = array(
'name' => $name);
1469 $dep[
'conflicts'] =
'';
1474 'installconditions' => array(
'configureoption',
'binarypackage',
1476 'os' => array(
'arch')
1481 'installconditions' => array(
'filelist'),
1482 'os' => array(
'arch')
1498 $this->_isValid = 0;
1499 if (isset($r[
'installconditions'][
'arch'])) {
1500 unset($r[
'installconditions'][
'arch']);
1502 $dep = array(
'pattern' => $pattern);
1504 $dep[
'conflicts'] =
'';
1509 'installconditions' => array(
'configureoption',
'binarypackage',
1516 'installconditions' => array(
'filelist'),
1530 $this->_isValid = 0;
1531 if (isset($this->_packageInfo[
'channel'])) {
1532 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo, array(
'phprelease',
1533 'extsrcrelease',
'extbinrelease',
'zendextsrcrelease',
'zendextbinrelease',
1534 'bundle',
'changelog'),
1535 $packageOrUri,
'srcpackage');
1537 $this->_packageInfo = $this->
_insertBefore($this->_packageInfo, array(
'phprelease',
1538 'extsrcrelease',
'extbinrelease',
'zendextsrcrelease',
'zendextbinrelease',
1539 'bundle',
'changelog'), $packageOrUri,
'srcuri');
1559 'notes' => $notes ? $notes : $this->
getNotes()
1569 if (!isset($this->_packageInfo[
'changelog'])) {
1570 $this->_packageInfo[
'changelog'][
'release'] = $contents;
1573 if (!isset($this->_packageInfo[
'changelog'][
'release'][0])) {
1574 if ($this->_packageInfo[
'changelog'][
'release'][
'version'][
'release'] == $releaseversion) {
1575 $this->_packageInfo[
'changelog'][
'release'] = array(
1576 $this->_packageInfo[
'changelog'][
'release']);
1578 $this->_packageInfo[
'changelog'][
'release'] = array(
1579 $this->_packageInfo[
'changelog'][
'release']);
1580 return $this->_packageInfo[
'changelog'][
'release'][] = $contents;
1583 foreach($this->_packageInfo[
'changelog'][
'release'] as $index => $changelog) {
1584 if (isset($changelog[
'version']) &&
1585 strnatcasecmp($changelog[
'version'][
'release'], $releaseversion) == 0) {
1589 if (isset($curlog)) {
1590 $this->_packageInfo[
'changelog'][
'release'][$curlog] = $contents;
1592 $this->_packageInfo[
'changelog'][
'release'][] = $contents;
1601 unset($this->_packageInfo[
'changelog']);
addConfigureOption($name, $prompt, $default=null)
updateMaintainer($newrole, $handle, $name, $email, $active='yes')
addExtensionDep($type, $name, $min=false, $max=false, $recommended=false, $exclude=false)
addSubpackageDepWithChannel($type, $name, $channel, $min=false, $max=false, $recommended=false, $exclude=false, $nodefault=false)
addGroupPackageDepWithChannel($type, $groupname, $name, $channel, $min=false, $max=false, $recommended=false, $exclude=false, $providesextension=false, $nodefault=false)
addGroupPackageDepWithURI($type, $groupname, $name, $uri, $providesextension=false, $nodefault=false)
addBinarypackage($package)
addConflictingPackageDepWithChannel($name, $channel, $providesextension=false, $min=false, $max=false, $exclude=false)
setReleaseVersion($version)
setSourcePackage($packageOrUri)
addOsDep($name, $conflicts=false)
_addGroupDependency($type, $dep, $groupname)
deleteMaintainer($handle)
addMaintainer($role, $handle, $name, $email, $active='yes')
setProvidesExtension($extension)
setPearinstallerDep($min, $max=false, $recommended=false, $exclude=false)
generateChangeLogEntry($notes=false)
addExtensionInstallCondition($name, $min=false, $max=false, $recommended=false, $exclude=false)
setChangelogEntry($releaseversion, $contents)
addConflictingPackageDepWithUri($name, $uri, $providesextension=false)
setReleaseStability($state)
addCompatiblePackage($name, $channel, $min, $max, $exclude=false)
addDependencyGroup($name, $hint)
addPackageDepWithUri($type, $name, $uri, $providesextension=false, $nodefault=false)
addTaskToFile($filename, $task)
setOsInstallCondition($name, $conflicts=false)
_constructDep($name, $channel, $uri, $min, $max, $recommended, $exclude, $providesextension=false, $nodefault=false, $conflicts=false)
& _getCurrentRelease($strict=true)
addGroupExtensionDep($groupname, $name, $min=false, $max=false, $recommended=false, $exclude=false)
addUsesrole($role, $packageOrUri, $channel=false)
clearContents($baseinstall=false)
addArchDep($pattern, $conflicts=false)
addSubpackageDepWithUri($type, $name, $uri, $nodefault=false)
addFile($dir, $file, $attrs)
addUsestask($task, $packageOrUri, $channel=false)
setLicense($license, $uri=false, $filesource=false)
setArchInstallCondition($pattern, $conflicts=false)
setInstalledAs($file, $path)
addPackageDepWithChannel($type, $name, $channel, $min=false, $max=false, $recommended=false, $exclude=false, $providesextension=false, $nodefault=false)
installedFile($file, $atts)
setPhpInstallCondition($min, $max, $exclude=false)
setPhpDep($min, $max=false, $exclude=false)
getVersion($key='release')
_mergeTag($manip, $contents, $order)
_insertBefore($array, $keys, $contents, $newkey)