Example #1
0
 /**
  * @param string   $key
  * @param DateTime $date
  */
 public function restoreByDeletingNewerVersions($key, DateTime $date)
 {
     $versions = $this->getVersions($key);
     $versionsToDelete = Functional\select($versions, function (CMService_AwsS3Versioning_Response_Version $version) use($key, $date) {
         $isExactKeyMatch = $key === $version->getKey();
         $isModifiedAfter = $date < $version->getLastModified();
         return $isExactKeyMatch && $isModifiedAfter;
     });
     $this->_streamOutput->writeln('Restoring `' . $key . '` - deleting ' . count($versionsToDelete) . ' versions...');
     if (count($versionsToDelete) > 0) {
         $objectsData = Functional\map($versionsToDelete, function (CMService_AwsS3Versioning_Response_Version $version) {
             return array('Key' => $version->getKey(), 'VersionId' => $version->getId());
         });
         $this->_client->deleteObjects(array('Bucket' => $this->_bucket, 'Objects' => $objectsData));
     }
 }
Example #2
0
 /**
  * @param string $namespace
  */
 private function _dbToFileMongo($namespace)
 {
     $mongo = CM_Service_Manager::getInstance()->getMongoDb();
     $collectionList = \Functional\select($mongo->listCollectionNames(), function ($collection) use($namespace) {
         return preg_match('/^' . strtolower($namespace) . '_/', $collection);
     });
     sort($collectionList);
     $optionsValid = ['unique', 'name', 'dropDups', 'sparse', 'expireAfterSeconds'];
     $indexes = [];
     foreach ($collectionList as $collection) {
         $indexList = $mongo->getIndexInfo($collection);
         foreach ($indexList as $indexInfo) {
             $key = $indexInfo['key'];
             $options = array_intersect_key($indexInfo, array_flip($optionsValid));
             $indexes[$collection][] = ['key' => $key, 'options' => $options];
         }
     }
     $dump = CM_Params::jsonEncode($indexes, true);
     $dirPath = CM_Util::getModulePath($namespace) . '/resources/mongo/';
     CM_File::getFilesystemDefault()->ensureDirectory($dirPath);
     CM_File::create($dirPath . 'collections.json', $dump);
 }