diff --git a/HandBrakeCluster/Rips/Source.class.php b/HandBrakeCluster/Rips/Source.class.php index b84ecc4..efe7ea4 100644 --- a/HandBrakeCluster/Rips/Source.class.php +++ b/HandBrakeCluster/Rips/Source.class.php @@ -153,6 +153,27 @@ class HandBrakeCluster_Rips_Source { public function addTitle(HandBrakeCluster_Rips_SourceTitle $title) { $this->titles[] = $title; } + + public function longestTitle() { + $longest_title = null; + $maximum_duration = 0; + + if ( ! $this->titles) { + return null; + } + + foreach ($this->titles as $title) { + $duration = $title->durationInSeconds(); + if ($duration > $maximum_duration) { + $longest_title = $title; + $maximum_duration = $duration; + } + } + + return $longest_title; + } + + public function output() { return $this->output; diff --git a/HandBrakeCluster/Rips/SourceTitle.class.php b/HandBrakeCluster/Rips/SourceTitle.class.php index b799eca..c26f7e6 100644 --- a/HandBrakeCluster/Rips/SourceTitle.class.php +++ b/HandBrakeCluster/Rips/SourceTitle.class.php @@ -41,6 +41,11 @@ class HandBrakeCluster_Rips_SourceTitle { return $this->duration; } + public function durationInSeconds() { + $time = explode(":", $this->duration); + return ($time[0] * 3600) + ($time[1] * 60) + $time[2]; + } + public function setDuration($duration) { $this->duration = $duration; } diff --git a/pages/rips/setup-rip.php b/pages/rips/setup-rip.php new file mode 100644 index 0000000..52da477 --- /dev/null +++ b/pages/rips/setup-rip.php @@ -0,0 +1,40 @@ +request(); +$config = $main->config(); + +// Grab the name of this source +$source_id; +if ($req->get('submit')) { + $this->smarty->assign('rips_submitted', true); + $source_id = HandBrakeCluster_Main::issetelse($_POST['id'], HandBrakeCluster_Exception_InvalidParameters); + + $this->smarty->assign('rips', HandBrakeCluster_Main::issetelse($_POST['rips'], HandBrakeCluster_Exception_InvalidParameters)); +} else { + $this->smarty->assign('rips_submitted', false); + $source_id = $req->get('id', HandBrakeCluster_Exception_InvalidParameters); +} + +$source_path = base64_decode(str_replace('-', '/', $source_id)); +$real_source_path = realpath($source_path); + +// Ensure the source is a valid directory, and lies below the configured source_dir +if (!is_dir($source_path)) { + throw new HandBrakeCluster_Exception_InvalidParameters(); +} + +$real_source_dir = realpath($config->get('rips.source_dir')); +if (substr($real_source_path, 0, strlen($real_source_dir)) != $real_source_dir) { + throw new HandBrakeCluster_Exception_InvalidParameters(); +} + +$source = HandBrakeCluster_Rips_Source::load($source_path); + +$this->smarty->assign('source_path_encoded', $source_id); +$this->smarty->assign('source_path', $source_path); +$this->smarty->assign('source', $source); +$this->smarty->assign('titles', $source->titles()); +$this->smarty->assign('longest_title', $source->longestTitle()); + +?> \ No newline at end of file diff --git a/templates/rips/setup-rip.tpl b/templates/rips/setup-rip.tpl new file mode 100644 index 0000000..9e0a93b --- /dev/null +++ b/templates/rips/setup-rip.tpl @@ -0,0 +1,77 @@ +
+ Processing rips now... +
+ +{$rips|var_dump}
+{else}
+
+
+ {literal}
+
+ {/literal}
+{/if}
\ No newline at end of file