本文整理汇总了PHP中File_Archive::filter方法的典型用法代码示例。如果您正苦于以下问题:PHP File_Archive::filter方法的具体用法?PHP File_Archive::filter怎么用?PHP File_Archive::filter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类File_Archive
的用法示例。
在下文中一共展示了File_Archive::filter方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: saveChanges
function saveChanges()
{
global $CONFIG;
$_REQUEST->setType('uncompress', 'any');
if (isset($_FILES['uFiles']) && $this->may($USER, EDIT)) {
$u = false;
$ue = false;
$extensions = $CONFIG->Files->filter;
foreach ($_FILES['uFiles']['error'] as $i => $e) {
$parts = explode('.', $_FILES['uFiles']['name'][$i]);
$extension = array_pop($parts);
if ($e == UPLOAD_ERR_NO_FILE) {
continue;
}
$newPath = $this->that->path . '/' . $_FILES['uFiles']['name'][$i];
if ($e == UPLOAD_ERR_OK) {
if ($_REQUEST['uncompress'] && in_array(strtolower(strrchr($_FILES['uFiles']['name'][$i], '.')), array('.tar', '.gz', '.tgz', '.bz2', '.tbz', '.zip', '.ar', '.deb'))) {
$tmpfile = $_FILES['uFiles']['tmp_name'][$i] . $_FILES['uFiles']['name'][$i];
rename($_FILES['uFiles']['tmp_name'][$i], $tmpfile);
$u = true;
require_once "File/Archive.php";
error_reporting(E_ALL);
$curdir = getcwd();
chdir($this->path);
//FIXME: FIXME!
if (@File_Archive::extract(File_Archive::filter(File_Archive::predExtension($extensions), File_Archive::read($tmpfile . '/*')), File_Archive::toFiles()) == null) {
$ue = true;
} else {
Flash::queue(__('Extraction failed'));
}
chdir($curdir);
} elseif (!in_array(strtolower($extension), $extensions)) {
Flash::queue(__('Invalid format:') . ' ' . $_FILES['uFiles']['name'][$i], 'warning');
continue;
} else {
$u = (bool) @move_uploaded_file($_FILES['uFiles']['tmp_name'][$i], $newPath);
}
}
if (!$u) {
Flash::queue(__('Upload of file') . ' "' . $_FILES['uFiles']['name'][$i] . '" ' . __('failed') . ' (' . ($e ? $e : __('Check permissions')) . ')', 'warning');
}
}
if ($u) {
$this->loadStructure(true);
Flash::queue(__('Your file(s) were uploaded'));
return true;
}
if ($ue) {
$this->loadStructure(true);
Flash::queue(__('Your file(s) were uploaded and extracted'));
return true;
}
return false;
}
}
示例2: _readSource
/**
* This function performs exactly as readSource, but with two additional parameters
* ($reachable and $baseDir) that will be set so that $reachable."/".$baseDir == $URL
* and $reachable can be reached (in case of error)
*
* @access private
*/
function _readSource(&$toConvert, $URL, &$reachable, &$baseDir, $symbolic = null, $uncompression = 0, $directoryDepth = -1)
{
$source =& File_Archive::_convertToReader($toConvert);
if (PEAR::isError($source)) {
return $source;
}
if (is_array($URL)) {
$converted = array();
foreach ($URL as $key => $foo) {
$converted[] =& File_Archive::_convertToReader($URL[$key]);
}
return File_Archive::readMulti($converted);
}
//No need to uncompress more than $directoryDepth
//That's not perfect, and some archives will still be uncompressed just
//to be filtered out :(
if ($directoryDepth >= 0) {
$uncompressionLevel = min($uncompression, $directoryDepth);
} else {
$uncompressionLevel = $uncompression;
}
require_once dirname(__FILE__) . '/Archive/Reader.php';
$std = File_Archive_Reader::getStandardURL($URL);
//Modify the symbolic name if necessary
$slashPos = strrpos($std, '/');
if ($symbolic === null) {
if ($slashPos === false) {
$realSymbolic = $std;
} else {
$realSymbolic = substr($std, $slashPos + 1);
}
} else {
$realSymbolic = $symbolic;
}
if ($slashPos !== false) {
$baseFile = substr($std, 0, $slashPos + 1);
$lastFile = substr($std, $slashPos + 1);
} else {
$baseFile = '';
$lastFile = $std;
}
if (strpos($lastFile, '*') !== false || strpos($lastFile, '?') !== false) {
//We have to build a regexp here
$regexp = str_replace(array('\\*', '\\?'), array('[^/]*', '[^/]'), preg_quote($lastFile));
$result = File_Archive::_readSource($source, $baseFile, $reachable, $baseDir, null, 0, -1);
return File_Archive::filter(File_Archive::predEreg('^' . $regexp . '$'), $result);
}
//If the URL can be interpreted as a directory, and we are reading from the file system
if ((empty($URL) || is_dir($URL)) && $source === null) {
require_once dirname(__FILE__) . "/Archive/Reader/Directory.php";
require_once dirname(__FILE__) . "/Archive/Reader/ChangeName.php";
if ($uncompressionLevel != 0) {
require_once dirname(__FILE__) . "/Archive/Reader/Uncompress.php";
$result = new File_Archive_Reader_Uncompress(new File_Archive_Reader_Directory($std, '', $directoryDepth), $uncompressionLevel);
} else {
$result = new File_Archive_Reader_Directory($std, '', $directoryDepth);
}
if ($directoryDepth >= 0) {
require_once dirname(__FILE__) . '/Archive/Reader/Filter.php';
require_once dirname(__FILE__) . '/Archive/Predicate/MaxDepth.php';
$tmp =& File_Archive::filter(new File_Archive_Predicate_MaxDepth($directoryDepth), $result);
unset($result);
$result =& $tmp;
}
if (!empty($realSymbolic)) {
if ($symbolic === null) {
$realSymbolic = '';
}
$tmp =& new File_Archive_Reader_AddBaseName($realSymbolic, $result);
unset($result);
$result =& $tmp;
}
//If the URL can be interpreted as a file, and we are reading from the file system
} else {
if (is_file($URL) && substr($URL, -1) != '/' && $source === null) {
require_once dirname(__FILE__) . "/Archive/Reader/File.php";
$result = new File_Archive_Reader_File($URL, $realSymbolic);
//Else, we will have to build a complex reader
} else {
require_once dirname(__FILE__) . "/Archive/Reader/File.php";
$realPath = $std;
// Try to find a file with a known extension in the path (
// (to manage URLs like archive.tar/directory/file)
$pos = 0;
do {
if ($pos + 1 < strlen($realPath)) {
$pos = strpos($realPath, '/', $pos + 1);
} else {
$pos = false;
}
if ($pos === false) {
$pos = strlen($realPath);
}
//.........这里部分代码省略.........
示例3: testFilter
function testFilter()
{
$reader = File_Archive::filter(File_Archive::predFalse(), File_Archive::read('.'));
$this->assertFalse($reader->next());
$reader->close();
}