272 lines
7.9 KiB
PHP
272 lines
7.9 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_Object
|
|
{
|
|
/**
|
|
* The service that has created the object
|
|
*
|
|
* @var Zend_Service_Rackspace_Files
|
|
*/
|
|
protected $service;
|
|
/**
|
|
* Name of the object
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $name;
|
|
/**
|
|
* MD5 value of the object's content
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $hash;
|
|
/**
|
|
* Size in bytes of the object's content
|
|
*
|
|
* @var integer
|
|
*/
|
|
protected $size;
|
|
/**
|
|
* Content type of the object's content
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $contentType;
|
|
/**
|
|
* Date of the last modified of the object
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $lastModified;
|
|
/**
|
|
* Object content
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $content;
|
|
/**
|
|
* Name of the container where the object is stored
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $container;
|
|
/**
|
|
* Constructor
|
|
*
|
|
* You must pass the Zend_Service_Rackspace_Files object of the caller and an associative
|
|
* array with the keys "name", "container", "hash", "bytes", "content_type",
|
|
* "last_modified", "file" where:
|
|
* name= name of the object
|
|
* container= name of the container where the object is stored
|
|
* hash= the MD5 of the object's content
|
|
* bytes= size in bytes of the object's content
|
|
* content_type= content type of the object's content
|
|
* last_modified= date of the last modified of the object
|
|
* content= content of the object
|
|
*
|
|
* @param Zend_Service_Rackspace_Files $service
|
|
* @param array $data
|
|
*/
|
|
public function __construct($service,$data)
|
|
{
|
|
if (!($service instanceof Zend_Service_Rackspace_Files) || !is_array($data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception("You must pass a RackspaceFiles and an array");
|
|
}
|
|
if (!array_key_exists('name', $data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception("You must pass the name of the object in the array (name)");
|
|
}
|
|
if (!array_key_exists('container', $data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception("You must pass the container of the object in the array (container)");
|
|
}
|
|
if (!array_key_exists('hash', $data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception("You must pass the hash of the object in the array (hash)");
|
|
}
|
|
if (!array_key_exists('bytes', $data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception("You must pass the byte size of the object in the array (bytes)");
|
|
}
|
|
if (!array_key_exists('content_type', $data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception("You must pass the content type of the object in the array (content_type)");
|
|
}
|
|
if (!array_key_exists('last_modified', $data)) {
|
|
require_once 'Zend/Service/Rackspace/Files/Exception.php';
|
|
throw new Zend_Service_Rackspace_Files_Exception("You must pass the last modified data of the object in the array (last_modified)");
|
|
}
|
|
$this->name= $data['name'];
|
|
$this->container= $data['container'];
|
|
$this->hash= $data['hash'];
|
|
$this->size= $data['bytes'];
|
|
$this->contentType= $data['content_type'];
|
|
$this->lastModified= $data['last_modified'];
|
|
if (!empty($data['content'])) {
|
|
$this->content= $data['content'];
|
|
}
|
|
$this->service= $service;
|
|
}
|
|
/**
|
|
* Get name
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getName()
|
|
{
|
|
return $this->name;
|
|
}
|
|
/**
|
|
* Get the name of the container
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getContainer()
|
|
{
|
|
return $this->container;
|
|
}
|
|
/**
|
|
* Get the MD5 of the object's content
|
|
*
|
|
* @return string|boolean
|
|
*/
|
|
public function getHash()
|
|
{
|
|
return $this->hash;
|
|
}
|
|
/**
|
|
* Get the size (in bytes) of the object's content
|
|
*
|
|
* @return integer|boolean
|
|
*/
|
|
public function getSize()
|
|
{
|
|
return $this->size;
|
|
}
|
|
/**
|
|
* Get the content type of the object's content
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getContentType()
|
|
{
|
|
return $this->contentType;
|
|
}
|
|
/**
|
|
* Get the data of the last modified of the object
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getLastModified()
|
|
{
|
|
return $this->lastModified;
|
|
}
|
|
/**
|
|
* Get the content of the object
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getContent()
|
|
{
|
|
return $this->content;
|
|
}
|
|
/**
|
|
* Get the metadata of the object
|
|
* If you don't pass the $key it returns the entire array of metadata value
|
|
*
|
|
* @param string $key
|
|
* @return string|array|boolean
|
|
*/
|
|
public function getMetadata($key=null)
|
|
{
|
|
$result= $this->service->getMetadataObject($this->container,$this->name);
|
|
if (!empty($result)) {
|
|
if (empty($key)) {
|
|
return $result['metadata'];
|
|
}
|
|
if (isset($result['metadata'][$key])) {
|
|
return $result['metadata'][$key];
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Set the metadata value
|
|
* The old metadata values are replaced with the new one
|
|
*
|
|
* @param array $metadata
|
|
* @return boolean
|
|
*/
|
|
public function setMetadata($metadata)
|
|
{
|
|
return $this->service->setMetadataObject($this->container,$this->name,$metadata);
|
|
}
|
|
/**
|
|
* Copy the object to another container
|
|
* You can add metadata information to the destination object, change the
|
|
* content_type and the name of the object
|
|
*
|
|
* @param string $container_dest
|
|
* @param string $name_dest
|
|
* @param array $metadata
|
|
* @param string $content_type
|
|
* @return boolean
|
|
*/
|
|
public function copyTo($container_dest,$name_dest,$metadata=array(),$content_type=null)
|
|
{
|
|
return $this->service->copyObject($this->container,$this->name,$container_dest,$name_dest,$metadata,$content_type);
|
|
}
|
|
/**
|
|
* Get the CDN URL of the object
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getCdnUrl()
|
|
{
|
|
$result= $this->service->getInfoCdnContainer($this->container);
|
|
if ($result!==false) {
|
|
if ($result['cdn_enabled']) {
|
|
return $result['cdn_uri'].'/'.$this->name;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* Get the CDN SSL URL of the object
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getCdnUrlSsl()
|
|
{
|
|
$result= $this->service->getInfoCdnContainer($this->container);
|
|
if ($result!==false) {
|
|
if ($result['cdn_enabled']) {
|
|
return $result['cdn_uri_ssl'].'/'.$this->name;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|