PEAR
[ class tree: PEAR ] [ index: PEAR ] [ all elements ]

Source for file Common.php

Documentation is available at Common.php

  1. <?php
  2. /**
  3.  * Base class for all installation roles.
  4.  *
  5.  * PHP versions 4 and 5
  6.  *
  7.  * @category   pear
  8.  * @package    PEAR
  9.  * @author     Greg Beaver <cellog@php.net>
  10.  * @copyright  1997-2006 The PHP Group
  11.  * @license    http://opensource.org/licenses/bsd-license.php New BSD License
  12.  * @version    CVS: $Id: Common.php 313023 2011-07-06 19:17:11Z dufuz $
  13.  * @link       http://pear.php.net/package/PEAR
  14.  * @since      File available since Release 1.4.0a1
  15.  */
  16. /**
  17.  * Base class for all installation roles.
  18.  *
  19.  * This class allows extensibility of file roles.  Packages with complex
  20.  * customization can now provide custom file roles along with the possibility of
  21.  * adding configuration values to match.
  22.  * @category   pear
  23.  * @package    PEAR
  24.  * @author     Greg Beaver <cellog@php.net>
  25.  * @copyright  1997-2006 The PHP Group
  26.  * @license    http://opensource.org/licenses/bsd-license.php New BSD License
  27.  * @version    Release: 1.9.4
  28.  * @link       http://pear.php.net/package/PEAR
  29.  * @since      Class available since Release 1.4.0a1
  30.  */
  31. {
  32.     /**
  33.      * @var PEAR_Config 
  34.      * @access protected
  35.      */
  36.     var $config;
  37.  
  38.     /**
  39.      * @param PEAR_Config 
  40.      */
  41.     function PEAR_Installer_Role_Common(&$config)
  42.     {
  43.         $this->config = $config;
  44.     }
  45.  
  46.     /**
  47.      * Retrieve configuration information about a file role from its XML info
  48.      *
  49.      * @param string $role Role Classname, as in "PEAR_Installer_Role_Data"
  50.      * @return array 
  51.      */
  52.     function getInfo($role)
  53.     {
  54.         if (empty($GLOBALS['_PEAR_INSTALLER_ROLES'][$role])) {
  55.             return PEAR::raiseError('Unknown Role class: "' $role '"');
  56.         }
  57.         return $GLOBALS['_PEAR_INSTALLER_ROLES'][$role];
  58.     }
  59.  
  60.     /**
  61.      * This is called for each file to set up the directories and files
  62.      * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2
  63.      * @param array attributes from the <file> tag
  64.      * @param string file name
  65.      * @return array an array consisting of:
  66.      *
  67.      *     1 the original, pre-baseinstalldir installation directory
  68.      *     2 the final installation directory
  69.      *     3 the full path to the final location of the file
  70.      *     4 the location of the pre-installation file
  71.      */
  72.     function processInstallation($pkg$atts$file$tmp_path$layer = null)
  73.     {
  74.         $roleInfo PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' 
  75.             ucfirst(str_replace('pear_installer_role_'''strtolower(get_class($this)))));
  76.         if (PEAR::isError($roleInfo)) {
  77.             return $roleInfo;
  78.         }
  79.         if (!$roleInfo['locationconfig']{
  80.             return false;
  81.         }
  82.         if ($roleInfo['honorsbaseinstall']{
  83.             $dest_dir $save_destdir $this->config->get($roleInfo['locationconfig']$layer,
  84.                 $pkg->getChannel());
  85.             if (!empty($atts['baseinstalldir'])) {
  86.                 $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir'];
  87.             }
  88.         elseif ($roleInfo['unusualbaseinstall']{
  89.             $dest_dir $save_destdir $this->config->get($roleInfo['locationconfig'],
  90.                     $layer$pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage();
  91.             if (!empty($atts['baseinstalldir'])) {
  92.                 $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir'];
  93.             }
  94.         else {
  95.             $dest_dir $save_destdir $this->config->get($roleInfo['locationconfig'],
  96.                     $layer$pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage();
  97.         }
  98.         if (dirname($file!= '.' && empty($atts['install-as'])) {
  99.             $dest_dir .= DIRECTORY_SEPARATOR . dirname($file);
  100.         }
  101.         if (empty($atts['install-as'])) {
  102.             $dest_file $dest_dir . DIRECTORY_SEPARATOR . basename($file);
  103.         else {
  104.             $dest_file $dest_dir . DIRECTORY_SEPARATOR . $atts['install-as'];
  105.         }
  106.         $orig_file $tmp_path . DIRECTORY_SEPARATOR . $file;
  107.  
  108.         // Clean up the DIRECTORY_SEPARATOR mess
  109.         $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR;
  110.         
  111.         list($dest_dir$dest_file$orig_filepreg_replace(array('!\\\\+!''!/!'"!$ds2+!"),
  112.                                                     array(DIRECTORY_SEPARATORDIRECTORY_SEPARATOR,
  113.                                                           DIRECTORY_SEPARATOR),
  114.                                                     array($dest_dir$dest_file$orig_file));
  115.         return array($save_destdir$dest_dir$dest_file$orig_file);
  116.     }
  117.  
  118.     /**
  119.      * Get the name of the configuration variable that specifies the location of this file
  120.      * @return string|false
  121.      */
  122.     function getLocationConfig()
  123.     {
  124.         $roleInfo PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' 
  125.             ucfirst(str_replace('pear_installer_role_'''strtolower(get_class($this)))));
  126.         if (PEAR::isError($roleInfo)) {
  127.             return $roleInfo;
  128.         }
  129.         return $roleInfo['locationconfig'];
  130.     }
  131.  
  132.     /**
  133.      * Do any unusual setup here
  134.      * @param PEAR_Installer 
  135.      * @param PEAR_PackageFile_v2 
  136.      * @param array file attributes
  137.      * @param string file name
  138.      */
  139.     function setup(&$installer$pkg$atts$file)
  140.     {
  141.     }
  142.  
  143.     function isExecutable()
  144.     {
  145.         $roleInfo PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' 
  146.             ucfirst(str_replace('pear_installer_role_'''strtolower(get_class($this)))));
  147.         if (PEAR::isError($roleInfo)) {
  148.             return $roleInfo;
  149.         }
  150.         return $roleInfo['executable'];
  151.     }
  152.  
  153.     function isInstallable()
  154.     {
  155.         $roleInfo PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' 
  156.             ucfirst(str_replace('pear_installer_role_'''strtolower(get_class($this)))));
  157.         if (PEAR::isError($roleInfo)) {
  158.             return $roleInfo;
  159.         }
  160.         return $roleInfo['installable'];
  161.     }
  162.  
  163.     function isExtension()
  164.     {
  165.         $roleInfo PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' 
  166.             ucfirst(str_replace('pear_installer_role_'''strtolower(get_class($this)))));
  167.         if (PEAR::isError($roleInfo)) {
  168.             return $roleInfo;
  169.         }
  170.         return $roleInfo['phpextension'];
  171.     }
  172. }
  173. ?>

Documentation generated on Wed, 06 Jul 2011 23:30:34 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.