diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Service/WindowsAzure/Storage/Blob/Stream.php --- a/web/lib/Zend/Service/WindowsAzure/Storage/Blob/Stream.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/Service/WindowsAzure/Storage/Blob/Stream.php Thu Mar 21 19:50:53 2013 +0100 @@ -15,27 +15,16 @@ * @category Zend * @package Zend_Service_WindowsAzure_Storage * @subpackage Blob - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://todo name_todo - * @version $Id: Stream.php 23167 2010-10-19 17:53:31Z mabe $ - */ - -/** - * @see Zend_Service_WindowsAzure_Storage_Blob + * @version $Id: Stream.php 24593 2012-01-05 20:35:02Z matthew $ */ -require_once 'Zend/Service/WindowsAzure/Storage/Blob.php'; - -/** - * @see Zend_Service_WindowsAzure_Exception - */ -require_once 'Zend/Service/WindowsAzure/Exception.php'; - /** * @category Zend * @package Zend_Service_WindowsAzure_Storage * @subpackage Blob - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Service_WindowsAzure_Storage_Blob_Stream @@ -45,42 +34,42 @@ * * @var string */ - private $_fileName = null; + protected $_fileName = null; /** * Temporary file name * * @var string */ - private $_temporaryFileName = null; + protected $_temporaryFileName = null; /** * Temporary file handle * * @var resource */ - private $_temporaryFileHandle = null; + protected $_temporaryFileHandle = null; /** * Blob storage client * * @var Zend_Service_WindowsAzure_Storage_Blob */ - private $_storageClient = null; + protected $_storageClient = null; /** * Write mode? * * @var boolean */ - private $_writeMode = false; + protected $_writeMode = false; /** * List of blobs * * @var array */ - private $_blobs = null; + protected $_blobs = null; /** * Retrieve storage client for this stream type @@ -90,7 +79,7 @@ */ protected function _getStorageClient($path = '') { - if ($this->_storageClient === null) { + if (is_null($this->_storageClient)) { $url = explode(':', $path); if (!$url) { throw new Zend_Service_WindowsAzure_Exception('Could not parse path "' . $path . '".'); @@ -150,7 +139,7 @@ * @param string $opened_path * @return boolean */ - public function stream_open($path, $mode, $options, $opened_path) + public function stream_open($path, $mode, $options, &$opened_path) { $this->_fileName = $path; $this->_temporaryFileName = tempnam(sys_get_temp_dir(), 'azure'); @@ -347,36 +336,7 @@ return false; } - $stat = array(); - $stat['dev'] = 0; - $stat['ino'] = 0; - $stat['mode'] = 0; - $stat['nlink'] = 0; - $stat['uid'] = 0; - $stat['gid'] = 0; - $stat['rdev'] = 0; - $stat['size'] = 0; - $stat['atime'] = 0; - $stat['mtime'] = 0; - $stat['ctime'] = 0; - $stat['blksize'] = 0; - $stat['blocks'] = 0; - - $info = null; - try { - $info = $this->_getStorageClient($this->_fileName)->getBlobInstance( - $this->_getContainerName($this->_fileName), - $this->_getFileName($this->_fileName) - ); - } catch (Zend_Service_WindowsAzure_Exception $ex) { - // Unexisting file... - } - if ($info !== null) { - $stat['size'] = $info->Size; - $stat['atime'] = time(); - } - - return $stat; + return $this->url_stat($this->_fileName, 0); } /** @@ -391,6 +351,10 @@ $this->_getContainerName($path), $this->_getFileName($path) ); + + // Clear the stat cache for this path. + clearstatcache(true, $path); + return true; } /** @@ -420,6 +384,10 @@ $this->_getContainerName($path_from), $this->_getFileName($path_from) ); + + // Clear the stat cache for the affected paths. + clearstatcache(true, $path_from); + clearstatcache(true, $path_to); return true; } @@ -453,15 +421,21 @@ $this->_getContainerName($path), $this->_getFileName($path) ); + $stat['size'] = $info->Size; + + // Set the modification time and last modified to the Last-Modified header. + $lastmodified = strtotime($info->LastModified); + $stat['mtime'] = $lastmodified; + $stat['ctime'] = $lastmodified; + + // Entry is a regular file. + $stat['mode'] = 0100000; + + return array_values($stat) + $stat; } catch (Zend_Service_WindowsAzure_Exception $ex) { // Unexisting file... + return false; } - if ($info !== null) { - $stat['size'] = $info->Size; - $stat['atime'] = time(); - } - - return $stat; } /** @@ -480,6 +454,7 @@ $this->_getStorageClient($path)->createContainer( $this->_getContainerName($path) ); + return true; } catch (Zend_Service_WindowsAzure_Exception $ex) { return false; } @@ -498,11 +473,15 @@ public function rmdir($path, $options) { if ($this->_getContainerName($path) == $this->_getFileName($path)) { + // Clear the stat cache so that affected paths are refreshed. + clearstatcache(); + // Delete container try { $this->_getStorageClient($path)->deleteContainer( $this->_getContainerName($path) ); + return true; } catch (Zend_Service_WindowsAzure_Exception $ex) { return false; }