Blame view
sources/lib/private/archive.php
2.94 KB
|
03e52840d
|
1 2 3 4 5 6 7 8 9 10 |
<?php
/**
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
abstract class OC_Archive{
/**
|
|
31b7f2792
|
11 |
* open any of the supported archive types |
|
03e52840d
|
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
* @param string path
* @return OC_Archive
*/
public static function open($path) {
$ext=substr($path, strrpos($path, '.'));
switch($ext) {
case '.zip':
return new OC_Archive_ZIP($path);
case '.gz':
case '.bz':
case '.bz2':
if(strpos($path, '.tar.')) {
return new OC_Archive_TAR($path);
}
break;
case '.tgz':
return new OC_Archive_TAR($path);
}
}
abstract function __construct($source);
/**
* add an empty folder to the archive
* @param string path
* @return bool
*/
abstract function addFolder($path);
/**
* add a file to the archive
* @param string path
* @param string source either a local file or string data
* @return bool
*/
abstract function addFile($path, $source='');
/**
* rename a file or folder in the archive
* @param string source
* @param string dest
* @return bool
*/
abstract function rename($source, $dest);
/**
* get the uncompressed size of a file in the archive
* @param string path
* @return int
*/
abstract function filesize($path);
/**
* get the last modified time of a file in the archive
* @param string path
* @return int
*/
abstract function mtime($path);
/**
* get the files in a folder
* @param path
* @return array
*/
abstract function getFolder($path);
/**
|
|
31b7f2792
|
72 |
* get all files in the archive |
|
03e52840d
|
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
* @return array */ abstract function getFiles(); /** * get the content of a file * @param string path * @return string */ abstract function getFile($path); /** * extract a single file from the archive * @param string path * @param string dest * @return bool */ abstract function extractFile($path, $dest); /** * extract the archive * @param string path * @param string dest * @return bool */ abstract function extract($dest); /** * check if a file or folder exists in the archive * @param string path * @return bool */ abstract function fileExists($path); /** * remove a file or folder from the archive * @param string path * @return bool */ abstract function remove($path); /** * get a file handler * @param string path * @param string mode * @return resource */ abstract function getStream($path, $mode); /** |
|
31b7f2792
|
116 |
* add a folder and all its content |
|
03e52840d
|
117 118 119 120 121 |
* @param string $path
* @param string source
* @return bool
*/
function addRecursive($path, $source) {
|
|
31b7f2792
|
122 |
$dh = opendir($source); |
|
03e52840d
|
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
if(is_resource($dh)) {
$this->addFolder($path);
while (($file = readdir($dh)) !== false) {
if($file=='.' or $file=='..') {
continue;
}
if(is_dir($source.'/'.$file)) {
$this->addRecursive($path.'/'.$file, $source.'/'.$file);
}else{
$this->addFile($path.'/'.$file, $source.'/'.$file);
}
}
}
}
}
|