PEAR logo

PEAR_PackageFileManager : The Definitive Guide



Chapter 13. Handling Changelog

Table of Contents

Reading full changelog history
Removing full changelog

This lesson :

Reading full changelog history

If you want to retrieve information from an old version, or just count releases, you have only to use one method: getChangelog().

We will create a RSS newsfeed with result of getChangelog() assisted by PEAR package XML_Serializer .

[Note] Note
Original article create a RSS newsfeed is locate at http://freedomink.org/node/62

Example 13.1. create a RSS newsfeed

  1. <?php
  2. require_once 'PEAR/PackageFileManager2.php';
  3. require_once 'XML/Serializer.php';
  4.  
  5. PEAR::setErrorHandling(PEAR_ERROR_DIE);
  6.  
  7. $packagefile = 'C:/php/pear/PEAR_PackageFileManager/package2.xml';
  8.  
  9. $options = array('filelistgenerator' => 'cvs',
  10.     'packagedirectory' => dirname($packagefile),
  11.     'baseinstalldir' => 'PEAR',
  12.     );
  13.  
  14. $p2 = &PEAR_PackageFileManager2::importOptions($packagefile, $options);
  15.  
  16. $changelog = $p2->getChangelog();
  17.  
  18. $options = array(
  19.     'indent'    => '    ',
  20.     'linebreak' => "\n",
  21.     'typeHints' => false,
  22.     'addDecl'   => true,
  23.     'encoding'  => 'UTF-8',
  24.     'rootName'  => 'rdf:RDF',
  25.     'defaultTagName' => 'item'
  26.     );
  27.  
  28. $stories = array();
  29.  
  30. foreach ($changelog['release'] as $log) {
  31.     $stories[] = array(
  32.         'title'       => $p2->getPackage() . ' ' . $log['version']['release'],
  33.         'link'        => 'http://pear.php.net/package/' . $p2->getPackage()
  34.                        . '/download/' . $log['version']['release'],
  35.         'description' => $log['notes']
  36.     );
  37. }
  38.  
  39. $data['channel'] = array(
  40.     'title' => 'Latest releases',
  41.     'link'  => 'http://pear.php.net/package/' . $p2->getPackage(),
  42.     $stories
  43. );
  44.  
  45. $serializer = new XML_Serializer($options);
  46.  
  47. if ($serializer->serialize($data)) {
  48.     echo '<pre>';
  49.     echo htmlentities($serializer->getSerializedData());
  50.     echo '</pre>';
  51. }
  52. ?>
PEAR_PackageFileManager : The Definitive Guide v 1.6.0 : November 17, 2006