aboutsummaryrefslogtreecommitdiff
path: root/mod/minify/lib/min/utils.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/minify/lib/min/utils.php')
-rw-r--r--mod/minify/lib/min/utils.php90
1 files changed, 90 insertions, 0 deletions
diff --git a/mod/minify/lib/min/utils.php b/mod/minify/lib/min/utils.php
new file mode 100644
index 000000000..c73594152
--- /dev/null
+++ b/mod/minify/lib/min/utils.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * Utility functions for generating group URIs in HTML files
+ *
+ * Before including this file, /min/lib must be in your include_path.
+ *
+ * @package Minify
+ */
+
+require_once 'Minify/Build.php';
+
+
+/**
+ * Get a timestamped URI to a minified resource using the default Minify install
+ *
+ * <code>
+ * <link rel="stylesheet" type="text/css" href="<?php echo Minify_groupUri('css'); ?>" />
+ * <script type="text/javascript" src="<?php echo Minify_groupUri('js'); ?>"></script>
+ * </code>
+ *
+ * If you do not want ampersands as HTML entities, set Minify_Build::$ampersand = "&"
+ * before using this function.
+ *
+ * @param string $group a key from groupsConfig.php
+ * @param boolean $forceAmpersand (default false) Set to true if the RewriteRule
+ * directives in .htaccess are functional. This will remove the "?" from URIs, making them
+ * more cacheable by proxies.
+ * @return string
+ */
+function Minify_groupUri($group, $forceAmpersand = false)
+{
+ $path = $forceAmpersand
+ ? "/g={$group}"
+ : "/?g={$group}";
+ return _Minify_getBuild($group)->uri(
+ '/' . basename(dirname(__FILE__)) . $path
+ ,$forceAmpersand
+ );
+}
+
+
+/**
+ * Get the last modification time of the source js/css files used by Minify to
+ * build the page.
+ *
+ * If you're caching the output of Minify_groupUri(), you'll want to rebuild
+ * the cache if it's older than this timestamp.
+ *
+ * <code>
+ * // simplistic HTML cache system
+ * $file = '/path/to/cache/file';
+ * if (! file_exists($file) || filemtime($file) < Minify_groupsMtime(array('js', 'css'))) {
+ * // (re)build cache
+ * $page = buildPage(); // this calls Minify_groupUri() for js and css
+ * file_put_contents($file, $page);
+ * echo $page;
+ * exit();
+ * }
+ * readfile($file);
+ * </code>
+ *
+ * @param array $groups an array of keys from groupsConfig.php
+ * @return int Unix timestamp of the latest modification
+ */
+function Minify_groupsMtime($groups)
+{
+ $max = 0;
+ foreach ((array)$groups as $group) {
+ $max = max($max, _Minify_getBuild($group)->lastModified);
+ }
+ return $max;
+}
+
+/**
+ * @param string $group a key from groupsConfig.php
+ * @return Minify_Build
+ * @private
+ */
+function _Minify_getBuild($group)
+{
+ static $builds = array();
+ static $gc = false;
+ if (false === $gc) {
+ $gc = (require dirname(__FILE__) . '/groupsConfig.php');
+ }
+ if (! isset($builds[$group])) {
+ $builds[$group] = new Minify_Build($gc[$group]);
+ }
+ return $builds[$group];
+}