delete_all_object_versions ( $bucket, $pcre )

Deletes all of the versions of all Amazon S3 objects inside the specified bucket.

Access

public

Parameters

Parameter

Type

Required

Description

$bucket

string

Required

The name of the bucket to use.

$pcre

string

Optional

A Perl-Compatible Regular Expression (PCRE) to filter the names against. The default value is PCRE_ALL.

Returns

Type

Description

boolean

A value of true means that all object versions were successfully deleted. A value of false means that at least one object/version failed to delete.

Examples

Delete ALL versions of ALL objects within a bucket.

// Instantiate the class
$s3 = new AmazonS3();
$bucket = 'my-bucket' . strtolower($s3->key);

$response = $s3->delete_all_object_versions($bucket);

// Success?
var_dump($response !== false);
Result:
bool(true)

Delete ALL versions of objects within a bucket that match the PCRE regular expression.

// Instantiate the class
$s3 = new AmazonS3();
$bucket = 'my-bucket' . strtolower($s3->key);

$response = $s3->delete_all_object_versions($bucket, '/abc.txt/i');

// Success?
var_dump($response !== false);
Result:
bool(true)

Related Methods

See Also

Source

Method defined in services/s3.class.php | Toggle source view (97 lines) | View on GitHub

public function delete_all_object_versions($bucket, $pcre = null)
{
    // Instantiate
    $versions = $this->list_bucket_object_versions($bucket);

    // Gather all nodes together into a single array
    if ($versions->body->DeleteMarker() && $versions->body->Version())
    {
        $markers = array_merge($versions->body->DeleteMarker()->getArrayCopy(), $versions->body->Version()->getArrayCopy());
    }
    elseif ($versions->body->DeleteMarker())
    {
        $markers = $versions->body->DeleteMarker()->getArrayCopy();
    }
    elseif ($versions->body->Version())
    {
        $markers = $versions->body->Version()->getArrayCopy();
    }
    else
    {
        $markers = array();
    }

    while ((string) $versions->body->IsTruncated === 'true')
    {
        $versions = $this->list_bucket_object_versions($bucket, array(
            'key-marker' => (string) $versions->body->NextKeyMarker
        ));

        // Gather all nodes together into a single array
        if ($versions->body->DeleteMarker() && $versions->body->Version())
        {
            $markers = array_merge($markers, $versions->body->DeleteMarker()->getArrayCopy(), $versions->body->Version()->getArrayCopy());
        }
        elseif ($versions->body->DeleteMarker())
        {
            $markers = array_merge($markers, $versions->body->DeleteMarker()->getArrayCopy());
        }
        elseif ($versions->body->Version())
        {
            $markers = array_merge($markers, $versions->body->Version()->getArrayCopy());
        }
    }

    $objects = array();

    // Loop through markers
    foreach ($markers as $marker)
    {
        if ($pcre)
        {
            if (preg_match($pcre, (string) $marker->Key))
            {
                $xx = array('key' => (string) $marker->Key);
                if ((string) $marker->VersionId !== 'null')
                {
                    $xx['version_id'] = (string) $marker->VersionId;
                }
                $objects[] = $xx;
                unset($xx);
            }
        }
        else
        {
            $xx = array('key' => (string) $marker->Key);
            if ((string) $marker->VersionId !== 'null')
            {
                $xx['version_id'] = (string) $marker->VersionId;
            }
            $objects[] = $xx;
            unset($xx);
        }
    }

    $batch = new CFBatchRequest();
    $batch->use_credentials($this->credentials);

    foreach (array_chunk($objects, 1000) as $object_set)
    {
        $this->batch($batch)->delete_objects($bucket, array(
            'objects' => $object_set
        ));
    }

    $responses = $this->batch($batch)->send();
    $is_ok = true;

    foreach ($responses as $response)
    {
        if (!$response->isOK() || isset($response->body->Error))
        {
            $is_ok = false;
        }
    }

    return $is_ok;
}

Copyright © 2010–2013 Amazon Web Services, LLC


Feedback