forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			91 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?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]; | ||
|  | } |