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];
							 | 
						||
| 
								 | 
							
								}
							 |