<?php require_once 'StorageBackend.php'; require_once 'FileStorageBackend.php'; require_once 'Amazon_S3StorageBackend.php'; /** * * Controls access to the storage backend class where a file is stored. * */ class ProxyStorageBackend extends StorageBackend { private $storageBackend; /** * Receives the file's storage backend and instantiates the approriate * object. */ public function ProxyStorageBackend($storageBackend) { $CC_CONFIG = Config::getConfig(); //The storage backend in the airtime.conf directly corresponds to //the name of the class that implements it (eg. Amazon_S3), so we //can easily create the right backend object dynamically: if ($storageBackend == "amazon_S3") { $this->storageBackend = new Amazon_S3StorageBackend($CC_CONFIG["Amazon_S3"]); } else if ($storageBackend == "file") { $this->storageBackend = new FileStorageBackend(); } else { $this->storageBackend = new $storageBackend($CC_CONFIG[$storageBackend]); } } public function getAbsoluteFilePath($resourceId) { return $this->storageBackend->getAbsoluteFilePath($resourceId); } public function getSignedURL($resourceId) { return $this->storageBackend->getSignedURL($resourceId); } public function getFileSize($resourceId) { return $this->storageBackend->getFileSize($resourceId); } public function deletePhysicalFile($resourceId) { $this->storageBackend->deletePhysicalFile($resourceId); } public function deleteAllCloudFileObjects() { $this->storageBackend->deleteAllCloudFileObjects(); } public function getFilePrefix() { return $this->storageBackend->getFilePrefix(); } }