329 lines
8.8 KiB
PHP
329 lines
8.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Zend Framework
|
|
*
|
|
* LICENSE
|
|
*
|
|
* This source file is subject to the new BSD license that is bundled
|
|
* with this package in the file LICENSE.txt.
|
|
* It is also available through the world-wide-web at this URL:
|
|
* http://framework.zend.com/license/new-bsd
|
|
* If you did not receive a copy of the license and are unable to
|
|
* obtain it through the world-wide-web, please send an email
|
|
* to license@zend.com so we can send you a copy immediately.
|
|
*
|
|
* @category Zend
|
|
* @package Zend_Service_Rackspace
|
|
* @subpackage Files
|
|
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
*/
|
|
|
|
require_once 'Zend/Service/Rackspace/Files.php';
|
|
|
|
class Zend_Service_Rackspace_Files_Container
|
|
{
|
|
const ERROR_PARAM_FILE_CONSTRUCT = 'The Zend_Service_Rackspace_Files passed in construction is not valid';
|
|
const ERROR_PARAM_ARRAY_CONSTRUCT = 'The array passed in construction is not valid';
|
|
const ERROR_PARAM_NO_NAME = 'The container name is empty';
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $name;
|
|
/**
|
|
* Construct
|
|
*
|
|
* @param Zend_Service_Rackspace_Files $service
|
|
* @param string $name
|
|
*/
|
|
public function __construct($service, $data)
|
|
{
|
|
if (!($service instanceof Zend_Service_Rackspace_Files)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception(self::ERROR_PARAM_FILE_CONSTRUCT);
|
|
}
|
|
if (!is_array($data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception(self::ERROR_PARAM_ARRAY_CONSTRUCT);
|
|
}
|
|
if (!array_key_exists('name', $data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception(self::ERROR_PARAM_NO_NAME);
|
|
}
|
|
$this->service = $service;
|
|
$this->name = $data['name'];
|
|
}
|
|
/**
|
|
* Get the name of the container
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getName()
|
|
{
|
|
return $this->name;
|
|
}
|
|
/**
|
|
* Get the size in bytes of the container
|
|
*
|
|
* @return integer|boolean
|
|
*/
|
|
public function getSize()
|
|
{
|
|
$data = $this->getInfo();
|
|
if (isset($data['bytes'])) {
|
|
return $data['bytes'];
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get the total count of objects in the container
|
|
*
|
|
* @return integer|boolean
|
|
*/
|
|
public function getObjectCount()
|
|
{
|
|
$data = $this->getInfo();
|
|
if (isset($data['count'])) {
|
|
return $data['count'];
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Return true if the container is CDN enabled
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function isCdnEnabled()
|
|
{
|
|
$data = $this->getCdnInfo();
|
|
if (isset($data['cdn_enabled'])) {
|
|
return $data['cdn_enabled'];
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get the TTL of the CDN
|
|
*
|
|
* @return integer|boolean
|
|
*/
|
|
public function getCdnTtl()
|
|
{
|
|
$data = $this->getCdnInfo();
|
|
if (!isset($data['ttl'])) {
|
|
return $data['ttl'];
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Return true if the log retention is enabled for the CDN
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function isCdnLogEnabled()
|
|
{
|
|
$data = $this->getCdnInfo();
|
|
if (!isset($data['log_retention'])) {
|
|
return $data['log_retention'];
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get the CDN URI
|
|
*
|
|
* @return string|boolean
|
|
*/
|
|
public function getCdnUri()
|
|
{
|
|
$data = $this->getCdnInfo();
|
|
if (!isset($data['cdn_uri'])) {
|
|
return $data['cdn_uri'];
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get the CDN URI SSL
|
|
*
|
|
* @return string|boolean
|
|
*/
|
|
public function getCdnUriSsl()
|
|
{
|
|
$data = $this->getCdnInfo();
|
|
if (!isset($data['cdn_uri_ssl'])) {
|
|
return $data['cdn_uri_ssl'];
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get the metadata of the container
|
|
*
|
|
* If $key is empty return the array of metadata
|
|
*
|
|
* @param string $key
|
|
* @return array|string|boolean
|
|
*/
|
|
public function getMetadata($key=null)
|
|
{
|
|
$result = $this->service->getMetadataContainer($this->getName());
|
|
if (!empty($result) && is_array($result)) {
|
|
if (empty($key)) {
|
|
return $result['metadata'];
|
|
} else {
|
|
if (isset ($result['metadata'][$key])) {
|
|
return $result['metadata'][$key];
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get the information of the container (total of objects, total size)
|
|
*
|
|
* @return array|boolean
|
|
*/
|
|
public function getInfo()
|
|
{
|
|
$result = $this->service->getMetadataContainer($this->getName());
|
|
if (!empty($result) && is_array($result)) {
|
|
return $result;
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get all the object of the container
|
|
*
|
|
* @return Zend_Service_Rackspace_Files_ObjectList
|
|
*/
|
|
public function getObjects()
|
|
{
|
|
return $this->service->getObjects($this->getName());
|
|
}
|
|
/**
|
|
* Get an object of the container
|
|
*
|
|
* @param string $name
|
|
* @param array $headers
|
|
* @return Zend_Service_Rackspace_Files_Object|boolean
|
|
*/
|
|
public function getObject($name, $headers=array())
|
|
{
|
|
return $this->service->getObject($this->getName(), $name, $headers);
|
|
}
|
|
/**
|
|
* Add an object in the container
|
|
*
|
|
* @param string $name
|
|
* @param string $file the content of the object
|
|
* @param array $metadata
|
|
* @return boolen
|
|
*/
|
|
public function addObject($name, $file, $metadata=array())
|
|
{
|
|
return $this->service->storeObject($this->getName(), $name, $file, $metadata);
|
|
}
|
|
/**
|
|
* Delete an object in the container
|
|
*
|
|
* @param string $obj
|
|
* @return boolean
|
|
*/
|
|
public function deleteObject($obj)
|
|
{
|
|
return $this->service->deleteObject($this->getName(), $obj);
|
|
}
|
|
/**
|
|
* Copy an object to another container
|
|
*
|
|
* @param string $obj_source
|
|
* @param string $container_dest
|
|
* @param string $obj_dest
|
|
* @param array $metadata
|
|
* @param string $content_type
|
|
* @return boolean
|
|
*/
|
|
public function copyObject($obj_source, $container_dest, $obj_dest, $metadata=array(), $content_type=null)
|
|
{
|
|
return $this->service->copyObject($this->getName(), $obj_source, $container_dest, $obj_dest, $metadata, $content_type);
|
|
}
|
|
/**
|
|
* Get the metadata of an object in the container
|
|
*
|
|
* @param string $object
|
|
* @return array
|
|
*/
|
|
public function getMetadataObject($object)
|
|
{
|
|
return $this->service->getMetadataObject($this->getName(),$object);
|
|
}
|
|
/**
|
|
* Set the metadata of an object in the container
|
|
*
|
|
* @param string $object
|
|
* @param array $metadata
|
|
* @return boolean
|
|
*/
|
|
public function setMetadataObject($object,$metadata=array())
|
|
{
|
|
return $this->service->setMetadataObject($this->getName(),$object,$metadata);
|
|
}
|
|
/**
|
|
* Enable the CDN for the container
|
|
*
|
|
* @param integer $ttl
|
|
* @return array|boolean
|
|
*/
|
|
public function enableCdn($ttl=Zend_Service_Rackspace_Files::CDN_TTL_MIN)
|
|
{
|
|
return $this->service->enableCdnContainer($this->getName(),$ttl);
|
|
}
|
|
/**
|
|
* Disable the CDN for the container
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function disableCdn()
|
|
{
|
|
$result = $this->service->updateCdnContainer($this->getName(),null,false);
|
|
return ($result!==false);
|
|
}
|
|
/**
|
|
* Change the TTL for the CDN container
|
|
*
|
|
* @param integer $ttl
|
|
* @return boolean
|
|
*/
|
|
public function changeTtlCdn($ttl)
|
|
{
|
|
$result = $this->service->updateCdnContainer($this->getName(),$ttl);
|
|
return ($result!==false);
|
|
}
|
|
/**
|
|
* Enable the log retention for the CDN
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function enableLogCdn()
|
|
{
|
|
$result = $this->service->updateCdnContainer($this->getName(),null,null,true);
|
|
return ($result!==false);
|
|
}
|
|
/**
|
|
* Disable the log retention for the CDN
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function disableLogCdn()
|
|
{
|
|
$result = $this->service->updateCdnContainer($this->getName(),null,null,false);
|
|
return ($result!==false);
|
|
}
|
|
/**
|
|
* Get the CDN information
|
|
*
|
|
* @return array|boolean
|
|
*/
|
|
public function getCdnInfo()
|
|
{
|
|
return $this->service->getInfoCdnContainer($this->getName());
|
|
}
|
|
} |