Overview

Packages

  • Pear

Classes

  • Horde_Pear_Exception
  • Horde_Pear_Package_Contents_Ignore_Composite
  • Horde_Pear_Package_Contents_Ignore_Dot
  • Horde_Pear_Package_Contents_Ignore_Git
  • Horde_Pear_Package_Contents_Ignore_Hidden
  • Horde_Pear_Package_Contents_Ignore_Nothing
  • Horde_Pear_Package_Contents_Ignore_Patterns
  • Horde_Pear_Package_Contents_Include_All
  • Horde_Pear_Package_Contents_InstallAs_Horde
  • Horde_Pear_Package_Contents_InstallAs_HordeApplication
  • Horde_Pear_Package_Contents_InstallAs_HordeComponent
  • Horde_Pear_Package_Contents_InstallAs_HordeRole
  • Horde_Pear_Package_Contents_List
  • Horde_Pear_Package_Contents_Role_HordeApplication
  • Horde_Pear_Package_Contents_Role_HordeComponent
  • Horde_Pear_Package_Dependencies
  • Horde_Pear_Package_Task_UpdateContents
  • Horde_Pear_Package_Type_Horde
  • Horde_Pear_Package_Xml
  • Horde_Pear_Package_Xml_Contents
  • Horde_Pear_Package_Xml_Directory
  • Horde_Pear_Package_Xml_Element_Directory
  • Horde_Pear_Package_Xml_Element_File
  • Horde_Pear_Package_Xml_Factory
  • Horde_Pear_Registry
  • Horde_Pear_Remote
  • Horde_Pear_Rest
  • Horde_Pear_Rest_Dependencies
  • Horde_Pear_Rest_Package
  • Horde_Pear_Rest_PackageList
  • Horde_Pear_Rest_Release
  • Horde_Pear_Rest_Releases

Interfaces

  • Horde_Pear_Package_Contents
  • Horde_Pear_Package_Contents_Ignore
  • Horde_Pear_Package_Contents_Include
  • Horde_Pear_Package_Contents_InstallAs
  • Horde_Pear_Package_Contents_Role
  • Horde_Pear_Package_Task
  • Horde_Pear_Package_Type
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * A parser for a dependency list from a PEAR server.
  4:  *
  5:  * PHP version 5
  6:  *
  7:  * @category Horde
  8:  * @package  Pear
  9:  * @author   Gunnar Wrobel <wrobel@pardus.de>
 10:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 11:  * @link     http://pear.horde.org/index.php?package=Pear
 12:  */
 13: 
 14: /**
 15:  * A parser for a dependency list from a PEAR server.
 16:  *
 17:  * Copyright 2011-2012 Horde LLC (http://www.horde.org/)
 18:  *
 19:  * See the enclosed file COPYING for license information (LGPL). If you
 20:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
 21:  *
 22:  * @category Horde
 23:  * @package  Pear
 24:  * @author   Gunnar Wrobel <wrobel@pardus.de>
 25:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 26:  * @link     http://pear.horde.org/index.php?package=Pear
 27:  */
 28: class Horde_Pear_Rest_Dependencies
 29: {
 30:     /**
 31:      * The dependency list.
 32:      *
 33:      * @var array
 34:      */
 35:     private $_deps;
 36: 
 37:     /**
 38:      * Constructor.
 39:      *
 40:      * @param resource|string $txt The text document received from the server.
 41:      */
 42:     public function __construct($txt)
 43:     {
 44:         if (is_resource($txt)) {
 45:             rewind($txt);
 46:             $txt = stream_get_contents($txt);
 47:         }
 48:         if ($txt === false) {
 49:             $this->_deps = array();
 50:         } else {
 51:             $deps = @unserialize($txt);
 52:             if ($deps === false && $txt !== 'b:0;') {
 53:                 throw new Horde_Pear_Exception(
 54:                     sprintf('Unable to parse dependency response "%s"!', $txt)
 55:                 );
 56:             }
 57:             $result = array();
 58:             if (isset($deps['required'])) {
 59:                 foreach ($deps['required'] as $type => $required) {
 60:                     $this->_convert($type, $required, 'no', $result);
 61:                 }
 62:             }
 63:             if (isset($deps['optional'])) {
 64:                 foreach ($deps['optional'] as $type => $optional) {
 65:                     $this->_convert($type, $optional, 'yes', $result);
 66:                 }
 67:             }
 68:             $this->_deps = $result;
 69:         }
 70:     }
 71: 
 72:     /**
 73:      * Convert the PEAR server response into an array that we would get when
 74:      * accessing the dependencies of a local package.xml via PEAR.
 75:      *
 76:      * @param string $type     The dependency type.
 77:      * @param array  $input    The input array.
 78:      * @param string $optional Indicates if it is an optional dependency.
 79:      * @param array  &$result  The result array.
 80:      *
 81:      * @return NULL
 82:      */
 83:     private function _convert($type, $input, $optional, &$result)
 84:     {
 85:         if (in_array($type, array('package', 'extension'))
 86:             && !isset($input['name'])) {
 87:             foreach ($input as $element) {
 88:                 $this->_convert($type, $element, $optional, $result);
 89:             }
 90:         } else {
 91:             Horde_Pear_Package_Dependencies::addDependency(
 92:                 $input, $type, $optional, $result
 93:             );
 94:         }
 95: 
 96:     }
 97: 
 98:     /**
 99:      * Return the package name.
100:      *
101:      * @return string The package name.
102:      */
103:     public function getDependencies()
104:     {
105:         return $this->_deps;
106:     }
107: }
API documentation generated by ApiGen