Пример #1
0
 /**
  * Remove the files that follow a given predicate from the source
  * If URL is null, the files will be removed from the source directly
  * Else, URL must link to a source from which the files will be removed
  *
  * @param File_Archive_Predicate $pred The files that follow the predicate
  *        (for which $pred->isTrue($source) is true) will be erased
  * @param File_Archive_Reader $source A reader that contains the files to remove
  */
 function removeFromSource(&$pred, &$toConvert, $URL = null)
 {
     $source =& File_Archive::_convertToReader($toConvert);
     if (PEAR::isError($source)) {
         return $source;
     }
     if ($URL === null) {
         $result =& $source;
     } else {
         if (substr($URL, -1) !== '/') {
             $URL .= '/';
         }
         $result = File_Archive::readSource($source, $URL);
     }
     $writer = $result->makeWriterRemoveFiles($pred);
     if (PEAR::isError($writer)) {
         return $writer;
     }
     $writer->close();
 }
Пример #2
0
 function _testRemove($extension)
 {
     $writer = File_Archive::toArchive("test.{$extension}", File_Archive::toVariable($x));
     $writer->newFile('foo.txt');
     $writer->writeData('ABCDEF');
     $writer->newFile('bla_to_remove.txt');
     $writer->writeData('GHIJKL');
     $writer->newFile('bar.txt');
     $writer->writeData('MNOP');
     $writer->close();
     File_Archive::removeFromSource(File_Archive::predEreg('_to_remove'), $source = File_Archive::readSource(File_Archive::readMemory($x, "test.{$extension}"), "test.{$extension}/"));
     $this->assertEquals("foo.txt\nbar.txt", implode("\n", $source->getFileList()));
 }