From 1e745a37b741e403a1e6d496826ed9440b70d3c2 Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Thu, 16 Sep 2010 23:16:12 +0100 Subject: [PATCH] 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. --- .../Source/Plugin/Bluray.class.php | 35 +++++++++++-------- .../Source/Plugin/HandBrake.class.php | 35 +++++++++++-------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/lib/RippingCluster/Source/Plugin/Bluray.class.php b/lib/RippingCluster/Source/Plugin/Bluray.class.php index 5fa94a6..4ecfc27 100644 --- a/lib/RippingCluster/Source/Plugin/Bluray.class.php +++ b/lib/RippingCluster/Source/Plugin/Bluray.class.php @@ -13,17 +13,19 @@ class RippingCluster_Source_Plugin_Bluray extends RippingCluster_PluginBase impl */ public static function enumerate() { $config = RippingCluster_Main::instance()->config(); - $directory = $config->get('source.bluray.dir'); + $directories = $config->get('source.bluray.dir'); - if (!is_dir($directory)) { - throw new RippingCluster_Exception_InvalidSourceDirectory($directory); - } - - $sources = array(); - - $iterator = new RippingCluster_Utility_BlurayDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory))); - foreach ($iterator as /** @var SplFileInfo */ $source_vts) { - $sources[] = self::load($source_vts->getPathname(), false); + foreach ($directories as $directory) { + if (!is_dir($directory)) { + throw new RippingCluster_Exception_InvalidSourceDirectory($directory); + } + + $sources = array(); + + $iterator = new RippingCluster_Utility_BlurayDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory))); + foreach ($iterator as /** @var SplFileInfo */ $source_vts) { + $sources[] = self::load($source_vts->getPathname(), false); + } } return $sources; @@ -99,11 +101,14 @@ class RippingCluster_Source_Plugin_Bluray extends RippingCluster_PluginBase impl } $real_source_filename = realpath($source_filename); - $source_basedir = $config->get('source.bluray.dir'); - $real_source_basedir = realpath($source_basedir); - - if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) { - return false; + // Check all of the source directories specified in the config + $source_directories = $config->get('source.bluray.dir'); + foreach ($source_directories as $source_basedir) { + $real_source_basedir = realpath($source_basedir); + + if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) { + return false; + } } return true; diff --git a/lib/RippingCluster/Source/Plugin/HandBrake.class.php b/lib/RippingCluster/Source/Plugin/HandBrake.class.php index 3490ed0..d961023 100644 --- a/lib/RippingCluster/Source/Plugin/HandBrake.class.php +++ b/lib/RippingCluster/Source/Plugin/HandBrake.class.php @@ -23,17 +23,19 @@ class RippingCluster_Source_Plugin_HandBrake extends RippingCluster_PluginBase i */ public static function enumerate() { $config = RippingCluster_Main::instance()->config(); - $directory = $config->get('source.handbrake.dir'); + $directories = $config->get('source.handbrake.dir'); - if (!is_dir($directory)) { - throw new RippingCluster_Exception_InvalidSourceDirectory($directory); - } - - $sources = array(); - - $iterator = new RippingCluster_Utility_DvdDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory))); - foreach ($iterator as /** @var SplFileInfo */ $source_vts) { - $sources[] = self::load($source_vts->getPathname(), false); + foreach ($directories as $directory) { + if (!is_dir($directory)) { + throw new RippingCluster_Exception_InvalidSourceDirectory($directory); + } + + $sources = array(); + + $iterator = new RippingCluster_Utility_DvdDirectoryIterator(new RippingCluster_Utility_VisibleFilesIterator(new DirectoryIterator($directory))); + foreach ($iterator as /** @var SplFileInfo */ $source_vts) { + $sources[] = self::load($source_vts->getPathname(), false); + } } return $sources; @@ -203,11 +205,14 @@ class RippingCluster_Source_Plugin_HandBrake extends RippingCluster_PluginBase i } $real_source_filename = realpath($source_filename); - $source_basedir = $config->get('source.handbrake.dir'); - $real_source_basedir = realpath($source_basedir); - - if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) { - return false; + // Check all of the source directories specified in the config + $source_directories = $config->get('source.handbrake.dir'); + foreach ($source_directories as $source_basedir) { + $real_source_basedir = realpath($source_basedir); + + if (substr($real_source_filename, 0, strlen($real_source_basedir)) != $real_source_basedir) { + return false; + } } return true;