find matchign files
This commit is contained in:
parent
7afe5f7f83
commit
b0b01a5177
|
@ -80,4 +80,25 @@ class ComicPressBackendFilesystem extends ComicPressBackend {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function find_matching_files($patterns) {
|
||||||
|
foreach ($patterns as $pattern) {
|
||||||
|
$dir = dirname($pattern);
|
||||||
|
if (is_dir($dir)) {
|
||||||
|
$pattern = str_replace('*', '.*', basename($pattern));
|
||||||
|
if (($dh = opendir($dir)) !== false) {
|
||||||
|
while (($file = readdir($dh)) !== false) {
|
||||||
|
$target = $dir . '/' . $file;
|
||||||
|
if (is_file($target) || is_link($target)) {
|
||||||
|
if (preg_match('#' . $pattern. '#', $file) > 0) {
|
||||||
|
return $target;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -9,6 +9,9 @@ class ComicPressBackendFilesystemTest extends PHPUnit_Framework_TestCase {
|
||||||
function setUp() {
|
function setUp() {
|
||||||
_reset_wp();
|
_reset_wp();
|
||||||
$this->fs = new ComicPressBackendFilesystem();
|
$this->fs = new ComicPressBackendFilesystem();
|
||||||
|
|
||||||
|
vfsStreamWrapper::register();
|
||||||
|
vfsStreamWrapper::setRoot(new vfsStreamDirectory('root'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function providerTestProcessSearchString() {
|
function providerTestProcessSearchString() {
|
||||||
|
@ -60,4 +63,28 @@ class ComicPressBackendFilesystemTest extends PHPUnit_Framework_TestCase {
|
||||||
|
|
||||||
$this->assertEquals($expected_searches, $fs->process_search_string($posts[$post_id_to_use], 'comic'));
|
$this->assertEquals($expected_searches, $fs->process_search_string($posts[$post_id_to_use], 'comic'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function providerTestFindMatchingFiles() {
|
||||||
|
return array(
|
||||||
|
array(array('/blah'), false),
|
||||||
|
array(array('/comic/2008-01-01.jpg'), false),
|
||||||
|
array(array('/comic/2009-01-01.jpg'), vfsStream::url('root/comic/2009-01-01.jpg')),
|
||||||
|
array(array('/comic/2009-01-01-test.jpg'), vfsStream::url('root/comic/2009-01-01-test.jpg')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestFindMatchingFiles
|
||||||
|
*/
|
||||||
|
function testFindMatchingFiles($filesystem_layout, $expected_match) {
|
||||||
|
foreach ($filesystem_layout as $file) {
|
||||||
|
$parts = pathinfo($file);
|
||||||
|
mkdir(vfsStream::url("root{$parts['dirname']}"), 0666, true);
|
||||||
|
file_put_contents(vfsStream::url("root${file}"), 'test');
|
||||||
|
}
|
||||||
|
|
||||||
|
wp_set_post_categories(1, array(2));
|
||||||
|
|
||||||
|
$this->assertEquals($expected_match, $this->fs->find_matching_files(array(vfsStream::url('root/comic/2009-01-01*.jpg'))));
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue