aboutsummaryrefslogtreecommitdiff
path: root/mod/minify/lib/min/lib/Minify/Controller/Groups.php
diff options
context:
space:
mode:
authorewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-02-12 01:07:33 +0000
committerewinslow <ewinslow@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-02-12 01:07:33 +0000
commitfbc1fdd0b7244d2f03164b62eb893223ff930319 (patch)
tree2b1c79d2795ee2d1ecc3b019fe3643bcf52010ad /mod/minify/lib/min/lib/Minify/Controller/Groups.php
parent3a6e0dc6e80434789abe5b98e2748a6fc79bf320 (diff)
downloadelgg-fbc1fdd0b7244d2f03164b62eb893223ff930319.tar.gz
elgg-fbc1fdd0b7244d2f03164b62eb893223ff930319.tar.bz2
Converted most forms to use elgg_view_form (therefore also moved the views to forms/*). Some views are left that _only_ do elgg_view_form, so I wonder if those should even be kept around.
git-svn-id: http://code.elgg.org/elgg/trunk@8127 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'mod/minify/lib/min/lib/Minify/Controller/Groups.php')
-rw-r--r--mod/minify/lib/min/lib/Minify/Controller/Groups.php94
1 files changed, 94 insertions, 0 deletions
diff --git a/mod/minify/lib/min/lib/Minify/Controller/Groups.php b/mod/minify/lib/min/lib/Minify/Controller/Groups.php
new file mode 100644
index 000000000..1ac57703a
--- /dev/null
+++ b/mod/minify/lib/min/lib/Minify/Controller/Groups.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Class Minify_Controller_Groups
+ * @package Minify
+ */
+
+require_once 'Minify/Controller/Base.php';
+
+/**
+ * Controller class for serving predetermined groups of minimized sets, selected
+ * by PATH_INFO
+ *
+ * <code>
+ * Minify::serve('Groups', array(
+ * 'groups' => array(
+ * 'css' => array('//css/type.css', '//css/layout.css')
+ * ,'js' => array('//js/jquery.js', '//js/site.js')
+ * )
+ * ));
+ * </code>
+ *
+ * If the above code were placed in /serve.php, it would enable the URLs
+ * /serve.php/js and /serve.php/css
+ *
+ * As a shortcut, the controller will replace "//" at the beginning
+ * of a filename with $_SERVER['DOCUMENT_ROOT'] . '/'.
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Controller_Groups extends Minify_Controller_Base {
+
+ /**
+ * Set up groups of files as sources
+ *
+ * @param array $options controller and Minify options
+ * @return array Minify options
+ *
+ * Controller options:
+ *
+ * 'groups': (required) array mapping PATH_INFO strings to arrays
+ * of complete file paths. @see Minify_Controller_Groups
+ */
+ public function setupSources($options) {
+ // strip controller options
+ $groups = $options['groups'];
+ unset($options['groups']);
+
+ // mod_fcgid places PATH_INFO in ORIG_PATH_INFO
+ $pi = isset($_SERVER['ORIG_PATH_INFO'])
+ ? substr($_SERVER['ORIG_PATH_INFO'], 1)
+ : (isset($_SERVER['PATH_INFO'])
+ ? substr($_SERVER['PATH_INFO'], 1)
+ : false
+ );
+ if (false === $pi || ! isset($groups[$pi])) {
+ // no PATH_INFO or not a valid group
+ $this->log("Missing PATH_INFO or no group set for \"$pi\"");
+ return $options;
+ }
+ $sources = array();
+
+ $files = $groups[$pi];
+ // if $files is a single object, casting will break it
+ if (is_object($files)) {
+ $files = array($files);
+ } elseif (! is_array($files)) {
+ $files = (array)$files;
+ }
+ foreach ($files as $file) {
+ if ($file instanceof Minify_Source) {
+ $sources[] = $file;
+ continue;
+ }
+ if (0 === strpos($file, '//')) {
+ $file = $_SERVER['DOCUMENT_ROOT'] . substr($file, 1);
+ }
+ $realPath = realpath($file);
+ if (is_file($realPath)) {
+ $sources[] = new Minify_Source(array(
+ 'filepath' => $realPath
+ ));
+ } else {
+ $this->log("The path \"{$file}\" could not be found (or was not a file)");
+ return $options;
+ }
+ }
+ if ($sources) {
+ $this->sources = $sources;
+ }
+ return $options;
+ }
+}
+