summaryrefslogtreecommitdiffstats
path: root/admin/survey/minify/lib/Minify/Controller/Files.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/minify/lib/Minify/Controller/Files.php')
-rw-r--r--admin/survey/minify/lib/Minify/Controller/Files.php71
1 files changed, 71 insertions, 0 deletions
diff --git a/admin/survey/minify/lib/Minify/Controller/Files.php b/admin/survey/minify/lib/Minify/Controller/Files.php
new file mode 100644
index 0000000..a9bb941
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Controller/Files.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Class Minify_Controller_Files
+ * @package Minify
+ */
+
+use Monolog\Logger;
+
+/**
+ * Controller class for minifying a set of files
+ *
+ * E.g. the following would serve the minified Javascript for a site
+ * <code>
+ * $options = [
+ * 'checkAllowDirs' => false, // allow files to be anywhere
+ * ];
+ * $sourceFactory = new Minify_Source_Factory($env, $options, $cache);
+ * $controller = new Minify_Controller_Files($env, $sourceFactory);
+ * $minify->serve($controller, [
+ * 'files' => [
+ * '//js/jquery.js',
+ * '//js/plugins.js',
+ * '/home/username/file.js',
+ * ],
+ * ]);
+ * </code>
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Controller_Files extends Minify_Controller_Base
+{
+
+ /**
+ * Set up file sources
+ *
+ * @param array $options controller and Minify options
+ * @return Minify_ServeConfiguration
+ *
+ * Controller options:
+ *
+ * 'files': (required) array of complete file paths, or a single path
+ */
+ public function createConfiguration(array $options)
+ {
+ // strip controller options
+
+ $files = $options['files'];
+ // if $files is a single object, casting will break it
+ if (is_object($files)) {
+ $files = array($files);
+ } elseif (! is_array($files)) {
+ $files = (array)$files;
+ }
+ unset($options['files']);
+
+ $sources = array();
+ foreach ($files as $file) {
+ try {
+ $sources[] = $this->sourceFactory->makeSource($file);
+ } catch (Minify_Source_FactoryException $e) {
+ $this->logger->error($e->getMessage());
+
+ return new Minify_ServeConfiguration($options);
+ }
+ }
+
+ return new Minify_ServeConfiguration($options, $sources);
+ }
+}
+