public function create_cors_config($bucket, $opt = null)
{
if (!$opt) $opt = array();
$opt['verb'] = 'PUT';
$opt['sub_resource'] = 'cors';
$opt['headers'] = array(
'Content-Type' => 'application/xml'
);
$xml = simplexml_load_string($this->cors_config_xml, $this->parser_class);
if (isset($opt['cors_rule']) && is_array($opt['cors_rule']))
{
foreach ($opt['cors_rule'] as $rule_set)
{
// New rule node
$xrule = $xml->addChild('CORSRule');
// ID node
if (isset($rule_set['id']))
{
$xrule->addChild('ID', $rule_set['id']);
}
// ExposeHeader node
if (isset($rule_set['expose_header']))
{
$xrule->addChild('ExposeHeader', $rule_set['expose_header']);
}
// MaxAgeSeconds node
if (isset($rule_set['max_age']))
{
$xrule->addChild('MaxAgeSeconds', $rule_set['max_age']);
}
// AllowedHeader node
if (isset($rule_set['allowed_header']))
{
if (!is_array($rule_set['allowed_header']))
{
$rule_set['allowed_header'] = array($rule_set['allowed_header']);
}
foreach ($rule_set['allowed_header'] as $method)
{
$xrule->addChild('AllowedHeader', $method);
}
}
// AllowedMethod node
if (isset($rule_set['allowed_method']))
{
if (!is_array($rule_set['allowed_method']))
{
$rule_set['allowed_method'] = array($rule_set['allowed_method']);
}
foreach ($rule_set['allowed_method'] as $method)
{
$xrule->addChild('AllowedMethod', $method);
}
}
// AllowedOrigin node
if (isset($rule_set['allowed_origin']))
{
if (!is_array($rule_set['allowed_origin']))
{
$rule_set['allowed_origin'] = array($rule_set['allowed_origin']);
}
foreach ($rule_set['allowed_origin'] as $method)
{
$xrule->addChild('AllowedOrigin', $method);
}
}
}
}
$opt['body'] = $xml->asXML();
// Authenticate to S3
return $this->authenticate($bucket, $opt);
}