summaryrefslogtreecommitdiffstats
path: root/admin/survey/minify/utils.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/minify/utils.php')
-rw-r--r--admin/survey/minify/utils.php78
1 files changed, 78 insertions, 0 deletions
diff --git a/admin/survey/minify/utils.php b/admin/survey/minify/utils.php
new file mode 100644
index 0000000..983cde5
--- /dev/null
+++ b/admin/survey/minify/utils.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Utility functions for generating URIs in HTML files
+ *
+ * @warning These functions execute min/groupsConfig.php, sometimes multiple times.
+ * You must make sure that functions are not redefined, and if your use custom sources,
+ * you must require_once __DIR__ . '/lib/Minify/Source.php' so that
+ * class is available.
+ *
+ * @package Minify
+ */
+
+require __DIR__ . '/bootstrap.php';
+
+/*
+ * Get an HTML-escaped Minify URI for a group or set of files. By default, URIs
+ * will contain timestamps to allow far-future Expires headers.
+ *
+ * <code>
+ * <link rel="stylesheet" type="text/css" href="<?= Minify_getUri('css'); ?>" />
+ * <script src="<?= Minify_getUri('js'); ?>"></script>
+ * <script src="<?= Minify_getUri(array(
+ * '//scripts/file1.js'
+ * ,'//scripts/file2.js'
+ * )); ?>"></script>
+ * </code>
+ *
+ * @param mixed $keyOrFiles a group key or array of file paths/URIs
+ * @param array $opts options:
+ * 'farExpires' : (default true) append a modified timestamp for cache revving
+ * 'debug' : (default false) append debug flag
+ * 'charset' : (default 'UTF-8') for htmlspecialchars
+ * 'minAppUri' : (default '/min') URI of min directory
+ * 'rewriteWorks' : (default true) does mod_rewrite work in min app?
+ * 'groupsConfigFile' : specify if different
+ * @return string
+ */
+function Minify_getUri($keyOrFiles, $opts = array())
+{
+ return Minify_HTML_Helper::getUri($keyOrFiles, $opts);
+}
+
+
+/**
+ * Get the last modification time of several source js/css files. If you're
+ * caching the output of Minify_getUri(), you might want to know if one of the
+ * dependent source files has changed so you can update the HTML.
+ *
+ * Since this makes a bunch of stat() calls, you might not want to check this
+ * on every request.
+ *
+ * @param array $keysAndFiles group keys and/or file paths/URIs.
+ * @return int latest modification time of all given keys/files
+ */
+function Minify_mtime($keysAndFiles, $groupsConfigFile = null)
+{
+ $gc = null;
+ if (! $groupsConfigFile) {
+ $groupsConfigFile = Minify_HTML_Helper::app()->groupsConfigPath;
+ }
+ $sources = array();
+ foreach ($keysAndFiles as $keyOrFile) {
+ if (is_object($keyOrFile)
+ || 0 === strpos($keyOrFile, '/')
+ || 1 === strpos($keyOrFile, ':\\')) {
+ // a file/source obj
+ $sources[] = $keyOrFile;
+ } else {
+ if (! $gc) {
+ $gc = (require $groupsConfigFile);
+ }
+ foreach ($gc[$keyOrFile] as $source) {
+ $sources[] = $source;
+ }
+ }
+ }
+ return Minify_HTML_Helper::getLastModified($sources);
+}