3 modified files
PEAR_Server
diff -u -r1.7 -r1.8
--- Server.php 2 Nov 2005 04:34:52 -0000 1.7
+++ Server.php 10 Feb 2006 16:27:06 -0000 1.8
@@ -105,8 +105,9 @@
/**
* @param Chiara_PEAR_Server_Release
+ * @param bool if true, then the temporary uploaded release will be deleted
*/
- public function addRelease($release)
+ public function addRelease($release, $deleterelease = true)
{
if ($this->_validLocalChannel($channel = $release->getChannel())) {
if ($this->_backend[$channel]->validPackage($release->getPackage())) {
@@ -116,16 +117,20 @@
$new = $this->_releaseDir . DIRECTORY_SEPARATOR .
$release->getPackage() . '-' . $release->getVersion();
$gp = gzopen($archive, 'rb');
- $contents = '';
- while(!gzeof($gp)) {
- $contents .= gzread($gp, filesize($archive));
+ if (!$gp) {
+ throw new Chiara_PEAR_Server_ExceptionCannotOpenRelease($archive);
}
- gzclose($gp);
$fp = fopen($new . '.tar', 'wb');
- fwrite($fp, $contents);
- fclose($fp);
- copy($release->getFilepath(), $new . '.tgz');
- unlink($release->getFilepath());
+ if (!$fp) {
+ throw new Chiara_PEAR_Server_ExceptionCannotSaveRelease($new . '.tar');
+ }
+ stream_copy_to_stream($gp, $fp);
+ if (!copy($release->getFilepath(), $new . '.tgz')) {
+ throw new Chiara_PEAR_Server_ExceptionCannotSaveRelease($new . '.tgz');
+ }
+ if ($deleterelease) {
+ unlink($release->getFilepath());
+ }
// for the database, save the .tgz
$release->setFilepath($new . '.tgz');
} else {
PEAR_Server
diff -u -r1.7 -r1.8
--- Server.php 2 Nov 2005 04:34:52 -0000 1.7
+++ Server.php 10 Feb 2006 16:27:06 -0000 1.8
@@ -105,8 +105,9 @@
/**
* @param Chiara_PEAR_Server_Release
+ * @param bool if true, then the temporary uploaded release will be deleted
*/
- public function addRelease($release)
+ public function addRelease($release, $deleterelease = true)
{
if ($this->_validLocalChannel($channel = $release->getChannel())) {
if ($this->_backend[$channel]->validPackage($release->getPackage())) {
@@ -116,16 +117,20 @@
$new = $this->_releaseDir . DIRECTORY_SEPARATOR .
$release->getPackage() . '-' . $release->getVersion();
$gp = gzopen($archive, 'rb');
- $contents = '';
- while(!gzeof($gp)) {
- $contents .= gzread($gp, filesize($archive));
+ if (!$gp) {
+ throw new Chiara_PEAR_Server_ExceptionCannotOpenRelease($archive);
}
- gzclose($gp);
$fp = fopen($new . '.tar', 'wb');
- fwrite($fp, $contents);
- fclose($fp);
- copy($release->getFilepath(), $new . '.tgz');
- unlink($release->getFilepath());
+ if (!$fp) {
+ throw new Chiara_PEAR_Server_ExceptionCannotSaveRelease($new . '.tar');
+ }
+ stream_copy_to_stream($gp, $fp);
+ if (!copy($release->getFilepath(), $new . '.tgz')) {
+ throw new Chiara_PEAR_Server_ExceptionCannotSaveRelease($new . '.tgz');
+ }
+ if ($deleterelease) {
+ unlink($release->getFilepath());
+ }
// for the database, save the .tgz
$release->setFilepath($new . '.tgz');
} else {
PEAR_Server/Server
diff -u -r1.10 -r1.11
--- Exception.php 1 Jun 2005 03:31:47 -0000 1.10
+++ Exception.php 10 Feb 2006 16:27:06 -0000 1.11
@@ -278,4 +278,26 @@
parent::__construct($msg ? $msg : $this->_message);
}
}
+
+class Chiara_PEAR_Server_CannotOpenRelease extends Chiara_PEAR_Server_Exception
+{
+ protected $_message = 'Uploaded release "%r" cannot be opened';
+
+ public function __construct($release, $msg = false)
+ {
+ $this->_data = array('r' => $release);
+ parent::__construct($msg ? $msg : $this->_message);
+ }
+}
+
+class Chiara_PEAR_Server_CannotSaveRelease extends Chiara_PEAR_Server_Exception
+{
+ protected $_message = 'Uploaded release "%r" cannot be saved';
+
+ public function __construct($release, $msg = false)
+ {
+ $this->_data = array('r' => $release);
+ parent::__construct($msg ? $msg : $this->_message);
+ }
+}
?>
\ No newline at end of file