Adds support for multiple directories to Source plugins

Adds the capability for the HandBrake and Bluray source plugins to look
for sources in multiple directories using the new features of the config
class to support string lists.
This commit is contained in:
2010-09-16 23:16:12 +01:00
parent 45b97e2d5d
commit 1e745a37b7
2 changed files with 40 additions and 30 deletions

View File

@@ -13,17 +13,19 @@ class RippingCluster_Source_Plugin_Bluray extends RippingCluster_PluginBase impl
*/ */
public static function enumerate() { public static function enumerate() {
$config = RippingCluster_Main::instance()->config(); $config = RippingCluster_Main::instance()->config();
$directory = $config->get('source.bluray.dir'); $directories = $config->get('source.bluray.dir');
if (!is_dir($directory)) { foreach ($directories as $directory) {
throw new RippingCluster_Exception_InvalidSourceDirectory($directory); if (!is_dir($directory)) {
} throw new RippingCluster_Exception_InvalidSourceDirectory($directory);
}
$sources = array();
$sources = array();
$iterator = new RippingCluster_Utility_BlurayDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory)));
foreach ($iterator as /** @var SplFileInfo */ $source_vts) { $iterator = new RippingCluster_Utility_BlurayDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory)));
$sources[] = self::load($source_vts->getPathname(), false); foreach ($iterator as /** @var SplFileInfo */ $source_vts) {
$sources[] = self::load($source_vts->getPathname(), false);
}
} }
return $sources; return $sources;
@@ -99,11 +101,14 @@ class RippingCluster_Source_Plugin_Bluray extends RippingCluster_PluginBase impl
} }
$real_source_filename = realpath($source_filename); $real_source_filename = realpath($source_filename);
$source_basedir = $config->get('source.bluray.dir'); // Check all of the source directories specified in the config
$real_source_basedir = realpath($source_basedir); $source_directories = $config->get('source.bluray.dir');
foreach ($source_directories as $source_basedir) {
if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) { $real_source_basedir = realpath($source_basedir);
return false;
if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) {
return false;
}
} }
return true; return true;

View File

@@ -23,17 +23,19 @@ class RippingCluster_Source_Plugin_HandBrake extends RippingCluster_PluginBase i
*/ */
public static function enumerate() { public static function enumerate() {
$config = RippingCluster_Main::instance()->config(); $config = RippingCluster_Main::instance()->config();
$directory = $config->get('source.handbrake.dir'); $directories = $config->get('source.handbrake.dir');
if (!is_dir($directory)) { foreach ($directories as $directory) {
throw new RippingCluster_Exception_InvalidSourceDirectory($directory); if (!is_dir($directory)) {
} throw new RippingCluster_Exception_InvalidSourceDirectory($directory);
}
$sources = array();
$sources = array();
$iterator = new RippingCluster_Utility_DvdDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory)));
foreach ($iterator as /** @var SplFileInfo */ $source_vts) { $iterator = new RippingCluster_Utility_DvdDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory)));
$sources[] = self::load($source_vts->getPathname(), false); foreach ($iterator as /** @var SplFileInfo */ $source_vts) {
$sources[] = self::load($source_vts->getPathname(), false);
}
} }
return $sources; return $sources;
@@ -203,11 +205,14 @@ class RippingCluster_Source_Plugin_HandBrake extends RippingCluster_PluginBase i
} }
$real_source_filename = realpath($source_filename); $real_source_filename = realpath($source_filename);
$source_basedir = $config->get('source.handbrake.dir'); // Check all of the source directories specified in the config
$real_source_basedir = realpath($source_basedir); $source_directories = $config->get('source.handbrake.dir');
foreach ($source_directories as $source_basedir) {
if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) { $real_source_basedir = realpath($source_basedir);
return false;
if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) {
return false;
}
} }
return true; return true;