cvs: pear /HTML_AJAX AJAX.php package.php package.xml test.bat
| From: | David Coallier | Date: | Thu, 18 Aug 2005 13:09:49 +0000 |
| Subject: | cvs: pear /HTML_AJAX AJAX.php package.php package.xml test.bat | ||
| Groups: | php.pear.cvs | ||
| Request: | Send a blank email to pear-cvs+get-34119@lists.php.net to get a copy of this message | ||
davidc Thu Aug 18 09:09:49 2005 EDT
Added files:
/pear/HTML_AJAX AJAX.php package.php package.xml test.bat
Log:
Adding the first files.
http://cvs.php.net/co.php/pear/HTML_AJAX/AJAX.php?r=1.1&p=1 Index: pear/HTML_AJAX/AJAX.php +++ pear/HTML_AJAX/AJAX.php <?php /** * OO AJAX Implementation for PHP * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category HTML * @package AJAX * @author Joshua Eichorn <josh@bluga.net> * @copyright 2005 Joshua Eichorn * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ */ /** * OO AJAX Implementation for PHP * * @category HTML * @package AJAX * @author Joshua Eichorn <josh@bluga.net> * @copyright 2005 Joshua Eichorn * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ * @link http://pear.php.net/package/PackageName * @todo Decide if its good thing to support get * @todo pass server side warnings to the client as exceptions or something like that * @todo Add some sort of debugging console */ class HTML_AJAX { /** * An array holding the instances were exporting * * key is the exported name * * row format is array('className'=>'','exportedName'=>'','instance'=>'','exportedMethods=>'') * * @var object * @access private */ var $_exportedInstances; /** * Set the server url in the generated stubs to this value * If set to false, serverUrl will not be set * @var false|string */ var $serverUrl = false; /** * What encoding your going to use for serializing data from php being sent to javascript * @var string JSON|null */ var $serializer = "JSON"; /** * What encoding your going to use for unserializing data sent from javascript * @var string JSON|null */ var $unserializer = "JSON"; /** * Content-type map * * Used in to automatically choose serializers as needed */ var $contentTypeMap = array( 'JSON' => 'application/json', 'Null' => 'text/plain', 'Error' => 'application/error', ); /** * Set a class to handle requests * * @param object $instance * @param string|bool $exportedName Name used for the javascript class, if false the name of the php class is used * @param array|bool $exportedMethods If false all functions without a _ prefix are exported, if an array only the methods listed in the array are exported * @return void */ function registerClass(&$instance, $exportedName = false, $exportedMethods = false) { $className = strtolower(get_class($instance)); if ($exportedName === false) { $exportedName = $className; } if ($exportedMethods === false) { $exportedMethods = $this->_getMethodsToExport($className); } $this->_exportedInstances[$exportedName] = array(); $this->_exportedInstances[$exportedName]['className'] = $className; $this->_exportedInstances[$exportedName]['exportedName'] = $className; $this->_exportedInstances[$exportedName]['instance'] =& $instance; $this->_exportedInstances[$exportedName]['exportedMethods'] = $exportedMethods; } /** * Get a list of methods in a class to export * * @param string $className * @return array all methods of the class that are public * @access private * @todo What does get_class_methods do in php5 */ function _getMethodsToExport($className) { $funcs = get_class_methods($className); foreach ($funcs as $key => $func) { if ($func === $className || substr($func,0,1) === '_') { unset($funcs[$key]); } } return $funcs; } /** * Generate the client Javascript code * * @return string generated javascript client code */ function generateJavaScriptClient() { $client = ""; foreach($this->_exportedInstances as $name => $data) { $client .= $this->generateClassStub($name); } return $client; } /** * Return the stub for a class * * @param string $name name of the class to generated the stub for, note that this is the exported name not the php class name * @return string javascript proxy stub code for a single class */ function generateClassStub($name) { if (!isset($this->_exportedInstances[$name])) { return ""; } $client = "// Client stub for the {$this->_exportedInstances[$name]['className']} PHP Class\n"; $client .= "function $name(callback) {\n"; $client .= "\tmode = 'sync';\n"; $client .= "\tif (callback) { mode = 'async'; }\n"; $client .= "\tthis.serializer = '$this->serializer';\n"; $client .= "\tthis.unserializer = '$this->unserializer';\n"; $client .= "\tthis.className = '$name';\n"; if ($this->serverUrl) { $client .= "\tthis.dispatcher = new HTML_AJAX_Dispatcher(this.className,mode,callback,'{$this->serverUrl}');\n}\n"; } else { $client .= "\tthis.dispatcher = new HTML_AJAX_Dispatcher(this.className,mode,callback);\n}\n"; } $client .= "$name.prototype = {\n"; foreach($this->_exportedInstances[$name]['exportedMethods'] as $method) { $client .= $this->_generateMethodStub($method); } $client = substr($client,0,(strlen($client)-2))."\n"; $client .= "}\n\n"; return $client; } /** * Returns a methods stub * * * @param string the method name * @return string the js code * @access private */ function _generateMethodStub($method) { $stub = "\t$method: function() { return this.dispatcher.doCall('$method',arguments); },\n"; return $stub; } /** * Handle a ajax request if needed * * The current check is if GET variables c (class) and m (method) are set, more options may be available in the future * * @todo move the get _GET check someplace else so get variabled dispatch isn't the hardcoded method * @todo is it worth it to figure out howto use just 1 instance if the type is the same for serialize and unserialize * * @return boolean true if an ajax call was handled, false otherwise */ function handleRequest() { if (isset($_GET['c']) && isset($_GET['m'])) { set_error_handler(array(&$this,'_errorHandler')); $class = $_GET['c']; $method = $_GET['m']; if (!isset($this->_exportedInstances[$class])) { // handle error trigger_error("Unknown class: $class"); } if (!in_array($method,$this->_exportedInstances[$class]['exportedMethods'])) { // handle error trigger_error("Unknown method: $method"); } $unserializer = $this->_getSerializer($this->unserializer); $args = $unserializer->unserialize($this->_getClientPayload()); $ret = call_user_func_array(array(&$this->_exportedInstances[$class]['instance'],$method),$args); restore_error_handler(); $this->_sendResponse($ret); return true; } return false; } /** * Send a reponse adding needed headers and serializing content * * Note: this method echo's output as well as setting headers to prevent caching * * @param mixed content to serialize and send * @access private */ function _sendResponse($response) { $serializer = $this->_getSerializer($this->serializer); $output = $serializer->serialize($response); header('Content-Length: '.strlen($output)); // headers to force things not to be cached: header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate( "D, d M Y H:i:s" ) . 'GMT'); header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache'); if (isset($this->contentTypeMap[$this->serializer])) { header('Content-type: '.$this->contentTypeMap[$this->serializer]); } echo $output; } /** * Get an instance of a serializer class * * @access private */ function _getSerializer($type) { $class = "HTML_AJAX_Serializer_$type"; if (!class_exists($class)) { // include the class only if it isn't defined require_once "HTML/AJAX/Serializer/$type.php"; } $instance = new $class(); return $instance; } /** * Get payload in its submitted form, currently only supports raw post * * @access private * @return string raw post data */ function _getClientPayload() { global $HTTP_RAW_POST_DATA; return $HTTP_RAW_POST_DATA; } /** * Error handler that sends it errors to the client side * * @access private */ function _errorHandler($errno, $errstr, $errfile, $errline) { if (error_reporting()) { $e = new stdClass(); $e->errNo = $errno; $e->errStr = $errstr; $e->errFile = $errfile; $e->errLine = $errline; $this->serializer = 'Error'; $this->_sendResponse($e); die(); } } } /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ ?> http://cvs.php.net/co.php/pear/HTML_AJAX/package.php?r=1.1&p=1 Index: pear/HTML_AJAX/package.php +++ pear/HTML_AJAX/package.php <?php /** * This is the package.xml generator for HTML_AJAX * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category pear * @package PEAR_PackageFileManager * @author Greg Beaver <cellog@php.net> * @copyright 2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version CVS: $Id: package.php,v 1.1 2005/08/18 13:09:49 davidc Exp $ * @link http://pear.php.net/package/PEAR_PackageFileManager * @since File available since Release 0.1.0 */ require_once 'PEAR/PackageFileManager.php'; $version = '0.1.3'; $notes = <<<EOT Update comments to PEAR coding standards EOT; $description =<<<EOT Provides PHP and JavaScript libraries for performing AJAX (Communication from JavaScript to your browser without reloading the page) Offers OO proxies in JavaScript of registered PHP or proxyless operation Serialization of data sent between PHP and JavaScript is provided by a driver model, currently JSON and Null encodings are provided EOT; $package = new PEAR_PackageFileManager; $result = $package->setOptions(array( 'package' => 'HTML_AJAX', 'summary' => 'Provides PHP and JavaScript library for AJAX', 'description' => $description, 'version' => $version, 'state' => 'alpha', 'license' => 'PHP License', 'ignore' => array('package.php', 'package.xml', '*.bak', '*src*', '*.tgz','test.bat','build.php'), 'filelistgenerator' => 'file', // other option is 'file' 'notes' => $notes, 'changelogoldtonew' => false, 'baseinstalldir' => 'HTML', // if your package is like "Packagename" use '' 'packagedirectory' => '', 'simpleoutput' => true )); $package->addReplacement('AJAX/Server.php','pear-config', '@data-dir@', 'data_dir'); $package->addGlobalReplacement('package-info','@package_version@','version'); if (PEAR::isError($result)) { echo $result->getMessage(); die(); } $package->addMaintainer('jeichorn','lead','Joshua Eichorn','josh@bluga.net'); // dependencies can be added at will here $package->addDependency('PEAR', '1.3.5', 'ge', 'pkg', false); $package->addDependency('php', '4.3.0', 'ge', 'php', false); if (isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == 'commit') { $result = $package->writePackageFile(); } else { $result = $package->debugPackageFile(); } if (PEAR::isError($result)) { echo $result->getMessage(); die(); } ?> http://cvs.php.net/co.php/pear/HTML_AJAX/package.xml?r=1.1&p=1 Index: pear/HTML_AJAX/package.xml +++ pear/HTML_AJAX/package.xml <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.0"> <package version="1.0" packagerversion="1.4.0a12"> <name>HTML_AJAX</name> <summary>Provides PHP and JavaScript library for AJAX</summary> <description>Provides PHP and JavaScript libraries for performing AJAX (Communication from JavaScript to your browser without reloading the page) Offers OO proxies in JavaScript of registered PHP or proxyless operation Serialization of data sent between PHP and JavaScript is provided by a driver model, currently JSON and Null encodings are provided </description> <maintainers> <maintainer> <user>jeichorn</user> <name>Joshua Eichorn</name> <email>josh@bluga.net</email> <role>lead</role> </maintainer> </maintainers> <release> <version>0.1.3</version> <date>2005-08-01</date> <license>PHP License</license> <state>alpha</state> <notes>Update comments to PEAR coding standards </notes> <deps> <dep type="pkg" rel="ge" version="1.3.5" optional="no">PEAR</dep> <dep type="php" rel="ge" version="4.3.0" optional="no"/> </deps> <filelist> <dir name="/" baseinstalldir="HTML"> <dir name="AJAX"> <dir name="Serializer"> <file role="php" name="Error.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="php" name="JSON.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="php" name="Null.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /AJAX/Serializer --> <file role="php" name="JSON.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="php" name="Server.php"> <replace type="pear-config" from="@data-dir@" to="data_dir"/> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /AJAX --> <dir name="docs"> <file role="doc" name="todo"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /docs --> <dir name="examples"> <file role="doc" name="auto_server.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="proxyless_usage.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="proxy_usage_inline_javascript.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="proxy_usage_server.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="README"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="server.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="test.class.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="test_speed.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /examples --> <dir name="js"> <file role="data" name="Dispatcher.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="HTML_AJAX.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="HTML_AJAX_lite.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="HttpClient.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="JSON.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="Main.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="Request.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /js --> <file role="php" name="AJAX.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- / --> </filelist> </release> <changelog> <release> <version>0.1.3</version> <date>2005-08-01</date> <license>PHP License</license> <state>alpha</state> <notes>Update comments to PEAR coding standards </notes> </release> <release> <version>0.1.2</version> <date>2005-07-29</date> <license>PHP License</license> <state>alpha</state> <notes>Minor browser compatibility bug fixes, use directory seperator constant </notes> </release> <release> <version>0.1.1</version> <date>2005-07-28</date> <license>PHP License</license> <state>alpha</state> <notes>Adds Error and Event handling </notes> </release> <release> <version>0.1.0</version> <date>2005-07-28</date> <license>PHP License</license> <state>alpha</state> <notes>initial release </notes> </release> </changelog> </package> http://cvs.php.net/co.php/pear/HTML_AJAX/test.bat?r=1.1&p=1 Index: pear/HTML_AJAX/test.bat +++ pear/HTML_AJAX/test.bat pear install -f package.xml
http://cvs.php.net/co.php/pear/HTML_AJAX/AJAX.php?r=1.1&p=1 Index: pear/HTML_AJAX/AJAX.php +++ pear/HTML_AJAX/AJAX.php <?php /** * OO AJAX Implementation for PHP * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category HTML * @package AJAX * @author Joshua Eichorn <josh@bluga.net> * @copyright 2005 Joshua Eichorn * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ */ /** * OO AJAX Implementation for PHP * * @category HTML * @package AJAX * @author Joshua Eichorn <josh@bluga.net> * @copyright 2005 Joshua Eichorn * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ * @link http://pear.php.net/package/PackageName * @todo Decide if its good thing to support get * @todo pass server side warnings to the client as exceptions or something like that * @todo Add some sort of debugging console */ class HTML_AJAX { /** * An array holding the instances were exporting * * key is the exported name * * row format is array('className'=>'','exportedName'=>'','instance'=>'','exportedMethods=>'') * * @var object * @access private */ var $_exportedInstances; /** * Set the server url in the generated stubs to this value * If set to false, serverUrl will not be set * @var false|string */ var $serverUrl = false; /** * What encoding your going to use for serializing data from php being sent to javascript * @var string JSON|null */ var $serializer = "JSON"; /** * What encoding your going to use for unserializing data sent from javascript * @var string JSON|null */ var $unserializer = "JSON"; /** * Content-type map * * Used in to automatically choose serializers as needed */ var $contentTypeMap = array( 'JSON' => 'application/json', 'Null' => 'text/plain', 'Error' => 'application/error', ); /** * Set a class to handle requests * * @param object $instance * @param string|bool $exportedName Name used for the javascript class, if false the name of the php class is used * @param array|bool $exportedMethods If false all functions without a _ prefix are exported, if an array only the methods listed in the array are exported * @return void */ function registerClass(&$instance, $exportedName = false, $exportedMethods = false) { $className = strtolower(get_class($instance)); if ($exportedName === false) { $exportedName = $className; } if ($exportedMethods === false) { $exportedMethods = $this->_getMethodsToExport($className); } $this->_exportedInstances[$exportedName] = array(); $this->_exportedInstances[$exportedName]['className'] = $className; $this->_exportedInstances[$exportedName]['exportedName'] = $className; $this->_exportedInstances[$exportedName]['instance'] =& $instance; $this->_exportedInstances[$exportedName]['exportedMethods'] = $exportedMethods; } /** * Get a list of methods in a class to export * * @param string $className * @return array all methods of the class that are public * @access private * @todo What does get_class_methods do in php5 */ function _getMethodsToExport($className) { $funcs = get_class_methods($className); foreach ($funcs as $key => $func) { if ($func === $className || substr($func,0,1) === '_') { unset($funcs[$key]); } } return $funcs; } /** * Generate the client Javascript code * * @return string generated javascript client code */ function generateJavaScriptClient() { $client = ""; foreach($this->_exportedInstances as $name => $data) { $client .= $this->generateClassStub($name); } return $client; } /** * Return the stub for a class * * @param string $name name of the class to generated the stub for, note that this is the exported name not the php class name * @return string javascript proxy stub code for a single class */ function generateClassStub($name) { if (!isset($this->_exportedInstances[$name])) { return ""; } $client = "// Client stub for the {$this->_exportedInstances[$name]['className']} PHP Class\n"; $client .= "function $name(callback) {\n"; $client .= "\tmode = 'sync';\n"; $client .= "\tif (callback) { mode = 'async'; }\n"; $client .= "\tthis.serializer = '$this->serializer';\n"; $client .= "\tthis.unserializer = '$this->unserializer';\n"; $client .= "\tthis.className = '$name';\n"; if ($this->serverUrl) { $client .= "\tthis.dispatcher = new HTML_AJAX_Dispatcher(this.className,mode,callback,'{$this->serverUrl}');\n}\n"; } else { $client .= "\tthis.dispatcher = new HTML_AJAX_Dispatcher(this.className,mode,callback);\n}\n"; } $client .= "$name.prototype = {\n"; foreach($this->_exportedInstances[$name]['exportedMethods'] as $method) { $client .= $this->_generateMethodStub($method); } $client = substr($client,0,(strlen($client)-2))."\n"; $client .= "}\n\n"; return $client; } /** * Returns a methods stub * * * @param string the method name * @return string the js code * @access private */ function _generateMethodStub($method) { $stub = "\t$method: function() { return this.dispatcher.doCall('$method',arguments); },\n"; return $stub; } /** * Handle a ajax request if needed * * The current check is if GET variables c (class) and m (method) are set, more options may be available in the future * * @todo move the get _GET check someplace else so get variabled dispatch isn't the hardcoded method * @todo is it worth it to figure out howto use just 1 instance if the type is the same for serialize and unserialize * * @return boolean true if an ajax call was handled, false otherwise */ function handleRequest() { if (isset($_GET['c']) && isset($_GET['m'])) { set_error_handler(array(&$this,'_errorHandler')); $class = $_GET['c']; $method = $_GET['m']; if (!isset($this->_exportedInstances[$class])) { // handle error trigger_error("Unknown class: $class"); } if (!in_array($method,$this->_exportedInstances[$class]['exportedMethods'])) { // handle error trigger_error("Unknown method: $method"); } $unserializer = $this->_getSerializer($this->unserializer); $args = $unserializer->unserialize($this->_getClientPayload()); $ret = call_user_func_array(array(&$this->_exportedInstances[$class]['instance'],$method),$args); restore_error_handler(); $this->_sendResponse($ret); return true; } return false; } /** * Send a reponse adding needed headers and serializing content * * Note: this method echo's output as well as setting headers to prevent caching * * @param mixed content to serialize and send * @access private */ function _sendResponse($response) { $serializer = $this->_getSerializer($this->serializer); $output = $serializer->serialize($response); header('Content-Length: '.strlen($output)); // headers to force things not to be cached: header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate( "D, d M Y H:i:s" ) . 'GMT'); header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache'); if (isset($this->contentTypeMap[$this->serializer])) { header('Content-type: '.$this->contentTypeMap[$this->serializer]); } echo $output; } /** * Get an instance of a serializer class * * @access private */ function _getSerializer($type) { $class = "HTML_AJAX_Serializer_$type"; if (!class_exists($class)) { // include the class only if it isn't defined require_once "HTML/AJAX/Serializer/$type.php"; } $instance = new $class(); return $instance; } /** * Get payload in its submitted form, currently only supports raw post * * @access private * @return string raw post data */ function _getClientPayload() { global $HTTP_RAW_POST_DATA; return $HTTP_RAW_POST_DATA; } /** * Error handler that sends it errors to the client side * * @access private */ function _errorHandler($errno, $errstr, $errfile, $errline) { if (error_reporting()) { $e = new stdClass(); $e->errNo = $errno; $e->errStr = $errstr; $e->errFile = $errfile; $e->errLine = $errline; $this->serializer = 'Error'; $this->_sendResponse($e); die(); } } } /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ ?> http://cvs.php.net/co.php/pear/HTML_AJAX/package.php?r=1.1&p=1 Index: pear/HTML_AJAX/package.php +++ pear/HTML_AJAX/package.php <?php /** * This is the package.xml generator for HTML_AJAX * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category pear * @package PEAR_PackageFileManager * @author Greg Beaver <cellog@php.net> * @copyright 2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version CVS: $Id: package.php,v 1.1 2005/08/18 13:09:49 davidc Exp $ * @link http://pear.php.net/package/PEAR_PackageFileManager * @since File available since Release 0.1.0 */ require_once 'PEAR/PackageFileManager.php'; $version = '0.1.3'; $notes = <<<EOT Update comments to PEAR coding standards EOT; $description =<<<EOT Provides PHP and JavaScript libraries for performing AJAX (Communication from JavaScript to your browser without reloading the page) Offers OO proxies in JavaScript of registered PHP or proxyless operation Serialization of data sent between PHP and JavaScript is provided by a driver model, currently JSON and Null encodings are provided EOT; $package = new PEAR_PackageFileManager; $result = $package->setOptions(array( 'package' => 'HTML_AJAX', 'summary' => 'Provides PHP and JavaScript library for AJAX', 'description' => $description, 'version' => $version, 'state' => 'alpha', 'license' => 'PHP License', 'ignore' => array('package.php', 'package.xml', '*.bak', '*src*', '*.tgz','test.bat','build.php'), 'filelistgenerator' => 'file', // other option is 'file' 'notes' => $notes, 'changelogoldtonew' => false, 'baseinstalldir' => 'HTML', // if your package is like "Packagename" use '' 'packagedirectory' => '', 'simpleoutput' => true )); $package->addReplacement('AJAX/Server.php','pear-config', '@data-dir@', 'data_dir'); $package->addGlobalReplacement('package-info','@package_version@','version'); if (PEAR::isError($result)) { echo $result->getMessage(); die(); } $package->addMaintainer('jeichorn','lead','Joshua Eichorn','josh@bluga.net'); // dependencies can be added at will here $package->addDependency('PEAR', '1.3.5', 'ge', 'pkg', false); $package->addDependency('php', '4.3.0', 'ge', 'php', false); if (isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == 'commit') { $result = $package->writePackageFile(); } else { $result = $package->debugPackageFile(); } if (PEAR::isError($result)) { echo $result->getMessage(); die(); } ?> http://cvs.php.net/co.php/pear/HTML_AJAX/package.xml?r=1.1&p=1 Index: pear/HTML_AJAX/package.xml +++ pear/HTML_AJAX/package.xml <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.0"> <package version="1.0" packagerversion="1.4.0a12"> <name>HTML_AJAX</name> <summary>Provides PHP and JavaScript library for AJAX</summary> <description>Provides PHP and JavaScript libraries for performing AJAX (Communication from JavaScript to your browser without reloading the page) Offers OO proxies in JavaScript of registered PHP or proxyless operation Serialization of data sent between PHP and JavaScript is provided by a driver model, currently JSON and Null encodings are provided </description> <maintainers> <maintainer> <user>jeichorn</user> <name>Joshua Eichorn</name> <email>josh@bluga.net</email> <role>lead</role> </maintainer> </maintainers> <release> <version>0.1.3</version> <date>2005-08-01</date> <license>PHP License</license> <state>alpha</state> <notes>Update comments to PEAR coding standards </notes> <deps> <dep type="pkg" rel="ge" version="1.3.5" optional="no">PEAR</dep> <dep type="php" rel="ge" version="4.3.0" optional="no"/> </deps> <filelist> <dir name="/" baseinstalldir="HTML"> <dir name="AJAX"> <dir name="Serializer"> <file role="php" name="Error.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="php" name="JSON.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="php" name="Null.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /AJAX/Serializer --> <file role="php" name="JSON.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="php" name="Server.php"> <replace type="pear-config" from="@data-dir@" to="data_dir"/> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /AJAX --> <dir name="docs"> <file role="doc" name="todo"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /docs --> <dir name="examples"> <file role="doc" name="auto_server.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="proxyless_usage.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="proxy_usage_inline_javascript.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="proxy_usage_server.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="README"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="server.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="test.class.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="doc" name="test_speed.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /examples --> <dir name="js"> <file role="data" name="Dispatcher.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="HTML_AJAX.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="HTML_AJAX_lite.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="HttpClient.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="JSON.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="Main.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> <file role="data" name="Request.js"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- /js --> <file role="php" name="AJAX.php"> <replace type="package-info" from="@package_version@" to="version"/> </file> </dir> <!-- / --> </filelist> </release> <changelog> <release> <version>0.1.3</version> <date>2005-08-01</date> <license>PHP License</license> <state>alpha</state> <notes>Update comments to PEAR coding standards </notes> </release> <release> <version>0.1.2</version> <date>2005-07-29</date> <license>PHP License</license> <state>alpha</state> <notes>Minor browser compatibility bug fixes, use directory seperator constant </notes> </release> <release> <version>0.1.1</version> <date>2005-07-28</date> <license>PHP License</license> <state>alpha</state> <notes>Adds Error and Event handling </notes> </release> <release> <version>0.1.0</version> <date>2005-07-28</date> <license>PHP License</license> <state>alpha</state> <notes>initial release </notes> </release> </changelog> </package> http://cvs.php.net/co.php/pear/HTML_AJAX/test.bat?r=1.1&p=1 Index: pear/HTML_AJAX/test.bat +++ pear/HTML_AJAX/test.bat pear install -f package.xml