public function gc() { $config = self::$_registry->get("config"); $s3config = $config['services']['S3']; $s3 = new Zend_Service_Amazon_S3($s3config['key'], $s3config['secret']); $select = $this->_dbTable->select(); $select->order("timestamp ASC")->limit(50); $delShares = $this->_dbAdapter->fetchAll($select); $deletedShares = array(); foreach ($delShares as $delShare) { $objectKey = $delShare['alias'] . "/" . $delShare['share'] . "-" . $delShare['download_secret'] . "/" . $delShare['filename']; $object = $s3config['sharesBucket'] . "/" . $objectKey; if ($s3->removeObject($object)) { $deletedShares[] = $delShare['id']; } } if (!empty($deletedShares)) { $querystring = "DELETE from " . $this->_dbAdapter->quoteTableAs($this->_dbTable->getTableName()) . " WHERE "; do { $line = $this->_dbAdapter->quoteInto("id = ?", current($deletedShares)); $querystring .= $line; next($deletedShares); if (current($deletedShares)) { $querystring .= " OR "; } } while (current($deletedShares)); $this->_dbAdapter->query($querystring); } $removedNum = count($deletedShares); return $removedNum; }
/** * Delete an item in the storage service. * * @param string $path * @param array $options * @return void */ public function deleteItem($path, $options = array()) { try { $this->_s3->removeObject($this->_getFullPath($path, $options)); } catch (Zend_Service_Amazon_S3_Exception $e) { throw new Zend_Cloud_StorageService_Exception('Error on delete: ' . $e->getMessage(), $e->getCode(), $e); } }
public function syncDirectory() { $accessKey = Mage::getStoreConfig('amazonsync/general/access_key_id'); $secretKey = Mage::getStoreConfig('amazonsync/general/secret_access_key'); $bucket = Mage::getStoreConfig('amazonsync/general/s3_bucket_path'); $prefix = Mage::getStoreConfig('amazonsync/general/prefix'); $magentoDir = Mage::getStoreConfig('amazonsync/general/magento_directory'); $magentoDir = Mage::getBaseDir() . "/" . $magentoDir; //Return if S3 settings are empty if (!($accessKey && $secretKey && $bucket)) { return; } //Prepare meta data for uploading. All uploaded images are public $meta = array(Zend_Service_Amazon_S3::S3_ACL_HEADER => Zend_Service_Amazon_S3::S3_ACL_PUBLIC_READ); $s3 = new Zend_Service_Amazon_S3($accessKey, $secretKey); //Build prefix for all files on S3 if ($prefix) { $cdnPrefix = $bucket . '/' . $prefix; } else { $cdnPrefix = $bucket; } $allFiles = array(); if (is_dir($magentoDir)) { $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($magentoDir), RecursiveIteratorIterator::SELF_FIRST); $dir = null; foreach ($objects as $name => $object) { //Get name of the file and create its key on S3 if (!($object->getFileName() == '.' || $object->getFileName() == '..')) { if (is_dir($object)) { continue; } $fileName = str_replace($magentoDir, '', $name); $cdnPath = $cdnPrefix . $fileName; //Full path to uploaded file $file = $name; //Upload original file $allFiles[] = $cdnPath; if (!$s3->putFile($file, $cdnPath, $meta)) { $msg = 'Can\'t upload original image (' . $file . ') to S3 with ' . $cdnPath . ' key'; throw new Mage_Core_Exception($msg); } } } //Remove Not Matched Files foreach ($s3->getObjectsByBucket($bucket) as $object) { $object = $bucket . '/' . $object; if (!in_array($object, $allFiles)) { $s3->removeObject($object); } } return 'All files uploaded to S3 with ' . $bucket . ' bucket'; } else { $msg = $magentoDir . ' directory does not exist'; throw new Mage_Core_Exception($msg); } }
/** * @group ZF-7773 */ public function testGetObjectsByBucketParams() { $this->_amazon->createBucket("testgetobjectparams1"); $this->_amazon->putObject("testgetobjectparams1/zftest1", "testdata"); $this->_amazon->putObject("testgetobjectparams1/zftest2", "testdata"); $list = $this->_amazon->getObjectsByBucket("testgetobjectparams1", array('max-keys' => 1)); $this->assertEquals(1, count($list)); $this->_amazon->removeObject("testgetobjectparams1/zftest1", "testdata"); $this->_amazon->removeObject("testgetobjectparams1/zftest2", "testdata"); $this->_amazon->removeBucket("testgetobjectparams1"); }
function s3_delete_file($access_key_id, $secret_access_key, $bucket_path) { $result = FALSE; if ($access_key_id && $secret_access_key && $bucket_path) { try { $s3 = new Zend_Service_Amazon_S3($access_key_id, $secret_access_key); if ($s3->removeObject($bucket_path)) { $result = TRUE; } } catch (Exception $ex) { //print $ex->getMessage(); } } }
/** * Remove a "stored" file. * * @param string $path */ public function delete($path) { $objectName = $this->_getObjectName($path); $status = $this->_s3->removeObject($objectName); if (!$status) { if ($this->_s3->isObjectAvailable($objectName)) { throw new Omeka_Storage_Exception('Unable to delete file.'); } else { _log("Omeka_Storage_Adapter_ZendS3: Tried to delete missing object '{$objectName}'.", Zend_Log::WARN); } } else { _log("Omeka_Storage_Adapter_ZendS3: Removed object '{$objectName}'."); } }
public function remove($filename) { $this->_initApi(); return $this->_api->removeObject($this->_config['bucket'] . $this->_getUri($filename)); }
/** * Removes the object specified by the file name and user id * @param unknown_type $user_id * @param unknown_type $file_name * @return boolean */ private function removeAmazonS3Object($user_id, $file_name) { // TODO: make this asynchronous later global $app; $objectURL = null; $aws_key = null; $aws_secret_key = null; $aws_key = $app->configData['configuration']['api_keys']['value']['amazon_aws_key']['value']; $aws_secret_key = $app->configData['configuration']['api_keys']['value']['amazon_aws_secret']['value']; $amazon_bucket_name = $app->configData['configuration']['api_keys']['value']['amazon_s3_bucket']['value']; if (isset($aws_key) && isset($aws_secret_key)) { $s3 = null; $bucketAvailable = false; $s3 = new Zend_Service_Amazon_S3($aws_key, $aws_secret_key); $bucketAvailable = $s3->isBucketAvailable($amazon_bucket_name); if ($bucketAvailable) { // bucket is available so try to delete the object try { foreach ($this->_image_sizes as $imageSizeType => $imageDimensions) { $objectPath = $this->buildAmazonS3ObjectURL($imageSizeType, $user_id, $file_name); $objectPath = $amazon_bucket_name . $objectPath; $s3->removeObject($objectPath); } return true; } catch (Exception $e) { // ignore this error - the extra amazons3 object in the bucket // will not harm anything. It will just be an unclean directory // take care of cleaning asynchronously by deleting orphan objects // that do not appear in the user's picture/avatar urls //$this->message = $e->getMessage(); } } else { // no bucket is available return false; } } return false; }
public function removeFile($path) { // Should we add bucket here? $path = $this->_bucket . '/' . $path; $this->_internalService->removeObject($path); }
public function deleteFiles($userInfo) { $registry = Zend_Registry::getInstance(); $config = $registry->get("config"); $s3config = $config['services']['S3']; $avatarInfo = unserialize($userInfo['avatarInfo']); if (!isset($avatarInfo['secret'])) { return false; } $s3 = new Zend_Service_Amazon_S3($s3config['key'], $s3config['secret']); foreach ($this->_sizes as $sizeInfo) { $s3->removeObject($s3config['headshotsBucket'] . "/" . $userInfo['id'] . '-' . $avatarInfo['secret'] . $sizeInfo[1] . '.jpg'); } return true; }