bring in a bunch of stuff from cp 2.8
This commit is contained in:
parent
19c0b51477
commit
a46e9ad58b
|
@ -6,6 +6,7 @@ class ComicPressBackendFilesystem extends ComicPressBackend {
|
||||||
var $search_string = '';
|
var $search_string = '';
|
||||||
var $id, $files_by_type = array();
|
var $id, $files_by_type = array();
|
||||||
|
|
||||||
|
// TODO Make this more generic (ex: date-Ymd calls _replace_date($post, $type, "Ymd"))
|
||||||
function process_search_string($post, $type) {
|
function process_search_string($post, $type) {
|
||||||
$this->_searches = array($this->search_string);
|
$this->_searches = array($this->search_string);
|
||||||
|
|
||||||
|
@ -83,12 +84,29 @@ class ComicPressBackendFilesystem extends ComicPressBackend {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_regex_dirname($input) {
|
||||||
|
return dirname(ComicPressBackendFilesystem::resolve_regex_path($input));
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_regex_filename($input) {
|
||||||
|
$input = preg_replace('#\\\(?![.])#', '/', $input);
|
||||||
|
$input = preg_replace('#^.*\/([^\/]+)$#', '$1', $input);
|
||||||
|
$input = preg_replace('#(?<![.])\*#', '.*', $input);
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolve_regex_path($input) {
|
||||||
|
$input = str_replace('\.', '.', $input);
|
||||||
|
$input = str_replace('\\', '/', $input);
|
||||||
|
return $input;
|
||||||
|
}
|
||||||
|
|
||||||
function find_matching_files($patterns) {
|
function find_matching_files($patterns) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
foreach ($patterns as $pattern) {
|
foreach ($patterns as $pattern) {
|
||||||
$dir = dirname($pattern);
|
$dir = $this->get_regex_dirname($pattern);
|
||||||
if (is_dir($dir)) {
|
if (is_dir($dir)) {
|
||||||
$pattern = str_replace('*', '.*', basename($pattern));
|
$pattern = $this->get_regex_filename($pattern);
|
||||||
if (($dh = opendir($dir)) !== false) {
|
if (($dh = opendir($dir)) !== false) {
|
||||||
while (($file = readdir($dh)) !== false) {
|
while (($file = readdir($dh)) !== false) {
|
||||||
$target = $dir . '/' . $file;
|
$target = $dir . '/' . $file;
|
||||||
|
|
|
@ -204,4 +204,51 @@ class ComicPressBackendFilesystemTest extends PHPUnit_Framework_TestCase {
|
||||||
|
|
||||||
$this->assertEquals($return, ComicPressBackendFilesystem::generate_from_id($id));
|
$this->assertEquals($return, ComicPressBackendFilesystem::generate_from_id($id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function providerTestResolveRegexPath() {
|
||||||
|
return array(
|
||||||
|
array('test', 'test'),
|
||||||
|
array('te\.st', 'te.st'),
|
||||||
|
array('te\st', 'te/st'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestResolveRegexPath
|
||||||
|
*/
|
||||||
|
function testResolveRegexPath($input, $expected_output) {
|
||||||
|
$this->assertEquals($expected_output, ComicPressBackendFilesystem::resolve_regex_path($input));
|
||||||
|
}
|
||||||
|
|
||||||
|
function providerTestGetRegexDirname() {
|
||||||
|
return array(
|
||||||
|
array('/test/test2', '/test')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestGetRegexDirname
|
||||||
|
*/
|
||||||
|
function testGetRegexDirname($input, $expected_output) {
|
||||||
|
$this->assertEquals($expected_output, ComicPressBackendFilesystem::get_regex_dirname($input));
|
||||||
|
}
|
||||||
|
|
||||||
|
function providerTestGetRegexFilename() {
|
||||||
|
return array(
|
||||||
|
array('/test/test2', 'test2'),
|
||||||
|
array('c:\test\test2', 'test2'),
|
||||||
|
array('/test/test2\.cat', 'test2\.cat'),
|
||||||
|
array('c:\test\test2\.cat', 'test2\.cat'),
|
||||||
|
array('C:/inetpub/a\.windows\.directory/comics/2009-11-24.*\..*', '2009-11-24.*\..*'),
|
||||||
|
array('c:\test\test2\.cat*', 'test2\.cat.*'),
|
||||||
|
array('c:\test\test2\.cat.*', 'test2\.cat.*'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerTestGetRegexFilename
|
||||||
|
*/
|
||||||
|
function testGetRegexFilename($input, $expected_output) {
|
||||||
|
$this->assertEquals($expected_output, ComicPressBackendFilesystem::get_regex_filename($input));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue