function startSession($pkg, $contents, $dest)
    {
        $subst_from = $subst_to = array();
        foreach ($this->_replacements as $a) {
            $a = $a['attribs'];
            $to = '';
            if ($a['type'] == 'pear-config') {
                if ($this->installphase == PEAR_TASK_PACKAGE) {
                    return false;
                }
                if ($a['to'] == 'master_server') {
                    $chan = $this->registry->getChannel($pkg->getChannel());
                    if (!PEAR::isError($chan)) {
                        $to = $chan->getServer();
                    } else {
                        $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]");
                        return false;
                    }
                } else {
                    if ($this->config->isDefinedLayer('ftp')) {
                        // try the remote config file first
                        $to = $this->config->get($a['to'], 'ftp', $pkg->getChannel());
                        if (is_null($to)) {
                            // then default to local
                            $to = $this->config->get($a['to'], null, $pkg->getChannel());
                        }
                    } else {
                        $to = $this->config->get($a['to'], null, $pkg->getChannel());
                    }
                }
                if (is_null($to)) {
                    $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]");
                    return false;
                }
            } elseif ($a['type'] == 'php-const') {
                if ($this->installphase == PEAR_TASK_PACKAGE) {
                    return false;
                }
                if (defined($a['to'])) {
                    $to = constant($a['to']);
                } else {
                    $this->logger->log(0, "$dest: invalid php-const replacement: $a[to]");
                    return false;
                }
            } else {
                if ($t = $pkg->packageInfo($a['to'])) {
                    $to = $t;
                } else {
                    $this->logger->log(0, "$dest: invalid package-info replacement: $a[to]");
                    return false;
                }
            }
            if (!is_null($to)) {
                $subst_from[] = $a['from'];
                $subst_to[] = $to;
            }
        }
        $this->logger->log(3, "doing " . sizeof($subst_from) .
            " substitution(s) for $dest");
        if (sizeof($subst_from)) {
            $contents = str_replace($subst_from, $subst_to, $contents);
        }
        return $contents;
    }
function startSession($pkg, $contents, $dest)
    {
        $subst_from = $subst_to = array();
        foreach ($this->_replacements as $a) {
            $a = $a['attribs'];
            $to = '';
            if ($a['type'] == 'pear-config') {
                if ($this->installphase == PEAR_TASK_PACKAGE) {
                    return false;
                }
                if ($a['to'] == 'master_server') {
                    $chan = $this->registry->getChannel($pkg->getChannel());
                    if (!PEAR::isError($chan)) {
                        $to = $chan->getServer();
                    } else {
                        $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]");
                        return false;
                    }
                } else {
                    if ($this->config->isDefinedLayer('ftp')) {
                        // try the remote config file first
                        $to = $this->config->get($a['to'], 'ftp', $pkg->getChannel());
                        if (is_null($to)) {
                            // then default to local
                            $to = $this->config->get($a['to'], null, $pkg->getChannel());
                        }
                    } else {
                        $to = $this->config->get($a['to'], null, $pkg->getChannel());
                    }
                }
                if (is_null($to)) {
                    $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]");
                    return false;
                }
            } elseif ($a['type'] == 'php-const') {
                if ($this->installphase == PEAR_TASK_PACKAGE) {
                    return false;
                }
                if (defined($a['to'])) {
                    $to = constant($a['to']);
                } else {
                    $this->logger->log(0, "$dest: invalid php-const replacement: $a[to]");
                    return false;
                }
            } else {
                if ($t = $pkg->packageInfo($a['to'])) {
                    $to = $t;
                } else {
                    $this->logger->log(0, "$dest: invalid package-info replacement: $a[to]");
                    return false;
                }
            }
            if (!is_null($to)) {
                $subst_from[] = $a['from'];
                $subst_to[] = $to;
            }
        }
        $this->logger->log(3, "doing " . sizeof($subst_from) .
            " substitution(s) for $dest");
        if (sizeof($subst_from)) {
            $contents = str_replace($subst_from, $subst_to, $contents);
        }
        return $contents;
    }
function startSession ( $ pkg , $ contents , $ dest ) { $ subst_from = $ subst_to = array ( ) ; foreach ( $ this -> _replacements as $ a ) { $ a = $ a [ 'attribs' ] ; $ to = '' ; if ( $ a [ 'type' ] == 'pear-config' ) { if ( $ this -> installphase == PEAR_TASK_PACKAGE ) { return false ; } if ( $ a [ 'to' ] == 'master_server' ) { $ chan = $ this -> registry -> getChannel ( $ pkg -> getChannel ( ) ) ; if ( ! PEAR :: isError ( $ chan ) ) { $ to = $ chan -> getServer ( ) ; } else { $ this -> logger -> log ( 0 , "$dest: invalid pear-config replacement: $a[to]" ) ; return false ; } } else { if ( $ this -> config -> isDefinedLayer ( 'ftp' ) ) { // try the remote config file first $ to = $ this -> config -> get ( $ a [ 'to' ] , 'ftp' , $ pkg -> getChannel ( ) ) ; if ( is_null ( $ to ) ) { // then default to local $ to = $ this -> config -> get ( $ a [ 'to' ] , null , $ pkg -> getChannel ( ) ) ; } } else { $ to = $ this -> config -> get ( $ a [ 'to' ] , null , $ pkg -> getChannel ( ) ) ; } } if ( is_null ( $ to ) ) { $ this -> logger -> log ( 0 , "$dest: invalid pear-config replacement: $a[to]" ) ; return false ; } } elseif ( $ a [ 'type' ] == 'php-const' ) { if ( $ this -> installphase == PEAR_TASK_PACKAGE ) { return false ; } if ( defined ( $ a [ 'to' ] ) ) { $ to = constant ( $ a [ 'to' ] ) ; } else { $ this -> logger -> log ( 0 , "$dest: invalid php-const replacement: $a[to]" ) ; return false ; } } else { if ( $ t = $ pkg -> packageInfo ( $ a [ 'to' ] ) ) { $ to = $ t ; } else { $ this -> logger -> log ( 0 , "$dest: invalid package-info replacement: $a[to]" ) ; return false ; } } if ( ! is_null ( $ to ) ) { $ subst_from [ ] = $ a [ 'from' ] ; $ subst_to [ ] = $ to ; } } $ this -> logger -> log ( 3 , "doing " . sizeof ( $ subst_from ) . " substitution(s) for $dest" ) ; if ( sizeof ( $ subst_from ) ) { $ contents = str_replace ( $ subst_from , $ subst_to , $ contents ) ; } return $ contents ; }
Do a package.xml 1.0 replacement, with additional package-info fields available

See validateXml() source for the complete list of allowed fields
@param PEAR_PackageFile_v1|PEAR_PackageFile_v2
@param string file contents
@param string the eventual final file location (informational only)
@return string|false|PEAR_Error false to skip this file, PEAR_Error to fail
(use $this->throwError), otherwise return the new contents
Do a package . xml 1 . 0 replacement with additional package - info fields available