<?php

/**
 * @package sapphire
 * @subpackage filesystem
 */

/**
 * Class for handling archives.
 * To implement a specific archive system, create a subclass of this abstract class, and amend the implementation of Archive::open().
 * @package sapphire
 * @subpackage filesystem
 */
abstract class Archive extends Object {
	/**
	 * Return an Archive object for the given file.
	 */
	static function open($filename) {
		if(substr($filename, strlen($filename) - strlen('.tar.gz')) == '.tar.gz' ||
			substr($filename, strlen($filename) - strlen('.tar.bz2')) == '.tar.bz2' ||
			substr($filename, strlen($filename) - strlen('.tar')) == '.tar') {
				return new TarballArchive($filename);
			}
	}
	
	function extractTo($destination, $entries = null) {
	}
	
	function listing($path) {
	}
}

?>