public static function download( $id, $repository_name ) {
		if ( Utils\is_snapshot_cached( $id ) ) {
			Log::instance()->write( 'Snapshot found in cache.' );

			return self::get( $id );
		}

		$create_dir = Utils\create_snapshot_directory( $id );

		if ( ! $create_dir ) {
			Log::instance()->write( 'Cannot create necessary snapshot directories.', 0, 'error' );

			return false;
		}

		$repository = RepositoryManager::instance()->setup( $repository_name );

		if ( ! $repository ) {
			Log::instance()->write( 'Could not setup repository.', 0, 'error' );

			return false;
		}

		Log::instance()->write( 'Getting snapshot information...' );

		$snapshot = $repository->getDB()->getSnapshot( $id );

		if ( ! $snapshot ) {
			Log::instance()->write( 'Could not get snapshot from database.', 0, 'error' );

			return false;
		}

		if ( empty( $snapshot ) || empty( $snapshot['project'] ) ) {
			Log::instance()->write( 'Missing critical snapshot data.', 0, 'error' );
			return false;
		}

		/**
		 * Backwards compant. Add repository to meta before we started saving it.
		 */
		if ( empty( $snapshot['repository'] ) ) {
			$snapshot['repository'] = $repository_name;
		}

		Log::instance()->write( 'Downloading snapshot files and database (' . Utils\format_bytes( $snapshot['size'] ) . ')...' );

		$snapshot_path = Utils\get_snapshot_directory() . $id . '/';

		$download = $repository->getS3()->downloadSnapshot( $id, $snapshot['project'], $snapshot_path . 'data.sql.gz', $snapshot_path . 'files.tar.gz' );

		if ( ! $download ) {
			Log::instance()->write( 'Failed to download snapshot.', 0, 'error' );

			return false;
		}

		/**
		 * Finally save snapshot meta to meta.json
		 */
		$meta_handle = @fopen( $snapshot_path . 'meta.json', 'x' ); // Create file and fail if it exists.

		if ( ! $meta_handle ) {
			Log::instance()->write( 'Could not create meta.json.', 0, 'error' );

			return false;
		}

		fwrite( $meta_handle, json_encode( $snapshot, JSON_PRETTY_PRINT ) );

		return new self( $id, $repository_name, $snapshot, true );
	}
public static function download( $id, $repository_name ) {
		if ( Utils\is_snapshot_cached( $id ) ) {
			Log::instance()->write( 'Snapshot found in cache.' );

			return self::get( $id );
		}

		$create_dir = Utils\create_snapshot_directory( $id );

		if ( ! $create_dir ) {
			Log::instance()->write( 'Cannot create necessary snapshot directories.', 0, 'error' );

			return false;
		}

		$repository = RepositoryManager::instance()->setup( $repository_name );

		if ( ! $repository ) {
			Log::instance()->write( 'Could not setup repository.', 0, 'error' );

			return false;
		}

		Log::instance()->write( 'Getting snapshot information...' );

		$snapshot = $repository->getDB()->getSnapshot( $id );

		if ( ! $snapshot ) {
			Log::instance()->write( 'Could not get snapshot from database.', 0, 'error' );

			return false;
		}

		if ( empty( $snapshot ) || empty( $snapshot['project'] ) ) {
			Log::instance()->write( 'Missing critical snapshot data.', 0, 'error' );
			return false;
		}

		/**
		 * Backwards compant. Add repository to meta before we started saving it.
		 */
		if ( empty( $snapshot['repository'] ) ) {
			$snapshot['repository'] = $repository_name;
		}

		Log::instance()->write( 'Downloading snapshot files and database (' . Utils\format_bytes( $snapshot['size'] ) . ')...' );

		$snapshot_path = Utils\get_snapshot_directory() . $id . '/';

		$download = $repository->getS3()->downloadSnapshot( $id, $snapshot['project'], $snapshot_path . 'data.sql.gz', $snapshot_path . 'files.tar.gz' );

		if ( ! $download ) {
			Log::instance()->write( 'Failed to download snapshot.', 0, 'error' );

			return false;
		}

		/**
		 * Finally save snapshot meta to meta.json
		 */
		$meta_handle = @fopen( $snapshot_path . 'meta.json', 'x' ); // Create file and fail if it exists.

		if ( ! $meta_handle ) {
			Log::instance()->write( 'Could not create meta.json.', 0, 'error' );

			return false;
		}

		fwrite( $meta_handle, json_encode( $snapshot, JSON_PRETTY_PRINT ) );

		return new self( $id, $repository_name, $snapshot, true );
	}
public static function download ( $ id , $ repository_name ) { if ( Utils \ is_snapshot_cached ( $ id ) ) { Log :: instance ( ) -> write ( 'Snapshot found in cache.' ) ; return self :: get ( $ id ) ; } $ create_dir = Utils \ create_snapshot_directory ( $ id ) ; if ( ! $ create_dir ) { Log :: instance ( ) -> write ( 'Cannot create necessary snapshot directories.' , 0 , 'error' ) ; return false ; } $ repository = RepositoryManager :: instance ( ) -> setup ( $ repository_name ) ; if ( ! $ repository ) { Log :: instance ( ) -> write ( 'Could not setup repository.' , 0 , 'error' ) ; return false ; } Log :: instance ( ) -> write ( 'Getting snapshot information...' ) ; $ snapshot = $ repository -> getDB ( ) -> getSnapshot ( $ id ) ; if ( ! $ snapshot ) { Log :: instance ( ) -> write ( 'Could not get snapshot from database.' , 0 , 'error' ) ; return false ; } if ( empty ( $ snapshot ) || empty ( $ snapshot [ 'project' ] ) ) { Log :: instance ( ) -> write ( 'Missing critical snapshot data.' , 0 , 'error' ) ; return false ; } /**
		 * Backwards compant. Add repository to meta before we started saving it.
		 */ if ( empty ( $ snapshot [ 'repository' ] ) ) { $ snapshot [ 'repository' ] = $ repository_name ; } Log :: instance ( ) -> write ( 'Downloading snapshot files and database (' . Utils \ format_bytes ( $ snapshot [ 'size' ] ) . ')...' ) ; $ snapshot_path = Utils \ get_snapshot_directory ( ) . $ id . '/' ; $ download = $ repository -> getS3 ( ) -> downloadSnapshot ( $ id , $ snapshot [ 'project' ] , $ snapshot_path . 'data.sql.gz' , $ snapshot_path . 'files.tar.gz' ) ; if ( ! $ download ) { Log :: instance ( ) -> write ( 'Failed to download snapshot.' , 0 , 'error' ) ; return false ; } /**
		 * Finally save snapshot meta to meta.json
		 */ $ meta_handle = @ fopen ( $ snapshot_path . 'meta.json' , 'x' ) ; // Create file and fail if it exists. if ( ! $ meta_handle ) { Log :: instance ( ) -> write ( 'Could not create meta.json.' , 0 , 'error' ) ; return false ; } fwrite ( $ meta_handle , json_encode ( $ snapshot , JSON_PRETTY_PRINT ) ) ; return new self ( $ id , $ repository_name , $ snapshot , true ) ; }
Download snapshot.

@param   string $id Snapshot id
@param   string $repository_name Name of repo
@return  bool|Snapshot
Download snapshot .