You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					106 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					106 lines
				
				2.6 KiB
			|   
											7 months ago
										 | <?php | ||
|  | 
 | ||
|  | include_once dirname(dirname(__FILE__)). "/Core/OssException.php"; | ||
|  | 
 | ||
|  | 
 | ||
|  | /** | ||
|  |  * Class BucketLifecycleConfig | ||
|  |  * @package OSS\Model | ||
|  |  * @link http://help.aliyun.com/document_detail/oss/api-reference/bucket/PutBucketLifecycle.html | ||
|  |  */ | ||
|  | class LifecycleConfig implements XmlConfig | ||
|  | { | ||
|  |     /** | ||
|  |      * Parse the xml into this object. | ||
|  |      * | ||
|  |      * @param string $strXml | ||
|  |      * @throws OssException | ||
|  |      * @return null | ||
|  |      */ | ||
|  |     public function parseFromXml($strXml) | ||
|  |     { | ||
|  |         $this->rules = array(); | ||
|  |         $xml = simplexml_load_string($strXml); | ||
|  |         if (!isset($xml->Rule)) return; | ||
|  |         $this->rules = array(); | ||
|  |         foreach ($xml->Rule as $rule) { | ||
|  |             $id = strval($rule->ID); | ||
|  |             $prefix = strval($rule->Prefix); | ||
|  |             $status = strval($rule->Status); | ||
|  |             $actions = array(); | ||
|  |             foreach ($rule as $key => $value) { | ||
|  |                 if ($key === 'ID' || $key === 'Prefix' || $key === 'Status') continue; | ||
|  |                 $action = $key; | ||
|  |                 $timeSpec = null; | ||
|  |                 $timeValue = null; | ||
|  |                 foreach ($value as $timeSpecKey => $timeValueValue) { | ||
|  |                     $timeSpec = $timeSpecKey; | ||
|  |                     $timeValue = strval($timeValueValue); | ||
|  |                 } | ||
|  |                 $actions[] = new LifecycleAction($action, $timeSpec, $timeValue); | ||
|  |             } | ||
|  |             $this->rules[] = new LifecycleRule($id, $prefix, $status, $actions); | ||
|  |         } | ||
|  |         return; | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Serialize the object to xml | ||
|  |      * | ||
|  |      * @return string | ||
|  |      */ | ||
|  |     public function serializeToXml() | ||
|  |     { | ||
|  | 
 | ||
|  |         $xml = new \SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><LifecycleConfiguration></LifecycleConfiguration>'); | ||
|  |         foreach ($this->rules as $rule) { | ||
|  |             $xmlRule = $xml->addChild('Rule'); | ||
|  |             $rule->appendToXml($xmlRule); | ||
|  |         } | ||
|  |         return $xml->asXML(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * | ||
|  |      * Add a LifecycleRule | ||
|  |      * | ||
|  |      * @param LifecycleRule $lifecycleRule | ||
|  |      * @throws OssException | ||
|  |      */ | ||
|  |     public function addRule($lifecycleRule) | ||
|  |     { | ||
|  |         if (!isset($lifecycleRule)) { | ||
|  |             throw new OssException("lifecycleRule is null"); | ||
|  |         } | ||
|  |         $this->rules[] = $lifecycleRule; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      *  Serialize the object into xml string. | ||
|  |      * | ||
|  |      * @return string | ||
|  |      */ | ||
|  |     public function __toString() | ||
|  |     { | ||
|  |         return $this->serializeToXml(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Get all lifecycle rules. | ||
|  |      * | ||
|  |      * @return LifecycleRule[] | ||
|  |      */ | ||
|  |     public function getRules() | ||
|  |     { | ||
|  |         return $this->rules; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @var LifecycleRule[] | ||
|  |      */ | ||
|  |     private $rules; | ||
|  | } | ||
|  | 
 | ||
|  | 
 |